(未经授权,禁止转载)
软件开发是一种几乎没有门槛的工作。正是这种不设门槛的开放精神,让软件开发领域形成了一种独特的行业文化:你行你就上。开源活动就是很直接的实证,它使得后人以零成本直接继承前人的成就,并基于已有成果继续探索新的发现。开源精神在全球软件行业已经深入人心,成为行业得以持续发展的基石。
尽管入行门槛很低,软件开发作为一种产品设计和生产的工作,对从业者专业性的要求一点也不会少。实际上,与不少其他工作相比,它给从业人员提出的要求甚至更严格:打造精巧的软件能成倍地提高生产力,为社会发展提供动力;设计细致的软件给人们带来沁人心脾的体验,为日常生活增加乐趣。另一方面,软件作为精密的构件,在代码中哪怕写错一个标点也会引发程序罢工。它看不见摸不着、高速运行,它出现问题的时候,不声不响、毫无征兆之间就可能引发巨大影响……软件的这些特征,都对创造软件的开发人员提出更苛刻的要求。
民科要不得,专业很重要
“如果你手里有一把锤子,所有东西看上去都像钉子”。不少开发人员入门不久,刚刚掌握了使用 Visual Studio 拖拽控件,就兴奋地以为自己随手拖一个腾讯 QQ 也不成问题。如今我们都已经知道了有关拖拽控件的笑话,却鲜有人注意到,其实这类笑话从未消来过。就比如,随便打开一个社区就到处能看到成天叫嚣要用 JavaScript 统治世界的人,他们与前述笑柄有何不同?
可以说,他们就是软件开发领域的民科。民科与初学者不同。初学者知道自己任重道远,千里之行、始于足下;而民科表现出异于常人的妄,他们不思进取,却骄傲自满。民科是要不得的。民科的问题在于无法认识到自己的民科性质,遗憾的是,民科们很可能无法读到这篇可能改变他们的文章。
“一叶障目,不知泰山”是这类开发人员的通病。他们喜欢用自己笨拙的逻辑嵌套去重新构造一个个状态机以求解决复杂的问题。最终的结果往往是,错综复杂,局面失控、项目失败。而在不远的隔壁网站,可能早有定义好、完善的问题域描述与实现协议,很可能在一些社区已经有人提供了具体的实现。
专业的人也是从初学者成长起来的。不同的是,他们更谦逊,懂得发现问题并从问题中学习。他们在解决问题之前,总是先分析思考问题的来由和价值,寻求高效、洽当的方法,在最终解决之后,人们评价他们为“专业的”。问题解决的多了之后,分析思考和总结反省也多了,在解决过程中寻找和得到的方法也多了,向他人咨询得到的建议和经验也多了,最终他们成为了技艺精湛的专业人士。专业的人不光有锤子,还有不少其他工具。他们懂得用锤子对付钉子、用刀对付木头,而何时该用锯子对付竹子。
“循规蹈矩”是人们对学院派的刻板印象,人们不屑地斥责他们不懂创新。然而专业的人在打破规则之前,一定懂得何时该严格遵从现有规则,又在何时出手打破规则完成创新。他们了解规则背后的原理,并且不受到这些规则的拘束。
专业的开发人员懂得责任所在,怀有敬畏之心对待自己的工作。他们认真写好每一个函数、仔细设计每一个接口,条理清晰地理解业务,逐字逐句地斟酌给用户的文案,及时友好地与各方干系人沟通,他们是令人信任的合作伙伴。
成为专业的开发人员
专业性体现在日常工作的时刻细节之中。从野生到专业的成长过程是漫长的,当追求专业成为了一种生活态度,也就成为了专业的人士。
大家都听说过关于数学家高斯小时候得出100以内累加和的简单算法的故事,高斯正是在蛮力运算之前做了必要的观察思考才得出更高效的解法。开发人员在面对问题时,也应该首先思考问题的来路去脉,寻找现有最佳实践——那些广泛运用、被证实有帮助的方法,了解那些实践能提供的价值,以及运用时可能带来的挑战,基于它做出必要的调整以适应当前的问题,然后基于自己的实践持续改进这些方法。在获得了宝贵的经验与教训之后,不要忘记将这些总结分享给后来者,至少在别人问到的时候给出真诚地实事求是的建议。
通往专业的成长之路是漫长的,在能够耐得住寂寞的同时,还需要克服一系列难以想象的困难。我们经常讨论学习的过程有守、破、离三个阶段,也就是对应新手、进阶和专家的三个层次。一般来说,大家都对新手很热情,有很多入门教程、快速上手等资料,但对于已经通过“21天快速入门”的人来说,如何成为高阶玩家是一个很值得在线等的急事。在这里需要说明的一个现实情况是,这样的成长过程是等不来的。你要治得了自己的拖延症,在周六的清晨起床开始练习TDD;你要放得下玩了一半的游戏,一篇推送的技术文章都能让你跟着链接学习一整晚;你要管得住自己探索万物起源的好奇之心,耕耘属于自己的专业领域……专业的成就,需要刻意的长期的练习,最好还要有良师益友的帮助。
有一些方法能够让这个成长过程更顺利。“学而不思则罔,思而不学则殆”,孔夫子的思想渊远流长,如今它一样适用于开发人员的成长之路。尝试使用灵活而开放的心态,了解认识各种思想与方法论,积极尝试新出现的事物和概念,这能开拓视野、不断充实自己的工具箱;而批判性思维的习惯让我们冷静思考、客观理性,即使面对最佳实践也不盲从,倾向于更全面地了解并分析论证,消化为自己的经验与能力。
最后,只剩火候。方向对了,火候到了,就错不了。耐心是这个时代最为缺少的因素,而在追求专业的路上,缺了耐心是容易走火入魔的。人们常说的“每次了解得多一点,也就发现不懂的原来更多”确是事实,当某一天你体验到这一点,充分了解自己目前所处的状态,并淡定自信地继续上路,那么你就已经乘上了专业的顺风车。
写在最后
开发人员普遍对在其他行业习以为常的资格证书、学历这些用于评估职业技能水平的方式不以为然。这确实有助于软件技术以及互联网等相关行业的发展。得益于行业准入门槛低,加上近年来国内互联网行业快速成长对开发人员的巨大需求,软件开发人员的队伍在近几年快速庞大了起来。
这并不妨碍专业性仍然是一杆秤,它存在于人们心中。无论是与开发人员自己,与开发人员合作的团队其他人员,还是体验着由他们开发的产品的用户,大家都对开发人员是否专业有着明确的理解与结论。
<br />
(未经授权,禁止转载)