一个程序员的一生

转载 2006年06月21日 19:14:00
作者:佚名

我在程序员的时候,我一开始追逐这个API怎么用,数据库SQL怎么写更优化,Dcom技术的细节,然后我发现我写出来的产品为了符合客户需求必须要大量修改,但是我的代码却粘在了一起,
第一个感觉就是一个函数太长,一看就头痛,而且一个函数干了好多事。这些事本来可以一段一段的,每段写上注释,然后有意义命名,自己管理错误和内存,然后把这些函数连在一起,
然后我作了这些:

1、小函数;
2、写上注释;
3、有意义命名;
4、自己管理错误和内存;
5、流程函数;

最后我发现我这些函数可以组合成各种各样的流程,我的程序终于好修改了,我很高兴。但是我又发现,我的界面和我的流程混在了一起,另一个程序也想使用我的函数,但是我的函数中有对我的特定界面关联的代码,我不能连界面一起都给他,因为他有他的界面,但作的事我已经实现了,于是我把功能函数和界面控制分开了

我就作了这些,我的代码很容易理解,即使新员工,只要他看完业务手册和数据结构,他就明白我代码为什么这么写。而且我的函数由于都是自己负责输入参数和输出参数的校验,有明确和统一的报错信息,所以很容易找到错误进行BUG修复。由于我的程序都是小函数组成的,都有明确报错,所以错误很容易找到,经过测试组的专业测试后,我的代码很稳定,即使出错,也扩散不大,都是小bug,对系统整体没有大影响

虽然我在前进的过程中也经历过困惑,一心钻在OOP和设计模式中。但是有可能是功力不够,不得其解。看着Delphi的源码,应用了很多的OOP和模式,并且他的类库多年发展也没有多大的改变,所以深信OO和模式的威力,而对自己的能力很灰心。但是代码还得继续写,还想进一步提高,于是才摸索出现在的一套做法。既实用又简单应用,每个人都能办到。

我认为我的代码方法已经可以满足现在的产品制造,并且在软件性能调整上也积累了一些珍贵的经验。我发现性能最容易提高也效果最明显的就是用SQL profilter,优化SQL。优化代码,因为涉及到业务,很不好着手。优化数据库结构,由于代码都是构建在特定数据表之上,所以这是最难改的地方,但是我高兴了没多久,我又遇到问题了。因为我的程序即使再好改,但是客户的需求真是千奇百怪,我每天在接听用户的电话,并且修改用户千奇百怪的问题。我很烦。于是我作了实施员。我想真正看看客户到底怎么回事。于是我理解了很多。我明白了很多的事情不是技术和软件所能解决的,而是现实环境的弊病。但是这个弊病还不是一个工程就能解决的,这是一个复杂的网。所以这些问题我就说服用户不要用软件来处理,因为软件是死的,而人的做法是灵活的。而且我发现用户虽然提了很多需求,但是有的需求他一个月用不了一次,但是修改起来却不容易。有的需求修改完,在实际应用中却发现不可行,那个需求只是客户想解决过去的问题而想的一个办法根本没有经过实际的校验。有的需求修改来修改去都是表面问题,在实际应用中才发现重点问题没有提需求所以上线又搁下了,我作了总结:

1、软件擅长大数据量计算和查询,还有数据联网共享,如果需求不能发挥软件特点,就不让软件实现。这样我少修改了一些;
2、有的需求都是表面需求,修改了也用处不大,反而耽误了重点需求的提出和修改,所以告诉用户只修改核心功能。但是用户提了很多需求,不修改完不上线。后来发现,由于他们没有深刻理解我们系统的整体思想,所以没有上线实际用,根本不知道新改的功能是否好用。用户只是脱离了整体,单独思考想怎么就怎么,没上线根本他不知道后果,怎么说也不行,就得让他看见教训他才反悔,但是已经修改了。往往出现这样的情况。最后得出一个结论:一次只提三个需求,并且用书面提出,免的说了不算算了不说。核心功能的需求修改可以满足80%的日常使用就上线。这样我少修改了很多;
3、并且我在实际做工程中,积累了大量的经验,写成FAQ,各种成功案例,让用户在没有提需求之前先看看自己到底有多少老软件实在不能解决而才买新软件帮助的事。新软件就是解决你过去解决不了的事。如果你没有解决不了的事,提什么需求;

我的产品终于可以很快完成上线,所以可以大规模推广市场了,但是我们的产品制造又出问题了。因为客户越来越多,客户的需求越来越多。我们需要开发更多的系统,但是我们的时间有限,我们的人手有限,而且我们的人手大多是新手。怎么办。我们遇到了灾难。我们的代码质量因人而异。我们的版本管理混乱。我们的文档没有人编写,大家都被分配到用户处去上线。怎么准备数据字典,怎么切换系统,怎么记录客户需求,怎么管理系统,怎么修改代码,我们没有任何记录。现场不能离开程序员一步,一离开用户出事了就不知怎么办,没有任何可查的资料。于是我又做了项目管理,我们缺少很多规范。事有千万,先从紧处来。写文档费时间,就开会给大家讲做事的经验。实施和代码修改需要什么必要规范就制定什么规范。在这期间最容易犯的错就是中央集权,什么事都必须自己做主。下属不管大事小事都请示你。我被搞的什么都干不了,都成了救火队员。我的团队陷入了混乱之中,因为我烦乱之中作了很多饮鸩止渴的决定。我于是又犯了一个错误,我说你们能决定的事尽量自己决定,不要问我,我权利下放。结果是:各自作各自的事,互相不通知。有的事没人管,有的事多人修改,各有一套。

我终于明白了,我作了以下总结:
1、项目经理是找到得力的人,指导他们做事的方向。如果下属不知如何作时,及时提供给下属做事方法;
2、制定规范,其实也就是做事方法;
3、制定计划,分配人力去作。检查结果;
4、有紧急事务立刻做出果断解决,继续前进;

我的团队终于平静了下来,但是大家都很疲惫。大家干的很累,但是由于实施和修改消耗了大量的钱,我们没有赚钱,大家什么都没有得到。团队很灰心,也很失望。我下了计划,我自己都很灰心,大家认为再努力也不会再有结果,所以拖拖拉拉,进度和成本已成不可再提的事情。人,缺少了精气神,就什么都没有了。我们就是缺少了这些。我就开始重新建立团队的精神。我发现有人为了跳槽开始学习新的技术,而这种技术是公司现有产品不需要的,但是他们却在上班时间作。我先从此下手。我讲了技术的方向,让他们认清他们现在所学将会很快淘汰。我又讲了现在市场的实况,让他们认清外面公司也不好过。我还讲了我们所从事的行业多有潜力,我们公司将有新的举措。人心又开始一点一点收回了。

但是我们仍然需要完成那些未收尾的工作,仍然需要去奔赴新的客户市场。虽然员工很疲惫,虽然我们刚从飘摇中过来,但是我们不能止步,因为我们为盈利而存在,我们别无选择。我能够将代码写的很好,性能很高,产品制造很有计划和成本控制,团队很有战斗力。但是我发现了一个问题,我们的产品市场不再扩大了。市场份额大规模开拓已很艰难,因为新产品的新鲜感已经过去了。我们在动荡的日子作的项目给公司带来了阴影,公司一直没有大赚钱,投资方很生气。我明白了。公司毕竟是为利润而存在的。公司不是为产品制造而存在,不是为了解决别人的问题而存在。赚钱是第一位。不赚钱即使你在媒体上作的很风光也一文不值。有人靠手赚钱,有人靠嘴赚钱,有人靠脑子赚钱,有人靠身体赚钱,不管黑猫白猫,只要抓住老鼠就是好猫。成在营销,败在管理。我开始关注资本运作,联盟伙伴建设,市场营销,客户关系营运。

我知道,生活才刚刚开始。

一个屌丝程序猿的人生(二)

LZ发现大家普遍觉得这是个小说,但这真不是一个小说。   没错,这个系列文章是以小说的写作风格去叙述的,但这里面的事几乎都是真事,只不过被LZ部分夸大和部分虚构而已。而且在LZ的观念里,小说就是...
  • zuoxiaolong8810
  • zuoxiaolong8810
  • 2016年05月06日 10:13
  • 7665

每个程序员的都应该了解的字符编码

作者:科言君 链接:https://www.zhihu.com/question/20152853/answer/95576659 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 在开发过程...
  • zxh2075
  • zxh2075
  • 2016年11月08日 18:01
  • 723

程序员生存定律

http://blog.csdn.net/leezy_2000/article/details/29407747#comments 程序员生存定律这书是陆续发的,所以做个目录让想从头读的方便些:...
  • polar9527
  • polar9527
  • 2014年09月04日 09:07
  • 8920

程序员一生必读的书籍

程序员一生必读的书籍   软件业的特点是变化。若要提高软件开发的技能,就必须跟上技术发展的步伐。埋首醉心于项目开发与实战,固然能够锤炼自己的开发技巧,却难免受限于经验与学识。...
  • u011354909
  • u011354909
  • 2015年08月05日 10:53
  • 1407

从高考到程序员,一生无悔的选择,码农的成长之路

高考毕业了,学弟学妹们哈皮了。但是我身为程序员还在为追梦而努力着。会想高考,仿佛就是一场梦,一场我无法都无法忘记的梦。高中三年的时光,对于我来说是痛苦的,我现在极其后悔高中三年的生活,很多的东西都被沉...
  • wenfeng627
  • wenfeng627
  • 2017年06月09日 17:14
  • 465

俄罗斯程序员的编程人生

程序员的一生时间90%是用在编程上,而剩余的10%是活在世界上     俄罗斯程序员实现了全自动化的生活,写了一堆脚本,会给老婆发加班短信、会在宿醉不醒时给自己请假、会自动根据邮件恢复客...
  • syh_486_007
  • syh_486_007
  • 2016年02月27日 20:08
  • 1803

一个java程序员的真实经历

半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业。回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作...
  • king_liujian2010
  • king_liujian2010
  • 2017年07月20日 08:50
  • 3133

计算机之父阿兰·图灵传奇的一生

阿兰•图灵(1912.6.23—1954.6.7),英国数学家、逻辑学家,被称为计算机科学之父、人工智能之父,是计算机逻辑的奠基者,提出了“图灵机”和“图灵测试”等重要概念。为纪念他在计算机领域的卓越...
  • turingbooks
  • turingbooks
  • 2016年06月23日 14:07
  • 5399

[深入理解计算机系统]Hello World的一生

一个Hello.c程序如表1.1所示。 Hello.c #include int main() {          printf(“Hello World\n”);        ...
  • bearthur1234
  • bearthur1234
  • 2014年04月09日 19:56
  • 1529

人生就是一个完整的项目

人生的七个不要 在朋友的QQ签名里看到,深有同感 人生的七个不要: 1)不要等到需要了,才积累人脉 2)不要等到有时间了,才去读书 3)不要等到身无分文,才想起储蓄 4)不要等到痛苦了...
  • huasuan26
  • huasuan26
  • 2014年05月05日 16:55
  • 1047
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个程序员的一生
举报原因:
原因补充:

(最多只允许输入30个字)