路线图更好的程序员[关闭](Roadmap to a better programmer [clos

2019-08-17 16:46发布

它总是说,你越是程序,更好的你成为。 听起来真与善。 但我想知道是否有成为一个更好的程序员一个成熟的路线。

就像是:

  • 学习一
  • 了解b
  • 学习C>“现在你是好烧引擎”
  • 围绕尝试根据您学习的东西。

答案可能是类似于CS当然路线图,但是我想从谁可能想要的东西明显在球场成功的程序员听到。

谢谢

Answer 1:

这是不正确的,熟能生巧。

这是完美的做法,熟能生巧。

如果你所要做的就是继续一次又一次地重复着同样的不良行为,你只会使其能够更快地创建恶意代码。

通过一切手段保持编码。 但在同一时间是你做的一切的关键。 总有一种偏见的眼光看起来想方设法把事情做得更好。 广泛阅读来获得新的想法。 与其他人交谈关于他们是如何做到的事情。 看着别人的代码,有好有坏。

有没有“一定”的方式来学习任何东西,我知道的。 如果有,任何人都可以掌握这一点。



Answer 2:

所有问题都是修辞和为了刺激思维。

技术部分:

  • 设计模式 - 有可能是一些特定的领域,但通常这些是启动应用程序的部分有用的方法。 你知道MVC或MVP?
  • 基本算法的出发点 - 分而治之,动态规划,递归,创造特殊的数据类型,例如堆,贪婪等。
  • 解决问题能力 - 你如何可以轻松地在跳,找到其中的错误是什么? 你能想出多种解决问题的方法吗?
  • 摘要建模 - 如何好,能想象在你脑海中的东西的代码或类别而言,当有人描述一个问题吗?
  • 高层次与低层次 - 如何当好一个想要的东西高还是低,你明白吗? 这只是我想抛在那里,这些术语如打通周围很多,像一些高级视图或低级语言。

过程部分:

  • 敏捷 - 你知道的Scrum,XP,和其他新的方法来管理软件项目? 如何像YAGNI,DRY和KISS原则是什么? 或者像SOLID原则是什么? 思想像破碎的窗户?
  • 开发环境 - 如何以及你知道你使用IDE? 源控制? 持续集成? 你知道你的机器上的瓶颈在被生产方面?
  • 的xDD - 你知道TDD,BDD,并从范式驱动其他方面的发展呢?
  • 重构 - 你回去过你的旧代码,使其更好或者你倾向于写一次,然后放弃你的代码?

软技能:

  • 情商 - 可以与其他人大多是工作简报很有用。
  • 激情/动机 - 你知道什么得到您的果汁流,只是踢屁股的是生产力方面? 你知不知道你想了很多很多年做什么?


Answer 3:

我的建议的主要部分是:不要害怕改写自己的代码。 看看你写的,甚至在一个月前的东西,你会看出破绽,并要重写的东西。

请确保您了解一些基础知识:集合,平等,哈希码等,这些都是横跨几乎所有的现代语言有用。

根据您所使用的语言 - 用棉绒和度量工具,并在你的代码运行它们。 并非所有的建议都适用,但学习这是重要的,哪些不是很重要。 如FindBugs的,PMD等为Java。

首先完善和继续优化您的工作。 不要把你的工作作为放弃的!



Answer 4:

  1. 了解你的第一个编程语言中的新的编程范式或
  2. 找到可以借鉴的导师
  3. 套用你在现实世界的项目学到了什么
  4. 从你的错误和成功,并转到步骤一学

诀窍是知道什么是先学习:

  • 编程语言 - 这是开始bcause你不能在不知道它们中的至少一个编写软件的地方。 你掌握一种语言后尝试学习另一种。
  • 编程范式 - 即面向对象的,动态/功能编程等尝试学习一个新的每一个新的语言。
  • 设计概念 - SOLID,设计模式以及建筑的概念。
  • 人际交往能力 - 学习交流你的想法。
  • 团队领导 - 学习如何扫别人,如何成为一个团队或技术领先地位。

此后,天空才是极限。



Answer 5:

实践,实践,再实践。

一旦你超过了能够方案基本驼峰,你也可以就如何提高你的代码的想法读有用的书籍(即代码完整,有效的Java或等价物,等等)。



Answer 6:

我想看看与上一个每栋楼大约提高了顺序,在迭代:

  • 编程概念。 了解的东西,如内存管理,指针,堆栈,变量的作用域等等。
  • 语言。 在掌握一些现代语言。
  • 设计概念。 了解设计模式。 练习使用它们。
  • 通讯。 经常被忽视的。 你只能成为你可以用非技术的人进行有效的沟通价值极高的软件工程师。 学会倾听和理解,人们表达需求 ,翻译成一组的要求和技术设计,但后来解释,你明白什么(设计)还给他们,在条款,他们可以理解,因为你的代码之前验证。 这不是一个容易掌握,但它是必不可少的。
  • 建筑概念。 学会理解大型复杂系统的大图。


Answer 7:

花时间去了解各种编码技术,工具和编程智慧。 这个我认为是我的发展至关重要。 这是易刚离开的代码和感觉富有成效。 什么可能是什么,如果你只是有你的腰带一些更多的知识/武器装备爆炸了,明年小部件。

知识/知道怎样才是我们真正的货币。 以上我们知道的越多,我们可以做的东西应该怎么做更好的决定做得更快。

例如,了解以下内容:

•发展实践,软件设计,评估,方法的业务分析数据库设计(有很多在那里伟大的书籍和在线资源)

•读代码 - 开源项目的一个很好的地方。 读取编程博客

•尝试开源项目参与。

•查找在你的城市和/或谁可以指导你编程的用户群体。

是的,正如提到的做法。 不要只是看,做,看你如何将得到改善。 :)



Answer 8:

对于我来说,必须有学习新的东西的一个原因......那就是,除非我心中有一个项目或一些问题,我需要解决,有没有希望。 如果前提条件满足,则我通常会尝试让“你好,世界”的工作,并在此之后,天空的极限。 这么多的发展,这些天只是学习新的API。 偶尔有某种范式转变的吹拂你的头脑,但是这并不像普通民众之所想,恕我直言。



Answer 9:

学习一门编程语言是类似学习口语许多方面。 只有这样,才能取得好它是尽可能多地做到这一点。 在其他作品

练习,练习,阅读,然后多加练习



Answer 10:

首先写代码。 写为多,你可以。 解决困难的问题。 如果你想成为一个真正优秀的程序员,你需要进入的,你在做什么胆量。 花了很多的时间调试看待事物是如何工作的。 如果你想成为一个优秀的程序员谁真正了解正在发生的事情,你需要静下心来,金属和写高度异步代码,了解处理器如何工作以及为什么SSE是如此真棒。 了解线程原语和能写他们,以及描述的是在处理器中实际发生的情况。 我可以继续下去,在这里,但你的想法。

第二个发现有人谁知道比你多了很多,学习。 这种关系将更好地工作,如果你已经深深沉浸在编写大量的代码。

三,花一些时间在大型高品质的开源代码库。 我学到了地震我和Quake II代码吨。 帮助我成为一个更好的程序员。

四是采取硬的问题。 推自己的极限。 构建你认为是不可能的事情。 现在我正在写一个专门的编译器。 我已经学到了很多东西只是这方面的工作在过去的几个月。



Answer 11:

找到一个方案,尔虞我诈你,一个解决问题,或者是一个可以简化您的许多任务。 试着写类似的东西。 您将获得高达速度非常快,有乐趣在同一时间做这件事。



Answer 12:

您可以尝试学习一件事真的很好,然后向外扩展到与你所学,这样就可以向客户提供完整的解决方案的事情相关的编程领域。

与此同时,投入你的时间去探索你的舒适区以外的东西的一部分。



Answer 13:

一,你已经学到了一些东西,尝试学习的东西有点困难。 阅读和实践了很多事情,似乎在第一时间(拉姆达functins,线程,数组操作等)混淆。 这将需要它的时间,但一旦你有足够的练习,什么似乎在第一混乱,将熟悉和容易。



Answer 14:

当然,严格来说,你练习编程越多,你成为解决这些各种各样的问题。 但是,这是你真正想要的是什么?

编程是人类活动不是一个技术一个,在它的心脏。 这很容易提高你的计算机技能,不是很难提高你的人际交往能力。

阅读“软件职业之旅”由霍曼。 其中一个概念霍曼介绍的概念是“认知库”,其中既包括编程技巧和非编程技巧。 展开你的认知库,你的编程技巧将提高太多。

看了很多的非编程的书太,观察你周围的世界。 创建有用的隐喻是成功的程序员必备的技能。 餐厅为什么这样做事情,他们怎么办? 什么取舍是,当他们拿起垃圾每隔几天,而不是每天的垃圾制作部门? 如何缩放影响杂货店如何开展业务? 是一个好奇的人成为一个更优秀的程序员。



Answer 15:

除了这里已经给出了很好的建议的休息,不要害怕阅读有关的编码和良好做法,而且还采取一切与一粒盐,看看什么最适合你。 很多建议是见仁见智。

良好的网站阅读:-thedailywtf.com -joelonsoftware.com -codinghorror.com -blogs.msdn.com/oldnewthing

一个伟大的地方,以获得实践编程竞赛网站。 这些将帮助你学习如何写出好的算法,不一定维护的代码,但他们仍然开始学习的好地方。 我以前用(回来时,我有时间)的一个是: http://uva.onlinejudge.org/

学习一种以上的语言。 一次一个,绝对,但最终你要精通一对夫妇。 这会给你一个更好的角度,我认为,帮助你成为在编程方面的专家,而不是在特定的语言专家。

了解计算机的来龙去脉各级,硬件,操作系统等理想情况下,你应该能够建立自己的系统,在其上安装多个操作系统,并诊断只是可能出现的每一个问题。 我知道很多程序员谁不是“电脑技术人员”和他们不理解所发生的事情在每个级别成为诊断和修复异常错误或性能问题的一个主要障碍。



Answer 16:

除了看“上周代码”,谈谈你的工作的用户交付后 - 自己是一个可能的话。

它不是我的包,但有些我知道最好的程序员都花费了时间支持应用程序。 经验提高了他们的产品,我敢肯定。



Answer 17:

一口气吃你的梦想使用的编程语言(没当回事,它可以帮助)



Answer 18:

有两种学习 - 1.非正式(怎么样,你学会了如何在society-通过与同事和家人交互功能)2.正式(如您的高中训练 - 通过有计划的指令)

如果你想要一个入门级的编程工作,通过本科计算机科学/工程专业正规培训是要走的路。 但是,如果你想成为一个摇滚明星开发者,最好是通过正规培训 - 做让无意的错误,并有资深开发商在你诅咒,学习设计模式,因为应用程序要更新使用它,几乎哭了,因为一个坏的开发者写了一个巨大的混乱的程序缺乏文档和最佳实践,现在你必须尽快做一些更新它; 这些自然的东西。

这是任何人都很难给你所有你需要知道的列表。 它每地域不同(如Web开发人员与到桌面开发人员),并每家公司不同(如微软,销售软件与通用汽车是主要只是用它在自己的汽车。)非正式traiing和正在从事努力学习做你的工作做得更好,并获得晋升是在我看来,你最好的选择。

为了证明我的观点,这里的每个人都有很大的答案,但他们都不同。 问一个摇滚明星开发者,他是如何学到了一些东西或何时,为何; 他们可能不知道 - 事情就发生了。



Answer 19:

  • 实践中,个人和集体

  • 保持开放的心态,不断学习新的东西,不要限制自己什么是熟悉的。 不能仅仅从技术的角度来看,用户界面设计,人际交往能力,...不要怕有什么新

  • 同行评议,谈谈你的代码的人,让人们和你谈谈自己的代码,每个人都有的看问题的独特方式,你将学习同行很大

  • 爱编码。 如果你喜欢你在做什么,投入了大量的时间似乎毫不费力。 每一个编码器所需要的驱动!



Answer 20:

一个小小的除了这些很好的答案。 当我在别人的代码打交道的,平时我拿起新的东西。 如果你有机会与别人等于或大于技巧,注意自己的编程风格可以教你吨的工作。

例如,在C ++和Javascript我不再使用没有括号如果()语句。 其原因是,它太容易误放:

while (true) {
    if (a > b)
        print a
        print b
}

这是一个明显的错别字,但很容易引入,特别是如果你正在编辑现有的代码。 我只是把它叫做防御性编程在我的脑海,但像他这样的小窍门是在让你更好的价值。

因此,找到他们的代码同行或导师,和工作。



Answer 21:

我不知道,如果OP一直在寻找如何成为一个优秀的程序员一般建议,而是更具体的东西。

我知道我恢复这个线程,但我发现它,因为我是想看看是否有人问过这个问题了。

我脑子里想的是,我们可以拿出类似编程概念的“知识地图” ,汗学院使用的地图 。

作为一个程序员,我希望能够想象不同的想法之间的依赖关系和关系,让我能理解,我什么技能水平目前处于; 什么,我需要解决一个具有挑战性的问题之前就知道; 并且能够想象我的进步。



Answer 22:

非常信念,在路线图的存在块道路完善。



文章来源: Roadmap to a better programmer [closed]