项目开发中的反常识思考

这学期集中精力做一个网站开发的横向项目,自知没有专业团队的水准,很多地方也不符合业内规范标准的方法,不过在这个过程中不断摸索着,具体的开发方法、处理问题的思路、团队成员的合作、进度的把握等等各方面都有所接触,总是有些体会的。趁着项目暂停的机会,做一些反思总结。

我回忆起日常工作中每一次决策的思路、实施的过程、造成的后果,力图从中挖掘出最核心最有价值的内容——反常识。 反思的关键在于否定,否定了旧有的认知,才能在自己的脑海中建立起新的结构。 每发现一处反常识,我都在这种颠覆中印象深刻。

1

常识:开发中学习新东西时,先掌握了所有知识,再进行开发

反常识:开发中学习新东西时,先动手去做,再回来学习知识

新手入门开发时,常常会有一个误区,先把所有的理论、方法、特点都弄懂,才开始动手做。比如要学习前端,听说是用 HTML,于是百度一下:HTML 是一种超文本标记语言……每一个字都认识,但是不知道在说什么,要想弄明白需要耗费巨额的时间。这就好比学游泳,不需要知道水有什么原理,只需要知道能用它做什么。因此,最好的入门方法,就是完全彻底地模仿最好的。

不要试图掌握所有知识,另一个重要的原因是,新的知识和方法在不断涌现,尤其在互联网发展迅猛的今天,每隔几个月就出现个新的框架,之前在旧有体系中的深挖意义不大。

从这一点来看,只是模仿别人动手去做是不够的,还需要回来继续学习知识。一位船长说他之所以能够通过险滩并不是因为知道所有暗礁的位置,而是知道一条安全的路线罢了。但是在软件开发中没有永远正确的路线,模仿别人的方法可能不是最安全的或者最有效率的,动手做好后要继续学习,找到适应场景的最合适路线。

2

常识:项目规划时,先定需求,再排工期

反常识:项目规划时,先定工期,再调整需求

项目规划,是为了保证项目开发能够按部就班地高效推进,但是真正做过了项目才发现,开发根本不可能按部就班,因为项目总是在变化中。为了追求效率,在进行计划安排时,要先定好工期,再基于工期去优化产品的设计和开发,决定取舍,取舍时自然会保留住核心需求和功能,过滤掉不影响结果的需求。毕竟,互联网时代,时间成本是最大的成本。

具体实施的时候,就要看技术的取舍之道了。对于给定的一个需求,常常只是一个简单的说明或者设计图,其中隐含的一些边界条件并不明确,而边界条件对技术设计的复杂度和开发难度影响极大。所以,开发时应该明白应用场景的边界在哪里,有针对性地选择,才能使实现方案变得简单,也就节省了时间降低了成本。

3

常识:提高开发效率,需要专心致志做手头的事情

反常识:提高开发效率,需要适当“三心二意”打破边界

专心致志认真工作当然没有错,错的是仅仅专心于分配给自己的正在做的任务。在软件开发中,程序员很容易陷进一个坑里原地打转,有时候是在一个无关紧要的地方钻牛角尖,有的时候则是在缺少资源的情况下难以前进,而那些资源可能只需要稍微抬头就能找到。小团队更需要注意,需求变动很频繁,可能在专心钻研的这项任务并不是核心,或者很可能马上会变动。

其实提高开发效率并不是提高个人写代码的速度,而是整个项目平稳推进的速度。打破任务和职责的边界,为了项目和产品整体考虑,才能够在团队中发挥更大的作用。适当的“三心二意”,关注一些队友的进展、不同任务的联系、需求的变更情况……就能更加精准定位真正的问题。


希望对你能有启发。