王志勇 发表于 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年开始从事编程。本文请不要转载,内容以本页为准,如果需要分享,请复制本文的链接即可。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
创业杂谈(15):互联网项目
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +