1.1 从另一个角度看“提高软件工程生产力”
另一角度,来看“提高软件工程生产力”,这是关于软件工程生产力的,其中一部分是1.1 。
所谓的另一个角度,是指,从社会学的理论里面,找到,提高软件工程生产力的,理论基础。
当若把软件工程视作软件之生产进程时,软件工程师为这个生产进程里从事劳作的一类人为,知识乃是此生产行程中之被劳动所针对的对象,我们由此便可发觉指出,这般景象正式遵循沿用马克思之生产力理论项下所需具备的三个关键组成要素 。
生产力的三要素分别是劳动力,以及劳动资料,还有也是劳动对象,当中劳动资料和劳动对象共同构成生产资料,如此这般。
我们根据这三要素来思考如何提高软件工程生产力。
生产力三要素分别指的是什么呢?
人力:一般而言,意即从事工作的群体,往往是于一家公司、各个行业甚至某个社会当中开展工作之物,大多是指靠体力劳作的人员,不过通常不涵盖雇佣他人者(老板)以及管理层人员。
劳动资料,也被称作劳动手段,它是在劳动的进程当中,所运用的那些物质资料,或者是物质条件。
劳动对象,是指劳动自身所作用的那个客体,像耕作时所针对的土地,纺织时所用到的棉花等 。
在软件工程领域,生产力三要素又分别指的是什么呢?
软件开发工程师,测试工程师,通常被认为是劳动力。然而,其不在工作状态时,不能称其为劳动力,只能谓其为劳动者,。
被称作劳动资料的有办公场所、座椅、生产工具等,严格意义来讲,本书主要讨论的就是生产工具,而笔者是从硬件、软件的角度对生产工具做了分类。
关于硬件方面,在进行开发期间所运用的电脑,具备机械键盘,拥有灵敏鼠标,还有涉及到网络传输速度等情况 。
软件包含,IDE,像IDEA这种,构建工具,像Maven这般,还有协作工具,比如Jira,以及部署工具,类似(此处原句缺损,无法准确补充完整)等等 。
劳动对象,并非像那种组装汽车时的情况,在进行软件开发这个行为的时候,其劳动对象是那种没办法看见、也无法触摸到的知识,对此笔者把软件工程里的知识划分成业务知识以及技术知识 。
当对生产力三要素达到理解状态之后,怎样依据如此理论去提升软件工程生产力呢,我们展开分别的讨论,。
1.1.1 从劳动力要素考虑提高软件工程生产力
倘若能够招聘到那种比普通程序员生产力高出十倍之多的程序员,并且对之加以妥善利用,如此便能够提升生产力。要是此程序员的生产力相较于普通程序员高出十倍,那么一般而言这就意味着其工资也是高出十倍 。
此外,不管招募到何种程序员,管理者所关注的要点在于,怎样助力劳动者达成最优工作状态,进而产出更多劳动力。若不在工作状态,那就无法称作劳动力,仅能叫做劳动者。或许,那些时常随意打断程序员的管理者得反思一番了。
此外,对注重培养员工的公司来讲,不但能够提升员工生产力,而且能够提升公司的整体生产力 。
1.1.2 从劳动对象要素考虑提高软件工程生产力
要是把软件生产流程视作无形知识转化为有形软件的进程,那么产品经理得把想法(这是一种知识)转化为原型,美工以及交互设计师领会产品经理的想法以后,把自身想法转化为设计稿,随后再把自身理解与想法(这又是一种知识)传递给前端开发人员。紧接着,前端开发人员与后端开发人员又交流接口设计(这依旧是一种知识)……能够看出,要提升软件工程生产力,知识的流通效率起着极其关键的作用。知识的流通效率,是指把知识,从小一个人的大脑传至另外一个(群)人的大脑,所具备的准确性,以及速度 。
所以说,沟通能力在软件工程领域十分重要。
我们能够把一些尚需重复开展的知识,具体化为一个个工具或者模块。这毫无疑问算得上是提升生产力的方式。这也就等同于告知我们,于管理软件生产进程之际,要主动去辨别那些需要重复操作的知识。
倘若进行更为深入的思索,你便会发觉,针对于工厂之中的生产流水线而言,要是工人辞去工作,并不会将什么带走。然而知识是存于人的大脑之内的,人一旦辞职,也就意味着把公司的劳动对象给带走了。这对于团队以及公司来讲,是一项巨大的损失。去想一想公司借助发放工资所生产出的劳动成果,就这样被轻易地给带走了。
以劳动力要素而言,要尽可能留住那些带有“关键”知识的人,那该怎么解决这个问题呢?就劳动对象要素来讲,需尽可能提高同一知识在团队中的携带人数,那又该怎么解决这个问题呢?
那该如何去做呢?敏捷实践里的站会,是一种手段,结对编程,也是一种手段,看板的应用,同样是一种手段,这些手段都是用来增加知识流通效率的,从劳动对象要素对软件工程生产力进行提高 。
1.1.3 从生产工具要素考虑提高软件工程生产力
一则有关程序员的笑话,程序员于椅子上相互扭打,经理招呼他们回去,其中有一位声称,正处于编译的进程之中呢!
经理回答:哦,那你们继续。
提升软件工程生产力,从生产工具要素方面去考量,这好像用不着过多去谈论,大家都清楚挖土机相较于铁铲而言生产力是更强的,可是,好多管理者却仍旧给程序员配备低配置的电脑。
电脑配置低的话,会致使程序员陷入无用的等待状况之中,举例来说,开启IDEA要耗2分钟时间,并且多打开两个窗口便会出现卡顿现象等 。
让我们来算一下这个账,假设有一位月工资为20000元的程序员,其工作天数为22天,每天工作时长是8小时,那么每小时的工资就是113.6元。若是这位程序员每天因为程序打开速度慢、网络速度慢、编译速度慢等各类情况而等待的时间加起来总共是0.5小时,那么这0.5小时就是被浪费掉的,算下来大约是57元。这也就表明一个月会因此浪费掉1254元。
仅这,便是一位程序员一个月出现的浪费情况,且尚未将其他人的计算在内。哪怕计算稍显粗糙,然而却能够反映出问题所在。相较于程序员的工资成本而言,电脑的成本着实算不上什么。
顺嘴提一句别的事儿,这般计算可不是在对员工进行压榨行为,而是在8小时规定范围以内,琢磨着怎样去提升公司整体的生产力水平。
从另外一个视角去瞧,身为软件开发团队的负责人,得深入到“开发现场”之中去知晓,当下的生产工具是不是已然变成了提升生产力的阻碍啊。生产工具里头除了电脑之外,还涵盖了网络等,构建工具也要算在内,IDE同样是其中一部分呢。
1.1.4 生产力三要素的意义
总的来说,相较于管理成功学那种“心灵鸡汤”,从生产力三要素这个角度去看待软件工程的意义,其意义在于能给我们提供更多可操作性。管理者能够把生产力三要素当作理论基础,有依据地去提高生产力。
换个角度来讲,如果此时你成为了那位目睹“程序员于椅子之上展开打斗”场景的经理,那么你会采取怎样的举动呢?
从生产力三要素方面去看,你要是询问平均编译时间究竟是多长时间,以及为何会用这么长的时间,进而针对三个要素展开提问:
• 生产工具:是电脑太慢了?是编译工具本身太慢了?
劳动者,也就是程序员所具备的能力方面,是构建出来的逻辑书写得并不合理吗,是在那一编译过程里某个阶段出现的问题从而对整体编译速度产生了影响吗 ?
• 劳动对象:是不是缺少对当前构建工具(技术知识)的了解?
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。
