写这篇Blog是我对于软件行业的职业发展的一些思考,之所以有这些思考,主要是因为看到部分同事对于自己的软件职业生涯的困惑。希望对于读这一文章的人有所帮助。
 
由于工作的关系,我在单位中的职位类似于软件架构师,在项目组中,虽然不用亲自去做一个完整的SR(就是指软件Bug,这是我们单位采用的术语),但是还是需要知道很多的设计细节。当然,有时我自己也带人做大的SR,只是SCM部分都是由其他的同事去做。一方面由于工作时间长而且激情依旧,另一方面也是因为大家对于我的技术能力比较的信任,所以不少有想法的人以及有能力的人都喜欢与我聊天。慢慢地,我发现有些同事对于自己的将来如何发展并没有很清晰的想法,除了一般的工程师,有的Leader也存在同样的问题。主要表现在:
1)虽然从事软件开发工作,但内心深处其实并不是对软件开发有最大的兴趣。有那么一句话,叫做“兴趣是最好的老师”,我想这一点大家都是认同的。同样,兴趣对于我们的职业发展起着很重要的作用。一个人,如果对自己的职业有很浓厚的兴趣,那么往往,他(她)会花大量的时间去学习与职业相关的知识。如果花了大量的时间去学习,那么他(她)往往会从工作中收获一些东西,这些东西,可能是经验、教训、小小的成就感、团队的认同、同事对其的信赖进而依赖等等。进而,这些收获会促使他(她)更加有兴趣去学习。可以看出这是一个良性的正反馈过程,具有兴趣的人在职业发展上往往不大会太早出现困惑。反之,如果对于所从事的职业不具有兴趣,工作只是为了生计似的,那很容易出现职业发展的困惑和瓶颈。
2)缺乏坚持,心态浮燥。现在的社会是一个浮燥的社会,因此,难免让我们也变得浮燥。我相信一个人要过得好或是成功,不是一定非要去做软件,但是,如果想在软件行业中过得好且成功,那非得沉下心来好好的打好基础不可。软件行业有很多的特殊性,比如一个人在软件行业工作3~4年是很有可能成为一个出色的人的,但是同样的时间如果花在硬件开发上,那就不可能了。因为对于软件行业,现在Open Source可是大行其道,只要一个人能静下心来,他(她)完全可以学到很多全世界最好的设计思想。但硬件开发就不同了,说到底硬件开发是“烧钱”行业。回到我们的话题,为什么要打好基础呢?因为,基础不好会直接影响到后面的发展(废话),基础不好最终会影响一个人对行业的敏感性和判断力。此外,理论上绝大部分的工作谁都能做,但现实却似乎不是这样,那是因为每个人的信心和毅力不同(这里的“人”指在同一起跑线上的人)。人,有时你还别说,你觉得有信心做好,那就能做好,如果觉得自己做不好,那结果一定不会出乎意料。有信心的人,自己会从小小的成功中将自己打造得更有自信,会形成一种构建自信的良性循环。再说说毅力,这一点从小到大我想我们接受过很多类似的教育,但真的我们明白毅力的重要性或者能说意识到重要性但能付诸实际吗?有毅力的人往往会“迎难而上”,而每一次迎难而上一定会有所收获,从而为下一次“迎难而上”做准备,有毅力的人往往更容易达到一个新的高度。其实,现实生活中很多人只要多一点点的坚持就能使自己上一个新的台阶,从而使得自己的舞台更加的大,眼界更宽。人与人的差别就在于信心和毅力 --- 不是智力。
3)对工作没有激情。一个没有激情的人,做事只能是走一步看一步,按步就班,没有改变现状的冲动。我看到太多的面对一塌糊涂的现状(Overtime多,且大家干得又苦,关键是还看不到未来),却不思改变,安于现状的软件项目了。之所以出现这种状况,我想没有激情是很重要的一个原因。其实,软件行业确实是很能发挥人的创造力的,但关键是我们想不想发挥创造力,我们千万不要把所有的工作都当作是正在发挥创造力。现在,请静下心来想想看,最近什么工作自己觉得痛苦?我能改变吗?如果不能改变是因为自己没有激情呢?还是我的上司没有激情?
 
从表面上看,我们的职业发展受很多因素的影响,但我想不外乎分为内因和外因,内因是指个人自己相关的因素,外因是除内因之外的所有因素。内因,我想主要是个人的兴趣、信心和毅力(假设大家的教育都差不多)。而外因,则包括机会、环境等等。内因相对更容易由个人把握而外因则很难,而且,只有具备了一定的内因,我们才能得到相应的外因。也就是那句话,机会往往是给那些时刻做好准备的人的。
 
对于正在从事软件行业的人,我想可以尝试问自己以下几个问题:
1)  我对软件开发发自内心的感兴趣吗?
2)  我清楚地知道自己能做什么吗?
3)  我具有足够的信心吗?
4)  我具有足够的毅力吗?
5)  我具有改变现状的激情吗?
 
通过问这些问题,我想有助于我们去了解自己是否真的适合从事软件行业,自己在这个行业能做到什么样的层次以及自己的现状是否是正常的。此外,我想每个人都应当量力而行,千万别委屈了自己去追求自己都觉得不可能发生的事(除非你想证明奇迹小论软件行业的职业发展),最为关键的一点是,从工作中获得快乐是最重要的!