昨天是我一同学结婚的好日子,同学们大家聊各自的工作,有个同学突然问了我一句:我们同学中好像做软件的不多?如果再细分,好像做网络相关的更少?

回想起当时为何读计算机信息管理的专业,是因为那时听说读电脑未来很有出路,所以计算机是我中专的第一志愿,而我的第一台电脑就是那时买的,还记得那时买一台 486 电脑花了我妈五万块,在 20 多年前它是一比不小的数字。

毕业后专科考上电子系,当完兵后大学考上资管系,理论上我同学里应该会有不少人从事软件工程师,但事实上真的少之又少,要很认真的想才好不容易凑到十个,其中不少还是写硬件的…

之前天下杂志有一篇文章科技之岛找不到软件工程师 以教育的角度讨论软件工程师短缺的问题,而下面的留言却大多集中在薪资的问题上,我总觉得这有点瞎子摸象的感觉,好像有提到问题又感觉不够到位。

我从本科系毕业,出社会第一份工作就是软件工程师,一路升到项目经理,创业后成为老板,当然也变成了 Sales,需要卖服务给更多的老板,以下就我看到不同的面向与大家分享台湾软件工程师的困境。

教育的问题

学生的天份

其实程序设计像艺术一样是需要有一些天份才会学的好,偏偏学校的课程有该有的进度,老师无法因为你听不懂就卡在那个章节太久,所以跟不上的同学只好死背,背不起来就开始讨厌,所以读到最后只是让来不及发现自己天份的同学更早放弃当软件工程师这条路。

师资的培育

学程序设计需要天份,想当然的,要能教好这堂课的老师也需要这样的天份、能力还要知道怎么教,但通常这样的老师很少,即使有,他也需要不断地学习,和业界保持同步,不能脱节。这真的很难。

所以我们常会看到学校会教一些现在比较少用到的语言,因为那是老师自己最擅长的程式语言而不是业界最需要的。

软件工程师的问题

薪水与价值的不对等

工程师认为自己该拿多少薪水是以对公司的价值来思考,如果我一年能帮公司赚到或省下一千万,那我年薪百万不为过吧?老板认为工程师该拿到的薪水是以工时来思考,如果我每天正常上下班,那要和老板要求年薪百万真是难上加难。

最后,为了生活不得已,很多工程师如果不是在干私活就是偷偷在接私活,如果不是偷偷在接私活就是在接私活的路上。不相信?我之前写了一篇《软件工程师的创业陷阱:接私活》,感受到大家不小的怨念迴响 XD

价值的错估

很多工程师会用对原公司的价值来对新公司要求更高的薪资,但价值通常是需要搭配其它的客观条件才成立。例如团队、资源… 等

如果新公司没有这些条件,工程师是否能发挥该有的价值?通常新公司会抱持怀疑的态度。

即使高薪也无法选择小公司

虽然有些小公司愿意提出高于市价的薪水,但这薪水能持续多久?里面有能一起讨论的同事吗?未来的发展好吗?写在履历上好不好看?朋友都没听过这间公司?….

除了薪水以外的一堆疑虑都跑出来了。最后大部份的工程师还是留在大公司等待机会比较保险。

升迁制度的问题

无法跳脱的彼得原理

「彼得原理」是指:在组织或企业的等级制度中,人会因其某种特质或特殊技能,令他在被提拔到不能胜任的地步,相反变成组织的障碍物(冗员)及负资产。

好的工程师为了拿高薪,不得不往管理层升迁,变成管理层后再也不需要写代码,所以为什么好的工程师这么少?因为他们都变经理了。

可惜的是,代码写的好的人不代表会管理人,最后反而因为管理绩效不好需要离开公司,但也回不去以前工程师的状态了。

CTO (技术长) 的问题

CTO 决定了公司的技术天花板

每间公司只会有一位 CTO,基本上也不会写代码了,也就是说 CTO 如果离开公司要找工作没那么容易。基于这样的原因,你觉得 CTO 会找比他能力好的人进公司吗?CTO 能接受后面进来的人拿比自己还高的薪水吗?那你知道如何审核 CTO 吗 ?

主管的问题

追求 KPI

请工程师会花到当月的部门预算,但可能要等到半年后才会有明显的成效,为了兼顾每个月的 KPI ,无法花太多钱请工程师。

老板的问题

投资与成本的混淆

对很多老板来说软件工程师就像水一样,没有的时候很痛苦,有了后就没感觉了,什么?水要卖这么贵?不就只是水而已吗?老板总认为软件工程师是固定成本,而成本就是要控制在越低越好,如果换你当老板,很可能你也会这样做。

如果工程师一直想的是加薪、老板一直想的是省成本,这双方永远都会是对立无解,但如果工程师想的是帮公司赚钱,老板想的是投资工程师,最后这结果应该会好很多。

就是赚不够多

就算有好的软件工程师,但他要的薪水老板就是给不起。好的软件工程师老板请不起,请的起的都是不好的工程师,老板说市场上都没有好的工程师,其实是说市场上怎么都没有利害又便宜的工程师。

不用钱的迷思

你知道卖软件或服务比卖硬件困难吗?我曾经想要卖一套软件给一个老板,我说这可以提升员工的工作效率,他回说:我为什么要花钱提高员工的效率?他干不完就加班啊,反正我每月都固定付他的薪水,又不用多花钱。

产业的问题

成功的网络公司太少

二个一样是三年工作经验的软件工程师,一个做过可以同时 100 人在线的网站和另一个做过可以同时 1,000,000 人在线的网站,这二个人的技术能力就差非常的多,薪水当然也会差很多。但有多少网站需要作到同时 1,000,000 人在线上?所以能有相关经验的人一定是少之又少。

如果成功的网络公司越多,里面就能培养出更多有实际经验的工程师,当这些工程师换工作时,会把身上的技术及观念带至另外一家公司,久而久之,好的软件工程师就会越来越多,产生正向循环。

结语

以上种种问题一个卡一个,造成了软件工程师的困境,如果当初有一间公司愿意让我写一辈子代码,薪水可以因为我的价值一直往上加,不会因为职位而有限制。我想我应该就不会创业了。市场上也不会少了我这个好的软件工程师 XD,我的力量很难改变整个环境,但至少还能从自己的公司慢慢作起,期许能成为市场上的成功案例。

[No00004D]深度思考好文:软件工程师的困境的更多相关文章

  1. 软件工程师所需掌握的“终极技术”是什么?

    软件工程师所需掌握的"终极技术"是什么? http://yunli.blog.51cto.com/831344/1019990 最近,我在微博上看到@程序员邹欣老师发的一条微博 - ...

  2. 连载《一个程序猿的生命周期》-《发展篇》 - 3.农民与软件工程师,农业与IT业

    相关文章:随笔<一个程序猿的生命周期>- 逆潮流而动的“叛逆者”        15年前,依稀记得走出大山,进城求学的场景.尽管一路有父亲的陪伴,但是内心仍然畏惧.当父亲转身离去.准备回到 ...

  3. CEO应向软件工程师学习的7个技能

    软件工程师的哪些技能是值得CEO学习的?显然,软件工程师是逻辑的,高效的,注重细节的,有计划的,并且大多数CEO也是如此.但是,软件工程师还有一些更微妙,甚至是令人懊恼的品质,那么CEO是否可以从中学 ...

  4. Google前工程经理王忻:如何准备软件工程师的面试

    http://t.jobdu.com/thread-368-1-1.html 导读:原文作者王忻,Google前工程经理,2003年月加入Google,是Google Lively背后的主导力量,是G ...

  5. 转载:CEO应向软件工程师学习的7个技能

    软件工程师的哪些技能是值得CEO学习的?显然,软件工程师是逻辑的,高效的,注重细节的,有计划的,并且大多数CEO也是如此.但是,软件工程师还有一些更微妙,甚至是令人懊恼的品质,那么CEO是否可以从中学 ...

  6. net软件工程师求职简历

    Net软件工程师求职简历 姓    名: 王静静 性    别: 女 出生日期: 1991-12 籍    贯: 河北 居住地: 北京 学    历: 专科 E-mail: 335659753@qq. ...

  7. JavaSE 软件工程师 认证考试试卷2

    JavaSE 软件工程师 认证考试试卷   笔试   考试时间150分钟 总分 100分   姓    名_______________________ 身份证号___________________ ...

  8. Java 初级软件工程师 认证考试试卷1

    Java 初级软件工程师 认证考试试卷   笔试(A卷)   考试时间150分钟 总分 100分     姓    名_______________________ 身份证号_____________ ...

  9. MySQL 5.7 优化SQL提升100倍执行效率的深度思考(GO)

    系统环境:微软云Linux DS12系列.Centos6.5 .MySQL 5.7.10.生产环境,step1,step2是案例,精彩的剖析部分在step3,step4. 1.慢sql语句大概需要13 ...

随机推荐

  1. 用SVG绕过浏览器XSS审计

    [Translated From]:http://insert-script.blogspot.com/2014/02/svg-fun-time-firefox-svg-vector.html === ...

  2. yii redies 不同的工程缓存key的问题

    参考这篇文章 基本配置操作: yii main.php中: return array( ... 'components'=>array( 'redis_cache' => array ( ...

  3. Android简单的ListViewDemo及每个控件的点击事件

    ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...

  4. 深入.net(多态一)

    代码优化技术: 当您在 编写一个类时,如果您发现你需要编写的“属性”和“方法”曾经在已有的类中实现,则,您可以将其共用的“属性”和“方法”剪切到一个新的“类”中,然后,让两个类共同继承这个“新类”.( ...

  5. 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)

    Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...

  6. IOS 杂笔-1(为什么不继承类簇?)

    答:首先,类簇是可以继承的,并不是不可以.例如,我们可以选择继承NSSting,但是此时你用你自己设定的类去调用NSSting的一些方法时,会存在无法实现的问题,这是为什么呢. 1.类簇里有很多私有的 ...

  7. OC self = [super init] , 点语法 , @property

    OC self = [super init] , 点语法 , @property 构造方法为啥这么写? self = [super init]; [super init] 的结果可能有三种: 第一种: ...

  8. 小试ildasm,ilasm,ilspy

    选择了微耕的软件(为什么选择它,因为微耕的二次开发实在太牛了,只给文档,一切技术问题都不回答.文档也是只公开基本的东西) 第一个功能:换文字 第二个功能:插入一个新的程序集,在做某些事情前先做我想做的 ...

  9. CMMI4级实践中的5个经典问题及解答

    这五个问题相当经典而且比较深,需要做过CMMI4.5级的朋友才能看懂这些问题.这5个问题是一位正在实践CMMI4级的朋友提出来的,而解答则是我的个人见解. 五个疑问是:   A.流程,子流程部分不明白 ...

  10. JavaScript Patterns 4.8 Function Properties - A Memoization Pattern

    Gets a length property containing the number of arguments the function expects: function func(a, b, ...