slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
一个人开发一个项目是一种怎样的体验?
17611538698
webmaster@21cto.com

一个人开发一个项目是一种怎样的体验?

资讯 0 4072 2018-11-14 12:03:00

21CTO社区导读:三人行有我师,编程是似一份苦逼的工作,只有志在斯长于斯的人才会全程充满乐趣。


01fca4590b9e0b030c60d7df92953c9c.jpg

我做过好几个单人项目,读书时做过,后来自己开公司,前面一年多都是我一个人,白天忽悠客户,晚上写代码。
 
代码写的很快,基本不用考虑还要给别人看的问题,自己的代码我自己读的很快,一个射频卡驱动加应用层逻辑lib,我可能两三天就撸完了可能,刷一个界面展示下数据一个下午搞定。有一个文件系统比较复杂,我又不会写,开始是这里抄一点那里抄一点,然后做profiling,折腾了三个多月,我以前没写过文件系统所以比较慢。

会不会遇到隐藏很深的bug?不会,这个主要靠隔离功能的本事和随时打log,实在不行大片dump内存,写过内核的应该很清楚一般我们都很少单步的,printk do everything,我只在第一个工作的公司用过单步。如果panic了或者oop,通过backtrace或者内存dump,大概迅速定位到哪个文件,否则就是你的代码可追溯性不好啦。有很少的时候也会把栈踩坏,我基本没有犯过这种错误,这样的情况一般把内存dump出来一个字节一个字节对了,然后脑袋里把operations放一遍想想哪里踩了,或者在不同point dump下内存,一般很快对出来。我从没把一个bug搞几天搞不定的状况,可能因为我的项目复杂度不行,也可能我隔离做得好。

因为可能有好多寄存器我没用,我留空了代码,后来坑自己这tmd是啥,还要回去翻芯片手册。后来我再留空这种就直接把芯片手册页码写上。

我有半夜写代码,就是别人都走了,我一个人在那,一般一包芙蓉王可以撑到8点钟,然后去公司下的酒店洗个澡睡觉。睡到12点再回公司。我是医学院出来的,我知道抽烟不好,但是那些日子不抽烟真的写不下去,因为睡觉太少了,后来我戒了。半夜安静,效率会很高,我半夜时神经系统特别兴奋,可能跟抽烟有关当我遇到问题时,我能把写完把所有operation和内存变化都像放电影一样放一遍,我白天就没有这样的本事。

后来我们公司有好多人了,他们要用我的代码,新人看我的代码,一脸嫌弃。我花了一个多礼拜,把我一年多写的代码变得可以看了。然后我又让新来的重构,他总是重构出bug,因为我也不写单元测试的,大概他不会像我一样在脑袋里回放内存的变化,也可能是我的代码太难重构。然后我就让他回退到以前了,他写的项目就直接调用好了。后来我觉得有十几万行部分代码还是蛮重要的,我就又半夜一边抽芙蓉王一边重构了一遍,抽象出一些普适性好点的框架,那时候我花了好多时间研究qt的source,qt的一些技术思路还是很屌的。我后来那次重构是很成功的,后来公司那个领域的代码基本都是复用那部分代码。我后来有写了几个framework,至少别人没骂我,可能因为我是老大不好意思当面骂。嗯,作出很舒服的抽象其实还是蛮不容易的。

后面真的就是管理别人的代码,review别人的代码,我觉得我review的本事还是不错的,我基本用眼能瞄出新人写的大部分bug,协作的问题还真是,我开始不擅长的东西,我看了很多模式和软件工程的东西,这个真是我的弱项,我以前工作单位用敏捷,可是我是极度嫌弃敏捷的,后来我们慢慢探索出了一条自己的快速交付软件的办法,接口设计还是需要啃几本书的,其实如果我在大厂可能也不会思考这些东西,因为撕逼开会能搞定,有人罩你。因为在这边,也许下面的人有人比我聪明,但是太多时候,我就是天花板,如果我很操蛋,可能要么好人走了,要么就是越来越渣,好在我们没有越来越渣也没有因为技术模式太差出现大规模离职,我觉得大概几个项目对我影响很大,linux,因为读的Linux代码太多了不由自主会受到上面设计策略的影响,说实话linux代码整个设计一般。
 
netbsd,我觉得这个是工程典范。每次新人入职我都会push他去读netbsd的代码,我自己也愿意帮助他们走读几个模块,STL,sgi 的代码刷过一遍,qt ,我在不知道怎么抽象的时候不断去临摩qt咋办的。还有莱昂氏的代码,bsd上的协议栈。这些代码都不是很大,所以很多真可以当文献读。soloris/Illumos可能也很优质,我是看Gregg那本书时知道soloris上其实有很多很有用的工具,比如鼎鼎大名的dtrace。

我常常觉得自己也是一个没有受过正规训练的人,所以特别怕耽误下面的人,所以我们不做项目的时候都在翻来覆去操这几个项目的代码,讨论别人是怎么解偶的,怎么划分文件和模块的,怎么抽象的,把代码当文献是我们这样的草帮保持不落后的办法,那时候我们也会花钱请别人来讲,一般讲的都很操蛋,后来就不请了,因为有时候传说的大佬,大公司的老司机只是环境依附者,离开他们公司的工具和环境,就变得无所适从,也有讲的很好的,我们花了20万请人,大概只有一两万是值得的。
 
 

来源:网络


评论