一个更好的程序员的路线图

Man*_*rma 21 programming-languages

它总是说你编程越多,你就越好.听起来不错,真实.但我想知道是否有成熟的程序员的成熟途径.

就像是:

  • 学习一个
  • 学习b
  • 学习c>'现在你很好燃烧发动机'
  • 根据你的学习尝试一些东西.

答案可能类似于CS课程路线图,但我希望听到成功的程序员可能想要提供一些值得注意的东西.

谢谢

duf*_*ymo 39

练习是完美的,这是不正确的.

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

如果您所做的只是一次又一次地重复相同的不良做法,那么您只能更快地创建错误的代码.

一定要保持编码.但同时要批评你所做的一切.总是有一个黄疸的眼睛,寻找更好的方法.广泛阅读以获得新的想法.与他人讨论他们如何做事.看看其他人的代码,无论好坏.

没有"确定"的方法来学习我所知道的任何东西.如果有,任何人都可以掌握这一点.

  • +1为完美练习位.人们通过不试图了解他们正在做的事情来养成坏习惯是很常见的......在任何情况下,不仅仅是编程当然(并不是因为他们想要完成工作而出错了)工作8小时后回家,但这不是最有价值的方式. (2认同)

JB *_*ing 28

所有问题都是修辞性的,旨在激发思想.

技术部分:

  • 设计模式 - 可能有一些特定于域但通常这些是启动应用程序部分的有用方法.你知道MVC还是MVP?
  • 基本算法起点 - 划分和征服,动态编程,递归,创建特殊数据类型,如堆,贪婪等.
  • 解决问题的能力 - 你能轻松地进入并找到错误的位置吗?你能想到这个问题的多种解决方案吗?
  • 抽象建模 - 当有人描述问题时,您能够在代码或类中对事物进行描述吗?
  • 高水平与低水平 - 当你想要高或低的东西时,你有多了解?这只是我要抛弃的东西,因为这些术语经历了很多,如高级视图的某种东西或低级语言.

工艺部件:

  • 敏捷 - 你知道Scrum,XP和其他管理软件项目的新方法吗?像YAGNI,DRY和KISS这样的原则怎么样?或像SOLID这样的原则?像破窗户这样的想法?
  • 开发人员环境 - 您对所使用的IDE的了解程度如何?源控制?持续集成?您是否知道机器上的瓶颈是否具有生产效率?
  • xDD - 你知道TDD,BDD和其他一些范式的发展吗?
  • 重构 - 您是否重新使用旧代码并使其更好,或者您是否倾向于编写一次然后放弃代码?

软技能:

  • 情绪智力 - 主要用于演示和与他人合作.
  • 激情/动机 - 你知道什么让你的果汁流动,只是在生产效率方面踢得好吗?你知道多年来你想做什么吗?


For*_*ner 12

我的主要建议是:不要害怕重写自己的代码.看一下你一个月前写的东西,你会看到缺陷,想要改写一些东西.

确保您了解一些基本原则:集合,相等,哈希码等.这些在几乎所有现代语言中都很有用.

根据您使用的语言 - 使用lint和metric工具并在代码上运行它们.并非所有他们的建议都适用,但学习哪些是重要的,哪些不重要.例如,Java的FindBugs,PMD等.

最重要的是改进和不断完善你的工作.不要把你的工作当作放弃用品!


Dro*_*per 5

  1. 学习您的第一种编程语言新的编程范例或者
  2. 找一个你可以学习的导师
  3. 应用您在现实世界项目中学到的知识
  4. 从错误和成功中吸取教训并转到第一步

诀窍是先知道要学什么:

  • 编程语言 - 这是一个开始的地方因为你不能在不知道其中之一的情况下编写软件.在掌握了一种语言后,尝试学习另一种语言.
  • 编程范例 - 即面向对象,动态/函数编程等.尝试用每种新语言学习一种新的语言.
  • 设计概念 - SOLID,设计模式以及架构概念.
  • 人际交往技巧 - 学会传达您的想法.
  • 团队领导 - 学习如何扫除他人以及如何成为团队或技术领导者.

在那之后天空是极限.

  • 没有@opc - 滥用SO排名系统的人是邪恶的. (4认同)

Eri*_* J. 5

我会按照这个顺序大致改进,在前一个建筑物的每个建筑物的迭代中:

  • 编程概念。了解内存管理、指针、堆栈、变量范围等内容。
  • 语言。努力掌握几种现代语言。
  • 设计理念。了解设计模式。练习使用它们。
  • 沟通。经常被忽视。只有能够与非技术人员进行有效沟通,您才能成为一名高价值的软件工程师。学会倾听和理解人们表达的需求,将其转化为一组需求和技术设计,然后用他们可以理解的方式向他们解释你理解(和设计)的内容,以便在你编码之前进行验证。这不是一个容易掌握的,但它是必不可少的。
  • 建筑概念。学习了解大型复杂系统的全局。


Car*_*rum 2

对我来说,必须有一个学习新东西的理由……也就是说,除非我有一个项目或需要解决一些问题,否则就没有希望。如果满足这个先决条件,那么我通常会尝试让“Hello, world”工作,然后就没有极限了。现在的大部分开发工作都只是学习新的 API。偶尔会有某种范式转变让你大吃一惊,但这并不像人们想象的那么普遍,恕我直言。