【观点】程序员应知——循序渐进

导读:作者侯伯薇CSDN博客中写了一篇《程序员应知——循序渐进》,在他看来,想成为一名优秀的程序员要脚踏实地的,一步一个脚印,逐步提高,切忌不可一蹴而就。

以下是文章内容:

作为程序员,我想每个人都对于提高和进步非常渴望,也期望自己有朝一日能够从菜鸟变成大师级的人物,能够做出很棒的系统,能够得到他人的尊敬和赞赏,当然还可以得到不菲的收入。

然而,想要达到那个层次,不可能一蹴而就,必须要踏踏实实,一步一个脚印,逐步提高。这在每个行业或者说每个人的成长过程中都是一样的,所以我们必须要把握每一个提高的机会,从一点一滴做起。古语云:不积跬步,无以至千里,道理也是一样的。

前几天一位医学专业的朋友谈到了医学上的微创新,他说,如果看医学上一两年的发展,似乎没有什么特别大的进步和创新,但是,这并不意味着医学上没有进步,当我们回头看十年前,再与当前的情况作比较的话,就会发现已经有了很大的创新,而这些创新并非是一下子就出来的,而是经过十年来一点一点的微小的创新积累出来的,其实也就是一个量变引起质变的过程。

再说一个程序员会非常熟悉的例子,大家一定都玩过游戏,比方说《暗黑破坏神》《魔兽世界》等等需要打怪升级的游戏,里面的设定并不会让玩家一下子从菜鸟成为超级高手,那样游戏的趣味性就大大下降了,玩家必须通过不断的积累,累计经验值,然后在一定的时候升级,在到达一定的级别的时候才能够学会某种技能。其实在这里面,每一次小的升级都可以对应行业中的一次微创新,而学到指定级别下的技能,则可以对应一次变革性的创新。

类似的例子举不胜举,只要稍微注意,就能够发现。

然而,作为程序员,想要成为高级程序员,想要获得架构师、系统分析师、DBA等等诱人的称号,有时候却会比较急躁,在自己的能力还没有达到的时候,就匆匆上马,接受自己的能力范围之外的工作,就为了那个“名”,结果却往往会得不偿失,一方面有拔苗助长的嫌疑,另一方面对于项目也是一种损害,做出了不好的架构,系统分析不到位而导致客户不满意,诸如此类的情况,在我们身边相信大家都见过吧。

所以,想要真正做好项目,做好程序员,我们还是需要循序渐进,然而到底应该怎么做呢?我的建议,仅供参考。

对于刚刚踏入软件行业的同学来说,当然就是多多编写代码,在参与的各个项目中学习并且积累经验。在这个阶段我们会感觉进步非常快,很快就感觉可以做很多具体的工作了,个人也会非常有成就感。但是,此时千万不可被胜利冲昏了头脑,不能觉得自己已经再也无法从项目中、从团队的成员那里学到东西了,觉得项目离开自己就做不下去了。相反,这个时候应该继续保持低调,以空杯子的心态努力学习更多的知识。

做了三年左右的程序员之后,我想大家都会有一个飞跃,积累出来的经验得到总结,也有了自己的思想,这个时候,很可能项目中所能够学到的东西已经无法满足需要了,所以就要找寻其他积累经验的方式。当然跳槽、换项目是一种方式,而另一种方式就是多多从各种渠道——包括网站、书籍等——学习知识,了解行业的动态,另外还要多多与其他人交流,那样会产生很多想法,从而更好地引起个人的思考。

到了七八年或者十年左右,可能会迎来另一次飞跃,做过的项目很多,积累的经验很多,思考的成果也很多,真正形成了自己的风格和思想,这个时候仍然不能放弃学习和交流,而另一方面,思考会变得更加重要,并且也是要确定自己发展方向的时候了。到底是做项目经理,还是架构师,还是系统分析师,或者DBA等等,在对自己有了比较清醒的认识之后,就可以确定自己的目标了,然后就要为之做各个方面的积累,准备迎接下一次质变。

上面的内容仅仅是我的建议,时间的长短和具体的做法会因人而异,在以后的我也无法给出建议,毕竟我也还在等待下一次升级。我想大家所要了解到的就是不能放弃学习和提高,而要不断进步,那样经过一段时间之后,一定会有变化的。

其实我们在工作的过程中,循序渐进不仅仅体现在个人的成长上,对于代码的修改也一样,特别是对于遗留代码,想要完善的时候,也需要使用循序渐进的方式。

之前曾经看过对于系统是要重构还是重写的讨论,更多人倾向于重构,毕竟那是一种循序渐进的方式,不断地对代码进行修改,质量一步一步提高,形成一定的积累之后,就会发现代码的质量会发生很大的改变。而重构本身,也提倡小步前进,道理是相同的。

如果进行的是重写,则进行的是一种革命式的修改,然而,一切重头开始,不可避免会因为没有积累,而导致所要耗费的人力物力财力都非常大。

总之,作为程序员,应该了解到这个很重要的原则——循序渐进,也希望能够听到大家的想法。

原文链接:程序员应知——循序渐进

时间: 2024-09-19 03:31:35

【观点】程序员应知——循序渐进的相关文章

新入行程序员应知的十个秘密

初出茅庐的你带着仍残留墨香的毕业证书踏上工作岗位,马上就被书上没写的规则和各种繁杂的日常事务来了个下马威.这样的故事实在是司空见惯,编程工作也不例外. 没有几个学生能100%为自己的第一份真正的工作做好准备.如果你不想成为其中之一,请学学以下这10项无需手把手指导就能学会的基本技能: 1.版本控制系统(VCS) VCS也许是计算机课程最大的疏漏.这些课程光记得教如何写代码,但却往往忘记教学生如何去管理代码.每一个程序员都应该懂得利用Git或Subversion有效地创建repository(仓库

程序员应知——关注细节

曾经有一句话,叫做"细节决定成败",充分说明了细节对于成功的作用.如果我们注意一下,就会发现很多因为注重细节而获得成功的案例. 产品的细节 苹果的系列产品我们都已经非常熟悉了,各种各样i打头的产品,对于细节已经给予了非常大的关注.尤其体现明显的就是在对用户使用的友好度和便利性方面的细节.iPad.iPhone和iTouch等产品都是大大的屏幕,而在正面就只有一个按钮,用户不必考虑到底需要按什么按钮.而系列产品的做工更是让人赞不绝口,这也是另外一个细节. 另外对于国内的电子书产品,bam

程序员应具备的素质

程序|程序员|素质|程序员 程序员应具备的素质[转帖]程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献. 中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难 形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不 如.这些问题不是在于中国程序员的智

Python 程序员必知必会的开发者工具

Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作.同样的理念也适用于工具开发者的工作,即便他们开发出的工具并没有出现在最终的程序中.本文将介绍Python程序员必知必会的开发者工具. 对于开发者来说,最实用的帮助莫过于帮助他们编写代码文档了.pydoc模块可以根据源代码中的docstrings为任何可导入模块生成格式良好的文档.Python包含了两个测试框架来自动测试代码以及验证代码的正确性:1)doctest模块,该模块可

SQL Server 利用锁提示优化Row_number()-程序员需知

原文:SQL Server 利用锁提示优化Row_number()-程序员需知 网站中一些老页面仍采用Row_number类似的开窗函数进行分页处理,此时如果遭遇挖坟帖的情形可能就需要漫长的等待且消耗巨大.这里给大家介绍根据Row_number()特性采用特定锁Hint提升查询速度.   直接上菜   脚本环境可在SQL Server优化技巧之SQL Server中的"MapReduce"找到   如下查询在分页中比较常见 set statistics time on select *

php程序员应具备的7种能力

 php程序员应具备的7种能力:        一个优秀php程序员应具备什么样的能力,才能更好的完成工作,才会有更好的发展方向呢?下面7种能力希望对您有所帮助.        一,php能力        1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的.变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦.        2,熟悉阶段,经常查函数,手册估计也看过一,二遍了,常用的函数基本上您都了解了.后期维护给您带来了不少痛苦

程序员必知的LinuxShell命令

程序员必知的LinuxShell命令 grep (Globle Regular Expression Print全局正则表达式) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 -c:只输出匹配行的计数. -I:不区分大 小写(只适用于单字符). -h:查询多文件时不显示文件名. -l:查询多文件时只输出包含匹配字符的文件名. -n:显示匹配行及 行号. -s:不显示不存在或无匹配文本的错误信息. -v:显示不包含匹配文本的所有行. pattern正则表达式主要

SQL Server 隐式转换引发的躺枪死锁-程序员需知

原文:SQL Server 隐式转换引发的躺枪死锁-程序员需知 在SQL Server的应用开发过程(尤其是二次开发)中可能由于开发人员对表的结构不够了解,造成开发过程中使用了不合理的方式造成数据库引擎未按预定执行,以致影响业务.这是非常值得注意的.这次为大家介绍由于隐式数据类型转换而造成的死锁及相应解决方案. 现实中有些程序员/数据库开发者会根据数据库的处理机制实现一些应用,如抢座应用,可能会对事务中的查询加一些列的Hint以细化粒度,实现应用的同时使得影响最低,但也有可能因为一些小细节的欠缺

Java 程序员应会的 Linux 命令

Java 程序员应会的 Linux 命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服务器上都是Linux系统.所以,要和服务器机器交互,就要通过shell命令. 本文并不会对所有命令进行详细讲解,只给出常见用法和解释.具体用法可以使用--help查看帮助或者直接通过google搜索学习. 1.查找文件 find / -name filename.txt 根据名称查找/目录下的f