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

回想起当时为何读计算机信息管理的专业,是因为那时听说读电脑未来很有出路,所以计算机是我中专的第一志愿,而我的第一台电脑就是那时买的,还记得那时买一台 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. Android 中的Json解析工具fastjson 、序列化、反序列化

    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...

  2. mac 终端启动 jboss 停留在(Starting) 不能启动joss

    今天下载了jboss,解压后发现standalone.sh,不能够在终端中执行,于是google了一下,原来是由于jdk版本的问题导致jboss一直停在调试状态(貌似是这样说的). 需要把mac系统的 ...

  3. 我的Android第三章:Android的组件介绍

    小编摘录了Android文档介绍Android四大组件的基本内容,感觉文档的内容写的很详细所以小编将它写入了博客 Android 使用Java语言开发.Android SDK 工具编译代码-以及任意数 ...

  4. 【代码笔记】iOS-翻页效果的实现

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  5. 使用getopts处理shell中的输入参数

    在编写shell脚本中,经常要处理一些输入参数,在使用过程中发现getopts更加方便,能够很好的处理用户输入的参数和参数值.   getopts用于处理用户输入参数,举例说明使用方法: while ...

  6. #VSTS日志# 15/11/18 插件应用市场,RM,包管理器等

    [小编]从今天开始,我将在这个博客上连载Visual Studio Team Service的定期更新.VSTS是Team Foundation Server 的在线版本,微软每3周会对这个服务进行更 ...

  7. Vector和Stack(已过时,不建议使用)

    以下内容基于jdk1.7.0_79源码: 什么是Vector和Stack Vector:线程安全的动态数组 Stack:继承Vector,基于动态数组实现的一个线程安全的栈: Vector和Stack ...

  8. lumen Console Commands

    1.在app->Console->Commands中新增类 继承  Illuminate\Console\Command <?php namespace App\Console\Co ...

  9. 烂泥:使KVM显示VM的IP地址及主机名

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. KVM虚拟化学习已经有一段时间了,现在虚拟化软件比较多,对比了下目前使用比较多的VMware Vsphere.发现在不进入VM系统的情况下,Vspher ...

  10. iOS播放铃声及震动,适用于扫描、新消息等

    iOS播放铃声或者设置震动实现:   铃声:     SystemSoundID soundID = 1007;     AudioServicesPlaySystemSound(soundID); ...