写了100万行代码的程序员是什么样的程序员
今天在社群上闲逛,突然发现一个十分有趣的帖子,《写了100W行的代码是啥感觉?》
看完之后就头皮一阵发麻,让我写一万行的代码?!are you kidding me?(黑人问号脸)我估计写到20万的时候就会突然有个疑问—-“咦?我的头发呢?”
A同学:我写两千行代码功能都得琢磨个两三天,一百万行真的是好多啊,最多了五年写了也就 20-30万行代码左右,还是有任务在身的情况被逼着写的,让我写一百万行代码,恐怕这辈子得死在电脑前了…
B同学:我是觉得如果说你一个工作写了一百万行代码,那你在公司的地位应该算资深员工了。如果你一个项目写了一百万行,那你肯定是参与了一个比较大的项目了。
如果你一个类写了一百万行,请问你用的是什么编辑器?如果你一个方法写了一百万行代码的话,请问你有没有被同事打死?
C同学:据说要从初学者成长为程序员,那个得需要10万行代码的积累才可以呢。不过话说回来这样说也很对,毕竟入门阶段嘛,确实需要多打代码才能积累经验。
不过修炼一段时间之后再注重代码的量那就不对了这时候肯定是注重数学还有算法思维,按这样算的话,假如20万是修炼门槛真积累到了一百万行代码肯定代码质量越来越高了,估计是某个领域的小专家也说不定。
至于真敲了一百万行低质量代码,听哥一句话,还是转行吧。程序员不适合你这种锲而不舍的精神。
D同学:切,一群渣渣。给你们看看一张网图就知道我连续熬夜写几千行代码是什么状态了。我感觉我快要窒息了,如果时间可以倒流,我希望我不做程序员!!!
E同学:这简直就是一个送命题啊,哪有什么人能打一百万的代码,从业五六年的程序员,如果按正常工作量的话一天也就一百多行,这五六年估计也就五六万行吧。
如果是外包公司代码量估计翻倍了,那就按五十万行来算。但是谁会那么拼命去奋斗在一线一天一千行的去工作啊。写五六十万行肯定都转行创业了,还继续下去不猝死估计也脱一层皮了。
其实,代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握。谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
那么,写出100万行代码到底需要多少时间,我们来算一下:
假设最好的情况,一天100行高质量代码,一年36500,100/3.65=27年多。即便从20岁开始编码,要到50岁左右方可完成。
但实际上关于平均代码量的问题,即便把所有工作日都算上,大概也就是20-30行的样子;如果仅讨论集中的开发期,高峰也不会超过200行。
所以说,一百万代码就像找女朋友一样不靠谱。
总结一下:
关于代码的量,从初学者成长为程序员,需要代码的积累,而以后数学功底和编程思维的深化更加重要。
一味的追求量并没有任何实际意义,通常,越核心的部分代码量越小,越容易写大量代码的,大概是没什么技术含量的 UI、业务逻辑。而一些部分,用脚本或DSL实现可以更精简。写代码和考试一样,做题最多的不一定是成绩最好的。
此外,要想做高质量的代码,建议先打好技术基础,比如掌握好开发语言,熟悉开发平台、掌握基础的数据结构与算法、了解基础的设计原则等。建议采用代码标准,比如Google等大厂已经制定好了各种标准。想好了再写,不建议边做边想。
我们常常很难一次把代码写得让自己满意、无可挑剔,所以重构对于代码质量的重要性不言而喻,推荐阅读《重构》这本业内经典书籍。
很多问题归根结底都是技术债务,就代码质量而言,如果你还对高质量代码有追求,建议你在负责一个小模块时,除了把它做好之外,也要顺便将与之纠缠在一起的技术债务还掉,在一个团队里任何一个人都不可能独善其身
写出高质量的代码,代码审查也必不可少。事实上,很多代码上的问题,都可以通过一些工具来找到,比如Android开发中有Lint, Find bugs, PMD等优秀静态检查工具可用,通过改进这些工具找出的问题,就能对语法的细节,规范,编程的技巧有更多直观了解。
建议最好与持续集成(CI),代码审查环境配套使用,每次提交的代码都能自动验证是否通过了工具的代码检查,通过才允许提交。
当你需要修改大量代码时,单元测试的优点就显现出来,你只尽管放心修改,只需要保证单元测试用例通过即可,无需瞻前顾后。在写完代码后,进行充分自测,需要至少跑一遍基本的场景,一些简单的异常流,不要总想着让测试帮你找问题。