四件在我步入职业软件开发生涯那天起就该知道的事情

我的软件开发生涯开始于大约15年以前。

但是直到最近5年,我才真正地看到它的提高。

下面这些事情,我希望在进入软件开发领域时我已经知道了。如果我早点知道这些事儿,我将会变得更加成功。

软件开发中没有“正确的方式“

在我开发生涯的早期,我在学习和争论上浪费了大量的时间。我错误地认为,在软件开发的诸多方面都存在一种绝对”正确的方式“。

但是,关于软件开发,几乎每一件我当时认为是正确的事到头来都被证明是错的。

更重要的是,我发现几乎没有任何一件事是非黑即白的。在编写代码和开发软件的过程中,几乎所有的决策都是基于当时特定的情形。

我之前已经谈过为什么信仰一种技术对开发人员有害,但是我现在说的这个话题谈的不止是一种技术(这么狭隘)。

没有通用的最佳实践,这也是真的。甚至是一些highy charged话题。例如,要不要单元测试?敏捷开发和瀑布模型哪个好?这些没有永远正确的答案。

在我的职业生涯中,我在”正道“(理想主义)路线的迷宫里浪费了太多的时间,而不是采用可以帮我走得更远的”务实“(现实主义)路线。

细读书不是最佳的学习方式

我一开始学习编程和技术知识的时候,我花了太多时间细读一些关于特定技术的书。

reading-book_thumb

读书没错,但是选择读什么书和读它的哪一部分非常重要。

比如,我记得我读过一本非常厚的讲VC++的书。(我十分肯定是这本书的更早的一个版本。)不管怎么说,这本书是本内容丰富的好书,但是一页一页地读并不是学习VC++最好的方式。

如果我当时先粗略地看看此书的章节,获得对VC++的一些全局的认识,然后再去搞懂其中最最重要的部分,我能学到并记住更多的东西。

如果我当时坐下来,通过实际地做一些东西来练习基础知识,而不是仅仅读一下或者过一过书上的例子,我现在会更加成功。你没有在真正地学一门技术,除非你用它解决了真正的问题。

深入学习一门特定技术是浪费时间

我不仅在”细读书“上浪费了时间,我在”读错书“上也浪费了时间。

我错误地相信,从里到外学习一门特定的技术能很好地推动我的职业生涯。

我花了太多时间读一些非常专门的技术书,如,ASP.NET或Hibernate,而不是读更多的像《代码大全》《代码整洁之道》,和《敏捷软件开发:原则、模式与实践(C#版)》。(BTW,我推荐你去读所有的这些书,如果你没读过的话。)

尽管了解你所使用的技术非常重要,但是成为那个特定技术的绝对专家并不重要。知道确切的API调用没多大好处,你需要的时候可以轻而易举地查到。

我在太多技术上花了太多时间深入学习,最后这个技术不是死掉了就是我后来放弃不用了。大多数关于这些特定技术的知识最后只代表了浪费掉的时间。

我发现,成为你正在使用的特定的程序语言的专家很重要,因为程序语言方面的知识将影响你很长时间。我仍然百分之百会花时间深入学习C++,C#和Java,但是我可能会花较少的时间去学习C++所有复杂的细节,因为那些细节现在对我帮助不大。

在你的开发生涯中,社区极其重要!

我的生涯早期,我犯了一个错误,就是不怎么去向社区寻求帮助,也不为他人提供帮助。

community_thumb

我一向乐于帮助我的同事,也在不同的工作岗位上也非常善于交际,但活动范围从来没有超出过公司。

我在我的生涯中花了大量的时间,试图在一个特定的公司进行投资,却没能将我的时间投资在我参与的软件开发社区中。

我花了很多时间,做关于技术或者是最佳实践的内部presentation,而这些时间原本可以用来制作可以服务于社区的内容和材料,同时也能给我带来工作上的认可。

我也犯了另一个错误,就是认为自己没什么有价值的东西去贡献。

我和很多刚入行的开发者聊过,有时候我觉得,比起我们这些”老油条“,他们有更多的东西去贡献给社区,因为他们更理解其他初学者蛋疼的问题。

如果我可以重来一遍,我一定会在我的生涯中更早、更多地参与各种会议和用户群。我会更早地开始写博客,并利用我的大部分学习时间去建立项目和资源,去帮助别人而不是只读书。

总是参与一个业余项目

可能我做的最大的,并且对我生涯影响最大的改变将会是完全戒掉电视,无尽的任务和魔兽世界(两个游戏),并把这部分时间花在一个业余项目上。

我过去花了相当一部分时间做一些享受性的,但是对我的生活没有长远利益的事情。

大约3到4年前,我已经基本不看电视了,现在我也很少看电影。电视和大部分电影只是一个对时间的巨大浪费,而这些时间你可以用来干很多有用的事。视频游戏很大程度上也是一样,但至少在视频游戏里,你在积极地做一些事情,而不是被动地吸收一些没有用的信息。

我会一直热爱玩视频游戏,并且我不认为我会停下来,但是,我真心希望我(之前)把一大部分用来打游戏看电视的时间花在一个业余项目上。

惭愧的是,我做的第一个真正的业余项目是在大约三年前,那时我开始创建我的第一个android应用。

当你在为别人工作的时候,花时间为自己工作非常重要,不然你就是在为他人建立王国而忽视自己的王国。

我不仅从最近几年的业余项目中学到了很多,并且我也从中得到了很多利益。事实上,其中一个,即制作Pluralsight课程,是我现在花全部时间在做的。

(本文最初发表在brotherb上)

[英文原文:4 Things I Wish I Would Have Known When I Started My Software Development Career ]
分享这篇文章:

29 Responses to 四件在我步入职业软件开发生涯那天起就该知道的事情

  1. 优优 says:

    对于刚刚从事的人来说,深入学习一门语言足以;随着后面工作的进行,我们需要了解的是解决问题的思路和方法。语言都有API,只要你会了一种,其余的你可以在需要的时候花个一两天了解其开发流程和API基本够了。合格的程序员或者程序媛,应该花更多时间在学习软件工程或者结构架构方面,也包括性能优化等。

  2. 源代码 says:

    没太看明白,是学好软件思想更重于对技术的追求这意思么,而技术的学习是能够真正解决掉问题就好了?然后这一切都源于业务才是最重要的道理吗

    • billbonaparte says:

      你现在不理解,说明你还缺乏理解作者意思的积累。我建议你过两年,你再来一下这篇文章,你就会心领神会了。
      这两年,你必须要认真学习,认真编码,然后每周都要做工作总结。
      两年之后,你就能明白作者的意思。

    • CipherChen says:

      很显然,你的实际编码工作经验不超过一年。

      软件没有“非黑即白”,这点对大部分新人都是一个棒槌,沉重地敲碎自己内心地执拗。

  3. nil says:

    前天刚删了wow

  4. yxk says:

    想请教楼主一个问题,楼主刚入职的时候有没有迷茫过,我入职不到两年,现在感觉很迷茫,完全失去了原有的那份自信,不知道这种情况怎么解

    • brotherb says:

      译者本身也还是个学生,对于职业发展我没有什么发言权。但是你可以看看原作者的其它博文,关于职业规划的,相信能够解答你的疑问。我如果有空,也会去翻译过来。

  5. link20809 says:

    我现在每天都在看别人的代码 并做一些修改,,可是感觉上没有一点开发的味道,程序没有ftp并发功能我改了,感觉不到一点开发的味道.以前觉得搞shell 比搞java 的低人一等,看了你说的精通一门语言就可以了,但是现在的招聘有的岗位要求精通各种语言,不知道语言的学习有什么共同的地方呢?不想做成一个学习的机器.

  6. cc says:

    我从一开始都在做你说的前四件事,最近才刚刚做第五件事,我是个实用主义者。不知道作者现在能挣多少¥,估计应比我挣的多。

  7. Mc.woLF says:

    非常精辟!可惜看的太晚了。
    屌丝程序员一定要仔细体会,不理解也要理解!

  8. 楼上楼 says:

    我是在准备进入IT行业的计算机专业毕业生,对于未来的IT,该如何充实自己,没有方向。各位大神给点实际的建议,要有理有据哦,在这里先谢谢咯。

  9. 李四 says:

    深入学习一门特定技术是浪费时间,这点非常不赞同,因为深入的学习一门特定技术不仅仅只是熟悉它的API而已。行业的专业化程度越高,各人的分工应该就会更细,我认为深入学习一门特定技术会是趋势。

  10. lori_xj says:

    软件开发中没有“正确的方式“,细读书不是最佳的学习方式。个人认为这两点讲的不错,在软件开发的过程中,解决一种问题有很多种的解决思路,不要将自己的思维局限在一个特定的圈子里面,这样就可以找到更优的解决方案。读书方面呢,在读书的过程中,最好将自己的看到的东西应用到实践中,这才是读书的真正目的所在,同时也要做好笔记,以便以后查阅。

  11. 阿程 says:

    我接触java一年多了,感觉用的了解的都是很基础的一部分。做的项目都是网站,用的是jsp、servlet、mvc。。看了前辈的文章,我更充满信心了。

  12. 小老虎 says:

    不错!

  13. Hurican says:

    深有体会!!! 谢谢终结!!

  14. 祁立苹 says:

    看了这篇文章,我自我反省了好多,自己工作接近三年了,技术项目经验多了,但是没有那么多的时间去了解新的技术,方向,人员。自己就像井底之蛙,感觉到很压抑。没有参与社区,写太多自己的技术博客。的确是一种损失。以后自己更多的时间应该用到这些方面对自己和对他人都是有好处的。

  15. 海纳百川 says:

    挺有感触,我也觉得我在职业生的头五年有过迷茫。书看得少,代码写得少,学习并不深入。现在虽然书要读一些,编程语言对我也越来越模糊些,不会抱着一门语言不放,也慢慢的在维护自己的博客,虽不是主要关注技术。越来越多的关注他人的博客与文章,业界资讯,视野也扩大了不少。在技术交流与社区上我想我接下来应该多多参与吧。

  16. 一个从事软件开发十年的码农 says:

    一个从事软件开发十年的码农表示,非常同意作者的观点。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据