[No00004D]深度思考好文:软件工程师的困境
昨天是我一同学结婚的好日子,同学们大家聊各自的工作,有个同学突然问了我一句:我们同学中好像做软件的不多?如果再细分,好像做网络相关的更少?
回想起当时为何读计算机信息管理的专业,是因为那时听说读电脑未来很有出路,所以计算机是我中专的第一志愿,而我的第一台电脑就是那时买的,还记得那时买一台 486 电脑花了我妈五万块,在 20 多年前它是一比不小的数字。
毕业后专科考上电子系,当完兵后大学考上资管系,理论上我同学里应该会有不少人从事软件工程师,但事实上真的少之又少,要很认真的想才好不容易凑到十个,其中不少还是写硬件的…
之前天下杂志有一篇文章科技之岛找不到软件工程师 以教育的角度讨论软件工程师短缺的问题,而下面的留言却大多集中在薪资的问题上,我总觉得这有点瞎子摸象的感觉,好像有提到问题又感觉不够到位。
我从本科系毕业,出社会第一份工作就是软件工程师,一路升到项目经理,创业后成为老板,当然也变成了 Sales,需要卖服务给更多的老板,以下就我看到不同的面向与大家分享台湾软件工程师的困境。
教育的问题
学生的天份
其实程序设计像艺术一样是需要有一些天份才会学的好,偏偏学校的课程有该有的进度,老师无法因为你听不懂就卡在那个章节太久,所以跟不上的同学只好死背,背不起来就开始讨厌,所以读到最后只是让来不及发现自己天份的同学更早放弃当软件工程师这条路。
师资的培育
学程序设计需要天份,想当然的,要能教好这堂课的老师也需要这样的天份、能力还要知道怎么教,但通常这样的老师很少,即使有,他也需要不断地学习,和业界保持同步,不能脱节。这真的很难。
所以我们常会看到学校会教一些现在比较少用到的语言,因为那是老师自己最擅长的程式语言而不是业界最需要的。
软件工程师的问题
薪水与价值的不对等
工程师认为自己该拿多少薪水是以对公司的价值来思考,如果我一年能帮公司赚到或省下一千万,那我年薪百万不为过吧?老板认为工程师该拿到的薪水是以工时来思考,如果我每天正常上下班,那要和老板要求年薪百万真是难上加难。
最后,为了生活不得已,很多工程师如果不是在干私活就是偷偷在接私活,如果不是偷偷在接私活就是在接私活的路上。不相信?我之前写了一篇《软件工程师的创业陷阱:接私活》,感受到大家不小的怨念迴响 XD
价值的错估
很多工程师会用对原公司的价值来对新公司要求更高的薪资,但价值通常是需要搭配其它的客观条件才成立。例如团队、资源… 等
如果新公司没有这些条件,工程师是否能发挥该有的价值?通常新公司会抱持怀疑的态度。
即使高薪也无法选择小公司
虽然有些小公司愿意提出高于市价的薪水,但这薪水能持续多久?里面有能一起讨论的同事吗?未来的发展好吗?写在履历上好不好看?朋友都没听过这间公司?….
除了薪水以外的一堆疑虑都跑出来了。最后大部份的工程师还是留在大公司等待机会比较保险。
升迁制度的问题
无法跳脱的彼得原理
「彼得原理」是指:在组织或企业的等级制度中,人会因其某种特质或特殊技能,令他在被提拔到不能胜任的地步,相反变成组织的障碍物(冗员)及负资产。
好的工程师为了拿高薪,不得不往管理层升迁,变成管理层后再也不需要写代码,所以为什么好的工程师这么少?因为他们都变经理了。
可惜的是,代码写的好的人不代表会管理人,最后反而因为管理绩效不好需要离开公司,但也回不去以前工程师的状态了。
CTO (技术长) 的问题
CTO 决定了公司的技术天花板
每间公司只会有一位 CTO,基本上也不会写代码了,也就是说 CTO 如果离开公司要找工作没那么容易。基于这样的原因,你觉得 CTO 会找比他能力好的人进公司吗?CTO 能接受后面进来的人拿比自己还高的薪水吗?那你知道如何审核 CTO 吗 ?
主管的问题
追求 KPI
请工程师会花到当月的部门预算,但可能要等到半年后才会有明显的成效,为了兼顾每个月的 KPI ,无法花太多钱请工程师。
老板的问题
投资与成本的混淆
对很多老板来说软件工程师就像水一样,没有的时候很痛苦,有了后就没感觉了,什么?水要卖这么贵?不就只是水而已吗?老板总认为软件工程师是固定成本,而成本就是要控制在越低越好,如果换你当老板,很可能你也会这样做。
如果工程师一直想的是加薪、老板一直想的是省成本,这双方永远都会是对立无解,但如果工程师想的是帮公司赚钱,老板想的是投资工程师,最后这结果应该会好很多。
就是赚不够多
就算有好的软件工程师,但他要的薪水老板就是给不起。好的软件工程师老板请不起,请的起的都是不好的工程师,老板说市场上都没有好的工程师,其实是说市场上怎么都没有利害又便宜的工程师。
不用钱的迷思
你知道卖软件或服务比卖硬件困难吗?我曾经想要卖一套软件给一个老板,我说这可以提升员工的工作效率,他回说:我为什么要花钱提高员工的效率?他干不完就加班啊,反正我每月都固定付他的薪水,又不用多花钱。
产业的问题
成功的网络公司太少
二个一样是三年工作经验的软件工程师,一个做过可以同时 100 人在线的网站和另一个做过可以同时 1,000,000 人在线的网站,这二个人的技术能力就差非常的多,薪水当然也会差很多。但有多少网站需要作到同时 1,000,000 人在线上?所以能有相关经验的人一定是少之又少。
如果成功的网络公司越多,里面就能培养出更多有实际经验的工程师,当这些工程师换工作时,会把身上的技术及观念带至另外一家公司,久而久之,好的软件工程师就会越来越多,产生正向循环。
结语
以上种种问题一个卡一个,造成了软件工程师的困境,如果当初有一间公司愿意让我写一辈子代码,薪水可以因为我的价值一直往上加,不会因为职位而有限制。我想我应该就不会创业了。市场上也不会少了我这个好的软件工程师 XD,我的力量很难改变整个环境,但至少还能从自己的公司慢慢作起,期许能成为市场上的成功案例。