从立项到实施——记一位三流码农的挫败经历

世界上一成不变的东西,只有“任何事物都是在不断变化的”这条真理。 —— 斯里兰卡

开端:

周一接到项目经理的邮件,让我去了解一下JHipster——这是我第一次听到这个名字,甚至连Angularjs和Spring data JPA 都没有正规接触过。邮件附带了一个Github上的地址,是客户的项目源码。我clone到本地后发现编译的报错惨不忍睹还无法运行。第二天一早在例行的会议上,项目经理说不会有充分的学习时间,该项目以另一家公司为主导我们只是协助开发,项目已经上线只是还有不少功能页面没有完成。

花了两天时间才使得框架能够在本地跑起来。紧接着客户就发来了任务,囫囵吞枣般的看了一下之前的源码就只能依葫芦画瓢。开发过程很不顺利,在一堆别人的代码里试图找到调用关系是非常困难的事情。这是我第一次感觉到“依赖注入”这项技术是多么的流氓!我甚至搞不清那一堆“乱七八糟”的变量。哪些是框架内置的,哪些是自己声明的。代码跟踪的过程,我基本就是在整个项目中打开文件再关闭文件.……一面是客户的抱怨,另一面是项目经理的催促,确实令人手足无措。有时候好容易在百度上搜索到了一些有价值的信息,点开链接发现页面长时间无法响应。再仔细一瞧,原来是——Stack Overflow,不得不感叹我国防火长城的强大。在这里也顺便吐槽一下——您的一道坚实的防线让中国的IT开发者至少比外面落后了5年。

开发过程伴随着各种“莫名其妙”的错误和进度延迟,客户正在逐渐失去耐心。为此,我除了一遍遍的表示歉意似乎也找不到能改进的地方。无疑,我正在被"bug”和“进度”包围——要么仓促提交一知半解的代码,要不拖延项目开发进度。最终,客户收回了github上的push权限,也基本就意味着对于这个项目终止了与我们公司的合作。

从接到任务到达成最后的“Bad Ending”大约只持续了2周时间。现在想来,短短的两周是外界——包括项目经理——对我人生的一次否定。

反思:

作为开发人员不仅仅是学习新的知识,还应该逐渐建立一套符合自己习惯的快速学习方案。无疑从这一点来说,之前的我是失败的。从原理出发,由里及表的学习是中国式教育的模式。就某些原理性的知识而言,这样的学习模式可能比较稳定。但是它完全不符合今天的互联网发展,我们必须从知识结构出发通过不断的扩充固有框架体系并建立起快速迭代的New Module。哪怕暂时这些Module还游离于现有知识体系之外。当然要想做到这一点并不容易,你必须时刻关注某些领域的最新发展动向并为此做些准备。

解决问题不能认死理,往往一条路走不通除了去费时费力的披荆斩棘以外还可以另寻出路。在到达终点后再逆向梳理思路往往要比正向推理更加容易。技术开发人员应该锻炼自己从一个代码库的角色转变成解决问题的角色。

项目经理作为立项和与客户沟通的主体应该参与到项目的开发中,而不能仅仅作为一个工作布置人员将项目丢给下面的开发人员。特别是在承接一些陌生技术项目的时候,至少也应该安排两位开发成员相互配合。在这个项目中,我一方面要应付客户的进度另一方面要在技术迷雾中拓荒,让我手足无措——甚至连一个商量的同事都没有。

 后记:

截至我写这篇文章的时候,已经基本打算在跟踪完手头的项目后递交辞职申请。我们从错误中成长,为的是避免更多的错误。我记录下这次经历,为的是向大家分享我的感悟。至此寥寥数语,但愿能够为我“失败”的人生画上逗号。

不以遭遇他人的恶意而行驶对他人的恶意。 —— 我

posted @ 2017-05-13 12:18  冷豪  阅读(531)  评论(3编辑  收藏  举报