它总是说你编程越多,你就越好。听起来不错,真实。 但我想知道是否有一条成熟的程序员可以找到路径。
类似的东西:
答案可能类似于CS课程路线图,但我想听听成功的程序员,他们可能想要提供一些值得关注的东西。
由于
答案 0 :(得分:38)
练习完美无缺。
完美的完美练习。
如果您所做的只是一次又一次地重复相同的不良做法,那么您只能更快地创建错误的代码。
一定要保持编码。但同时要批评你所做的一切。总是有一个黄疸的眼睛,寻找更好的方法。广泛阅读以获得新的想法。与他人讨论他们如何做事。看看其他人的代码,无论好坏。
没有“确定”的方式来学习我所知道的任何事情。如果有,任何人都可以掌握这一点。
答案 1 :(得分:27)
所有问题都是修辞性的,旨在激发思想。
技术部分:
流程部分:
软技能:
答案 2 :(得分:12)
我的主要建议是:不要害怕重写自己的代码。看一下你一个月前写的东西,你会看到缺陷,并想重写一些东西。
确保您了解一些基本原则:集合,相等,哈希码等。这些在几乎所有现代语言中都很有用。
根据您使用的语言 - 使用lint和metric工具并在代码上运行它们。并非所有他们的建议都适用,但学习哪些是重要的,哪些不重要。例如,Java的FindBugs,PMD等。
最重要的是改进并不断完善你的工作。不要把你的工作视为放弃用品!
答案 3 :(得分:5)
诀窍是先知道要学什么:
之后天空就是极限。
答案 4 :(得分:3)
练习,练习,练习。
一旦你完成了能够编程的基本能力,你还可以阅读有用的书籍(即代码完整,有效的Java或等价物等),以获得有关如何改进代码的想法。
答案 5 :(得分:3)
我会按照这个顺序粗略地改进,在前一个建筑物的每个建筑物的迭代中:
答案 6 :(得分:3)
花点时间了解各种编码技巧,工具和编程智慧。我发现这对我的发展至关重要。只需编写代码就可以轻松实现高效工作。如果你只是拥有更多的知识/武器来敲打下一个小部件,那该怎么办?
知识/知道我们的真实货币是怎样的。我们知道的越多,我们就能更好地决定应该如何做某事并更快地做到这一点。
例如,了解:
•开发实践,软件设计,评估,方法商业分析数据库设计(有很多好书和在线资源)
•阅读代码 - 开源项目是一个很好的地方。读 编程博客
•尝试参与开源 项目
•查找编程用户组 你的城镇和/或可以指导你的人。
是的,如上所述。不要只是阅读,做,看看你将如何改进。 :)
答案 7 :(得分:2)
我不确定OP是否正在寻找关于如何成为一名优秀程序员的一般建议,而是更具体的一些建议。
我知道我正在复兴这个帖子,但我发现它是因为我试图看看是否有人问过这个问题。
我的想法是,我们能否提出类似于the map that Khan Academy uses的编程概念的“知识图”。
作为程序员,我希望能够可视化不同想法之间的依赖关系和关系,这样我才能理解我目前的技能水平;在解决一个具有挑战性的主题之前我需要知道什么;并能够想象我的进步。
答案 8 :(得分:2)
对我来说,必须有理由去学习新东西......也就是说,除非我有一个项目或者我需要解决一些问题,否则就没有希望了。如果满足这个先决条件,那么我通常会尝试让“Hello,world”工作,之后天空就是极限。如今,开发的大部分内容都只是学习新的API。有时会出现某种模式转变,这种转变会让你大吃一惊,但这并不像人们想象的那样普遍,恕我直言。
答案 9 :(得分:2)
这些好答案的一小部分补充。当我处理别人的代码时,通常我会选择新的东西。如果你有机会与其他技能相同或更高的人一起工作,注意他们的编程风格可以教你很多。
例如,在C ++& Javascript我不再使用没有大括号的if()语句。原因是它很容易被错误地放入:
while (true) {
if (a > b)
print a
print b
}
这是一个明显的错字,但很容易介绍,特别是如果您正在编辑现有代码。我只是把它称为防御性编程,但是这样的小技巧对于让你变得更好是有价值的。
所以,找一个同伴或导师,然后处理他们的代码。
答案 10 :(得分:2)
单独和集体练习
保持开放的心态,不断学习新事物,不要局限于熟悉的事物。不仅仅是从技术角度,ui设计,人员技能,...不要害怕什么是新的
同行评审,与人们讨论您的代码,让人们与您讨论他们的代码,每个人都有一种独特的方式来查看问题,您将从同行那里学到很多东西
爱编码。如果你喜欢你正在做的事情,那么放入很多时间似乎毫不费力。每个程序员都需要驱动器!
答案 11 :(得分:2)
有两种学习方式 - 1.非正式(就像你学习如何在社会中发挥作用 - 通过与同龄人和家人的互动) 2.正式(如高中培训 - 通过计划指导)
如果您想要一个入门级的编程工作,那么通过本科计算机科学/工程学位进行正式培训是可行的方法。但是,如果你想成为一名摇滚明星开发者,最好通过非正式培训 - 做出无意识的错误,并让高级开发人员诅咒你,学习一种设计模式,因为你正在更新的应用程序使用它,几乎因为一个坏而哭开发人员写了一个庞大的杂乱程序,缺乏文档和最佳实践,现在你必须尽快做几次更新;这些性质的东西。
任何人都很难给你一份你需要知道的清单。它因地区而异(例如,网络开发人员与桌面开发人员不同),并且每个公司都有所不同(例如,销售软件的微软与通常在汽车中使用它的通用汽车公司不同。)非正式的交易和参与尝试学习在我看来,更好地完成工作并获得晋升是你最好的选择。
为了证明我的观点,这里的每个人都有很好的答案,但他们都有所不同。问一个摇滚明星开发者他是如何学习某些东西的,或者何时,为什他们可能不会知道事情刚刚发生。
答案 12 :(得分:2)
答案 13 :(得分:2)
除了查看“上周代码”之外,请在交付后与您的工作人员交谈 - 如果可能的话,请自己做一个。
它不是我的包,但我认识的一些最好的程序员花时间支持应用程序。我确信这种体验改善了他们的产品。
答案 14 :(得分:2)
除了这里已经给出的其他好建议之外,不要害怕阅读有关编码和良好做法的内容,而且还要把所有内容都花在盐上,看看什么最适合你。很多建议都是意见。
阅读的好网站: -thedailywtf.com -joelonsoftware.com -codinghorror.com -blogs.msdn.com/oldnewthing
获得练习的好地方是编程竞赛网站。这些将帮助您学习如何编写好的算法,不一定是可维护的代码,但它们仍然是开始学习的好地方。 我曾经使用的那个(当我有时间时回来)是: http://uva.onlinejudge.org/
学习多种语言。肯定是一次一个,但最终你应该能说一两个。这将为您提供更好的视角,帮助您成为编程专家,而不是成为某种语言的专家。
了解各个级别,硬件,操作系统等计算机的细节。理想情况下,您应该能够构建自己的系统,在其上安装多个操作系统,并诊断可能出现的每个问题。我知道很多程序员不是“计算机技术人员”而他们未能理解每个级别的情况都会成为诊断和修复异常错误或性能问题的主要障碍。
答案 15 :(得分:2)
当然,严格地说,你练习编程越多,你就越能解决这些问题。但那是你真正想要的吗?
编程是一项人类活动,而不是技术活动。很容易提高你的计算机技能,而不是很难提高你的人际交往能力。
阅读Hohmann的“软件专业人士之旅”。 Hohmann描述的概念之一是“认知库”,其中包括编程技能和非编程技能。扩展您的认知库,您的编程技能也会提高。
阅读大量非编程书籍,并观察周围的世界。创造有用的隐喻是成功程序员的基本技能。为什么餐馆会做他们做的事情?垃圾部门每隔几天而不是每天拿垃圾时会做出哪些权衡?缩放如何影响杂货店的业务?成为一个好奇的人才能成为更好的程序员。
答案 16 :(得分:2)
你学到了一些东西,试着更努力地学习一些东西。阅读并练习很多关于第一次看起来令人困惑的事情(lambda functins,线程,数组操作等)。它需要花费时间,但是一旦你练习了足够多的东西,一开始看起来很混乱,会很熟悉和容易。
答案 17 :(得分:2)
您可以尝试学习一件事,然后扩展到与您学到的东西相关的编程领域,这样您就可以为客户提供完整的解决方案。
与此同时,将您的部分时间用于探索舒适区之外的事物。
答案 18 :(得分:2)
找一个引起你兴趣的程序,一个解决问题的程序,或者一个可以简化你的许多任务的程序。尝试写类似的东西。你会很快加快速度,同时享受乐趣。
答案 19 :(得分:2)
首先写代码。尽可能多地写。解决难题。如果你想成为一名优秀的程序员,你需要深入了解你正在做的事情。在调试器中花费大量时间查看工作原理。如果你想成为一个真正理解正在发生的事情的优秀程序员,你需要深入了解金属并编写高度异步代码,了解处理器的工作原理以及SSE为何如此出色。理解线程原语并能够编写它们以及描述处理器中实际发生的事情。我可以继续前进,但你明白了。
第二,找到比你更了解并学习的人。如果您已经深深沉浸在编写大量代码中,这种关系将会更好。
第三,花一些时间在一个大型高质量的开源代码库中。我从Quake I和Quake II代码中学到了很多东西。帮助我成为一个更好的程序员。
第四,抓住难题。推动你的极限。建立你认为不可能的东西。现在我正在编写一个专门的编译器。在过去的几个月里,我学到了很多东西。答案 20 :(得分:2)
学习编程语言在很多方面类似于学习口语。获得好处的唯一方法是尽可能多地做到这一点。在其他作品
练习,练习,阅读,然后练习更多
答案 21 :(得分:1)
对路线图存在的信念阻碍了完美之路。