软件研发管理中的一些思考

最近事情比较多,好久没有写文章了,考虑不如就写写最近工作和学习中的感悟。

程序员是人而不是机器,这个理念在很多软件管理类的书籍中都有提到,但是自己在管理工作中观察和实践之后,进一步感受到了这句话的道理。由于程序员从事的工作内容复杂度很高,很多时候需要程序员采用非线性的思维模式思考问题。采用传统的管理方式进行管理,会限制程序员的思维能力和创新意识。为程序员提供良好的工作环境,有利于降低人力成本,更重要的是,有利于提高研发的创新能力。当程序员被当作解决问题的人而不是工具的时候,他们可以具有更高的学习能力,可以更多的关注需要解决的问题和自己的成长。

那么,是不是所有的人都适合做程序员呢?程序员具有自己的文化圈和思维方式,当一个人具备了程序员应该具备的思考方式和沟通方式时,他就可以成为一名程序员。但是这个过程的建立,需要花费一定的精力,并不断总结反思。如果一个人本身具备一定的潜质,有利于成为一名程序员,这样的人成长可能会更快。个人实践认为,成为合格的程序要需要具备的能力包括:学习能力,分析和权衡能力,抽象思维,技术交流和沟通能力,迭代思想。

学习能力不言而喻,就是能够自主学习,掌握所需要技术的能力。随着软件开发规模越来越大,软件开发需要更强大的资源整合能力,而各种资源都需要花费一定的学习成本。我们现在很难看到一个大型系统通过一个进程或者一种编程语言就能完美实现的。掌握如此之多的技术知识和能力,需要具备一定的学习能力,知道自己该学什么,怎么学,并能够以较快的速度将其投入使用。这也是程序员成长为技术管理人员应当具备的能力。

分析和权衡能力对于软件工作是必不可少的,我们每天都会面临很多的取舍问题。由于实现一种功能的代码和设计不是唯一的,我们需要从众多的方式方案中进行考量,权衡利弊,作出取舍,在开发前能够发现的问题越多,软件修复成本将会越小,所以我们需要在实际动手开发前做各种的尝试,来排除后期不必要的风险,这需要我们具备一定的分析和权衡能力。

程序员每天都在使用抽象思维,我们会将实际问题和业务转化为代码的组织和表示,抽象的程度和准确度,都会对设计和开发工作带来极大的影响。而对于领导,一个好的抽象能够做出更加通用的代码和架构,而错误的抽象则会导致架构设计复杂度的提升以及开发人员开发工作量的增加。

现在程序规模都很大,单纯依靠一己之力或者一个人,很难开发出像样的系统,技术交流和沟通将是必不可少的。作为程序员,相互之间会有协作,同时程序员之间需要互相学习,掌握彼此的技术,才能够建立更好的沟通。作为架构设计者,需要具备沟通能力,能够以简单易理解的方式,将架构设计的思想和意图传递给程序开发人员,这样才能够保证架构设计被人理解,开发结果符合架构的预期。

程序是复杂的,技术是多样的,没有人可以一次性的将一段代码写完美,也没有人可以将架构一次设计到位。这时候我们需要迭代。当然,需要强调的是,所谓的迭代,不是盲目的行动。每一次迭代的结果,都应当是一个可交付可验证的结果,每一轮大迭代中嵌套着无数次的小迭代,量变才能引起质变。开发中,我们一边编写新代码,一边进行重构,当新代码全部写完时,重构也应当进行到一定的阶段。架构设计与此类似,一边设计,一边调整设计,当一版设计完成时,设计的重构应该也告一段落。当这一轮设计开发结束后,评估结果,为下一轮迭代制定目标。

所有提到的能力,都是可以培养和训练的。最近看到一些文章,争论学历和学校是否影响一个人成为好的程序员。抛开一切的现象,个人认为,学历不会影响一个人成为好的程序员,就和学历和一个人是否具有良好的意识和眼界无关,很多成功的领导,也不是学历很高的人。只能说,学历较高的人,在一些能力方面已经具备了很好的基础,他们在学校的训练,让他们可以少走一些弯路。比如好高校的本科生,可能具备很强的学习能力,分析能力和科学的思维方式。但是对于学历不高和学校不好的人,自己付出更多的努力去锻炼自己具备相应的能力,也可以成为合格的程序员和领导。

这就说到了最近思考的另一个问题,选人,用人和留人。选人,我始终认为应该选择具备成为好的程序员的潜质或能力的人,或者至少是经过一定程度的训练能够具备这些能力的人。不得不说,最近社会上形形色色的培训机构,使得软件开发行业似乎成为最不缺人的行业,但是带来的问题是,为公司选人带来了更多问题和挑战,选人难度变得很大,不是所有人经过培训都能够有良好的发展,所谓师傅引进门,修行靠个人。

当选择合适的人进入公司后,我该如何安排他的工作,如何用好这个人。所谓用好这个人,就是让员工能够快速进步,能够胜任公司的工作。如何安排员工的学习和成长线路,让他成长更快是一个必须考虑的问题。也就是说,我如何营造环境,让他较快地逐步具备上面提到的各种能力,同时获得不断稳步上升的薪资,成为公司的栋梁和骨干。

留人,则是最困难的。员工离职的原因无外乎都是出于利的考虑——工资和成长。对于工资,公司出于各方面考虑,只能尽可能满足员工的要求,所以想留住员工,更多的还是应该考虑成长的问题。我们应该如何让员工感觉到在公司有很多东西可以学习;如何让员工能够随着能力的增长,晋级通道畅通无阻;如何让员工能够从事略高于自己能力的工作,让大家时刻保持工作的新鲜感等等。管理的至高境界是人的管理,不是事也不是项目。

可能最近工作上经历的事情多一些,遇到了不少问题,也有自己的想法,写出来,梳理一下,希望能够对自己和大家有所帮助。

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页