程序开发的门槛儿

王志勇 发表于 2013年03月21日 09:43

学习程序设计,目标就是要进行实际的程序开发。一旦从事程序设计的工作,就进入一个新的领域了。程序开发的门槛儿其实很高,不是所有的人都能够成为程序员,因为会受到很多方面的苛刻条件的限制,稍微不符合条件,马上就会自动放弃、自动出局,马上逃离。所以,大部分人最终都从事与计算机不相关的工作,也有更少的人是从事程序开发,因为太辛苦挣钱又少。程序开发是很艰苦的事情,是一种类似于军(隔开)人那样的严酷考验,也常常会受到外界的不理解、不尊重甚至侮辱。可以这么说,如果你能承受得了程序开发的艰苦,那么很多种苦都能吃了。其条件大致如下:

1. 工作量十分庞大。比如做成一个面包,做成一件衣服的周期,相对是比较短的。而程序要完成一个功能,里面会有大量的细小的功能,完成一项大的功能的周期是以一个星期、半个月或者更长的时间为单位。100天的工作量,决不可能在一两天内完成。
2. 对注意力集中是一种极大的考验。程序语言本身并不难,而最困难的地方是在于注意力集中。当注意力集中时,开发速度会比平时快;当注意力不集中时,开发速度会以难以想象的速度降下来
有人问编程序时是否可以听音乐?在集中的开发期,是绝对不能一边放着音乐一边编程序的。这是我的体验,并且我本人就是将近20年的音乐发烧友。因为编程序是特殊的高强度的脑力劳动,音乐会造成很大的干扰,会不同程度地降低工作效率。同样地,在写作的时候也不要听音乐,容易造成注意力不集中,或者打乱思路。除此之外,是可以听音乐的。
3. 需要有很强的执行力,顽强的毅力,把想法变为现实。很强的执行力,这一点很多人不容易做到,这也是最难的地方之一。如果不去执行,今天觉得事情太难了不想做,明天不想动弹,后天还是这样,一个星期,一个月,一年都是这样,那么事情是永远都不可能完成的。不要想着明天、后天、过些天再行动,因为一拖就会很长时间,要现在就马上开始行动,此时此刻就是行动的最好时机。你不执行,是没有人能够帮助你完成你的作品的,只有靠你自己。每一个艰难的项目,每一个艰难的功能,都要先硬着头皮开始走出第一步,然后一个项目、一个功能就会开始启动了。
4. 程序有极大的连贯性。如果不休息,一口气把一个大型的程序编写完毕需要100小时的话,如果按照正常的休息时间可能就需要2个月甚至更长的时间才能完成。因为休息之后,工作状态会大减,对前面所做的一些工作也会遗忘。如果每天工作2个小时来编写程序,每天的有效工作时间可能只有十几分钟~1个小时,有效工作时间平均为半个小时/天,因此如果不睡觉连续开发100小时可完成的程序,同样的程序每天工作2个小时就需要200天才能完成,这也是大部分人没有选择成为程序员的原因。
经常熬夜本身对身体和心理都会有极大的损害,所以程序员是决不能熬夜的。人不可能连续工作100小时,当连续不停地编程序超过24或者48小时,很可能就会猝死。
5. 程序开发要比很多种工作艰苦得多,得到的薪水回报却比很多种工作低很多。在一个健康的社会里,工作难度、工作强度和薪水成正比,但在一个不健康的社会里是不成正比的。不是每个战斗在一线的程序员都能拿到潇洒的薪水,而现实社会中特别是家人、亲人常以薪水论英雄,这时你能否做到心理平衡?因此,大多数人很快就会告别程序生涯,你的家人也可能会千方百计地阻止你开发程序。
程序开发和组装电脑哪个难?开发一个程序系统,难度是组装一台电脑的100倍、1000倍以上,但是得到的金钱回报往往比组装电脑低很多。
6. 技术方面。程序语言基础的学习,相对来说并不难。最难的地方,还是在于注意力集中。一旦注意力集中,什么事都好办了。较难的是算法,所谓算法,这里包括大量的统筹,里面会涉及到大量的逻辑关系。这些算法,书里是很难学到的,需要自己开发新的算法。很多程序都是很难读懂的,无论你处于什么样的编程水平,与一流的程序员在读别人的程序的时候,都是差不太多的,都很难读懂,读别人的程序就像读天书一样,到处都像是迷宫,这都需要花费相当多的时间才能读懂一个工程。
不要认为一流的程序员,就能很容易读懂程序。因为有很多程序,思路是不会写在程序当中的,程序是一种成品,它的过程是:“思路→程序”。而“程序←思路”,往往就很难了,这是为什么?因为3+5=8,等号右边的8是结果。如果给出一个数字8,能不能知道它是由3+5得来的?不可能知道的。而且真的确实有这样的程序,当没有开发文档时,任何人都永远无法读懂某段程序为什么要这样写。所以,很多时候就是像这样,看程序也无法知道它的思路的。实际的程序成品,远不像教程里给出的例子一样清晰简单。
开发者如果当时没有记录原始的思路,过上几个月,就会大部分忘记,常常也会看不懂自己的程序,因为思路忘了。
7. 贾金斯的创业故事,是一个有名的笑话。然而,这在程序开发里却不是笑话。对于一个程序工程,关键的功能、模块必须一个都不能少。西瓜和芝麻,一个都不能少,这并不夸张,现实就是如此。有时当做出一个功能之后,会发现与它相关的很多功能都需要跟着修改,或者必须做出新的功能相配套才能实现要实现的那个功能,于是就停下原有的工作转去开发新的配套的功能,然后再转回来开发原来的那个功能,这是常常发生的事情。如果少了一个,可能就会导致整个项目失败。同样地,当发现另一个程序中有bug,有时需要先停下手中的任务修正以前的bug。当发现bug时,是决不允许它再继续存在的。
8. 程序的内核,要远远比表面复杂得多。程序都是从无到有创造出来的,需要多复习开发过的程序,以便更加熟悉程序的内核。
9. 会遇到非常多的难题,要做好勇于独立解决问题的心理准备。
10. 程序开发是一件相当相当累的事情,正因为这个门槛儿,以及上述技术难度的原因,所以能够做别人做不到的事情。

当然,即使程序开发再困难,只要坚持不懈,多用功,是能够完成一件优秀的作品、完成一项复杂和庞大的工程的。别人在打游戏的时候,你在学习知识或者编程序,收获是截然不同的。

附:本文比较重要,是经过很多次修改而写成的,都是我的个人经验,以后想到什么内容还会不定期修改、添加内容,我是从2002年开始从事编程。本文请不要转载,内容以本页为准,如果需要分享,请复制本文的链接即可。

4条评论:
1   梦 2013-06-02 10:58
请教勇哥,您的博客写作后台的编辑器是怎样的,是kindeditor之类的可视化编辑器还是纯文本编辑器?
2   自由勇 2013-06-02 11:58
目前是纯文本编辑器。
3   xsgftgg 2015-06-17 06:01
程序员的心声!
4   麒麟 2017-07-17 12:07
博主 , 你最近不怎么上博客了吗? 加我QQ 微信wellmecome 可以吗 交流下 轻松创业的想法

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写