一个初级程序员真实的故事
我们正在和客户开会,他提出了一个有关于项目的想法。他想让我们给他提供一个能支持其项目技术要求的系统架构草案。关于这一点,我也明确地告诉他,增值开发需要对架构重新调整。
当我提及找一个合适的架构也是一个需要学习的过程,他一下子打断了我,并说了下面这句话:
难道我还得支付你学习的费用吗?
为了节约时间,我告诉他,我指的是业务领域,我们只有充分理解之后才能提供正确的架构。
你希望你的项目是由一个不熟练的开发团队的吗?
除非你高薪外包,否则大多需要一个软件开发团队为你工作。如果这个项目已经跨越了一年或更多的时间,你会怎么看待这个貌似一直都没有提升水平的团队?
软件开发是公认的知识驱动型产业之一,然而很多人不知道为什么会认为开发人员很容易掌握解决任何给定问题所需要的一切技能。
编程语言在不断地进化。关系型数据库在不断地增加新的功能。新出来的数据库可能大多数人都不曾用过。成功的框架在不断地推出新的版本。新技术(例如响应式编程和微服务)出现的同时,其他一些以前我们不屑一顾的技术则在不断地增加其魅力(例如函数式编程)。
想要掌握所有的技术和方法,不花时间是不可能的。
什么时候应该考虑提升程序员的水平?
当然也有那种对编程充满激情的程序员会将他们的业余时间都用在了看书、阅读技术文章、学习新技术上面,但你不能否认的是,这样的例子真的不多。
大多数程序员会选择在工作过程中学习所有需要使用的知识,而如果你不能给他们投资,那么他们在这个团队中永远也不会成长。
最合适的时间和地点是在工作时学习软件技术。
遗憾的是,并不是每个在这一行的人都赞同我的这个看法。企业主不愿意花资源(时间和金钱)来培养他们的开发人员。
这可能是看待问题的角度不同,因为很多人觉得这种投资是得不到任何直接或间接回报的——纯粹是在浪费资源。但是如果你计划周密,它就很容易变成一种盈利的投资。
以盈利为目的的学习
高品质的软件需要扎实的知识和专业性的判断,但是积累技能需要的并不仅仅是阅读。你得成为一名积极主动的学习者,用最大的限度获取知识。
我曾经是一个被动的学习者,只是阅读书籍和文章,虽然知道个大概,但实际上并没有什么大的进步。
当我提笔写这篇博客的时候,我发现教学相长也是一种学习技能的好方法。
当我开始做一个开源项目时,我终于明白,原来学习只是艰苦工作的一个副作用。
上面这些经历让我深深理解了什么是主动学习。
从商业角度看,我们不难预见,这类投资的收益可能来自:
一个更加熟练的开发团队能在失败风险更低的情况下操作更加复杂的项目。
在掌握了一定的技术之后,可以为大家提供专业的培训和咨询服务。
写书,通过自助出版程序出售。
还有一点就是,专业类的技能总是特别畅销。
投资于开发技能绝对物有所值。很多开发人员都喜欢那种能促进自我成长的工作环境,所以这一招其实也有利于于留住员工。
开始这个学习的旅程并没有人们想象的那么困难,下面我将介绍一些我非常欣赏的有关于主动学习的活动:
准备培训材料
比方说,你想要在你的公司推广特定的核心技术技能,那就可以分配给部分开发人员去研究和准备有关于这个课题的培训材料。
讲习班的效果会比一个简单的演示要好。在准备好培训材料之时,其实你已经对相关知识和培训基础有了一定的积累。然后就可以就此技术开始提供培训或咨询服务了。
公司博客
每一家软件公司都有其积累的经验,但是很少有人能真正和其他人分享。这时候,开个公司的技术博客或能有助于相互之间的交流。高品质的博客可以显示出你的专业知识和专业能力。
经常到扣丁学堂这样的IT在线教育网站去学习交流,如果你真的想要成为IT领域的专家,那么你就应该开始在这种网站上学习了
总而言之,重复是学习之母。
开源项目
如果你想要提高你的设计和编码技巧,那么你就应该踏足开源项目。
框架的作者大多非常地严谨,他们的代码审查可以教会你很多最棒的编程实践。如果你的公司经常需要使用某一种开源技术,那么回过头去好好学习一下是很有必要的。对待框架问题最好的途径就是老老实实地解决掉它。
没有人比它的维护人员更了解这个框架的了。
写文章和卖书
你可以将你的经验都概括在书中。写书也是一种非常有意思的学习过程。只有当你写完的那一刻,你才能说你真正地掌握了这方面的内容。
有需要的话可以它的帮助。
结论
学习可以让你的公司增加竞争优势。产品代表的就是公司,软件产品的质量反映了开发团队的专业程度。
最后,我要告诉你的是,你投资的并不仅仅是个人,也是在投资自己的公司。