软件工程师成长之旅----经典版

本文作者结合自身经验,探讨了软件工程师的成长历程,从技术点、框架、团队、问题到过程控制五个阶段。强调了良好心态、学习习惯、总结分析的重要性,并指出团队合作和解决问题的能力在软件开发中的关键作用。文章还提到了技术管理的挑战,如团队建设、技术价值观等,鼓励程序员不断学习和进步。
摘要由CSDN通过智能技术生成

软件工程师成长之旅

从事软件开发已有些年头,其间经历了各种各样的团队,见识了不少开发的方式和现象,这些经历或给人以一些失败的教训或给人以一些成功的经验,历经数年的分析总结,逐渐对软件开发的认识有了相当的深度,平时总忙于各种锁事的处理,没什么时间来整理,现在越发感觉这些经验有必要整理出来,所以就特地根据原先写成的一些东西,把它整理成文,但愿这些教训或经验能给正从事软件开发的同行们一点启发,或是当作一个故事看看。

首先,作为软件开发的热爱者,我是肯定软件开发行业的从业价值的,至少在我看来这是一个不错的行业。但这个行业毕竟是一个重脑力劳动的行业,如果没有良好的心态和良好的学习惯在这行立足是比较困难的。我个人认为要成为一个优秀的软件开发者需要从如下几个方面考虑。

一、从事软件开发必须具备三个条件硬条件:

1.  智力不宜太差
  我不敢说做软件不一定要有多聪明,但如果反应力不太好的,我认为从事这行是比较困难的,毕竟这是一个知识高速更新的行业,需要不停的学习。如果接受学习知识不能深入或是接受起来比较吃力是不太适合做软件开发的。

2.  要有良好的心态和学习习惯
  一般来说,在绝大多公司做软件开发都要求有一定知识面,一个人从学校出来时所学的知识远远不够。软件开发所需的知识表现为一个特点:多熟悉或精通几个知识点是不足以体现出实力的提升,往往需要你日积月累掌握相当数量的知识点,最后才能表现出实力。所以,这就要求你必须不急不燥认真学习、实践相关的知识,当这种积累达到一定程度的时候你就会明显感觉实力有所增强,而这种实力增强的周期通常在半年到一年半,如果一个人没有相当的毅力和良好的心态,急于求成,学习的时候东一下西一下往往不能见成效,日子一久,就会逐渐丧失对知识、对技术的追求热情,最后不知不觉在竞争中被淘汰,或是处于很平常的状态。所以良好的心态和学习习惯是从事软件开发的第二个必备条件。

3. 要善于总结和分析
   
软件开发所涉及的知识和方面是非常广泛的,包括行业领域知识、技术知识、为人处世等各方面的知识。软件行业的思想和门派也五花八门,我们如果见风跟风见雨跟雨,通常是行不通的,其实无论软件开发涉及多广泛的知识,但它始终跳不出一个基本出发点,那就是:它都是为了做好软件,获得经济效益。所以,在软件开发的过程中,只要我们根据具体情况,认真分析问题、积累解决问题的有效手段,一般来说在公司里生存都不会有太大的问题。这种积累越多,你就会发现良性循环的效益越大。如果不分析总结你可能会陷入失败再失败的恶性循环,即使你参与了一个成功开发的案例,往往也不知道之所以成功的原因,到哪天自己组织项目时还是感觉力不从心。对个人而言,无论是成功或失败的案例都是很宝贵的,失败的案例通常能提供给我们更多的教训,让我们在以后的软件开发中遇到类似问题时不再重蹈覆辙,甚至你从这些失败中提炼出了很有价值的问题,然后找到了很好的解决办法,间接从失败中获得了经验。成功的案例直接就给你提供了很多有益的参考。所以成功和失败是辩证的,关键是看我们如何吸收它所蕴含的财富。

二、软件开发成长的五个阶段
  从我本人及身边朋友的成长经历来看,我认为成为一个优秀的软件开发人员,应该要经历以下五个阶段的发展层次。否则,即使能在竞争中左右逢源,处处钻空子生存下去,起码这种生存方式不是所有人都能做到的,生存起来也不会很踏实。我不否认“天生一人必有一路”的说法,但我认为既然你有意在软件开发这行做下去,就应该认认真真的去做,不要总想着拉帮结伙,去获取人际斗争的渔人之利,这对个人和这个行业都不好,甚至可以说对这个国家的软件发展都不利。我比较主张走实力之路,所以以下的观点也基于这个立足点,也就是说这些观点并不适合追求“非实力”型的人员,但参考参考也无妨。
1.
面向技术点阶段:
  我认为一个初入这个行业的程序员,由于知识技能与见识的不足,接受一些思想是比较困难的,如果这个时候去过多的关注一些思想,到头来可能会成为一个只能夸夸其谈而无实际用处的“吹水派”,到哪里做砸哪里的项目。这个时候,通常由于资历、经验的不足在团队中难以成为核心成员,即使你能做到“思想层面”,也没有机会去实践。所以这个阶段的程序员,最好是踏踏实实把一些常用的技术点认真消化,深入理解,深入实践,为以后的发展积累良好的基础。对技术点的积累,你既要兼顾工作中的需要也要兼顾将来的发展,既不能完全被所在的环境束缚于一隅,也不能背离现实而一味追求知识面的扩张。你必须明白一个道理,只有工作相对愉快的前提下你才能有更高的学习效率,所以,首先把“工作上需要的知识”解决的情况下,才进行知识技能的扩张。
  其次,在这个阶段的程序员,因为技能的不足,通常会认为技能是最重要的,而忽略对业务的理解。其实,做好软件“技能”与“业务”都是相当重要的,缺一不可。技术的强势有时可以降低对业务的理解要求,同样,业务的强势有时也可以降低对技术的要求,有的时候很多东西本身就很难定性它是属于“业务问题”或是“技术问题”,所以总是去争论“业务”与“技术”的优劣是比较狭隘的。虽然我深知“业务”的重要性,但我个人认为,这个阶段的程序“相对忽略”对业务的理解是可以理解的,因为这个时候的程序员面临的最大问题通常技能不足。技能不解决,即使熟悉了业务也一样做不好,而且这个阶段的程序员,我认为还达不到会花很多精力关注业务的程度,所以对这个阶段的程序员,一些经验丰富的主力程序员,或是项目Leader有认真指导其工作的义务(注意是义务而不是权力)。但现实中的很多Leader或是经验丰富的程序员往往出于个人水平的不足,无法给予相应的指导,或是由于利益关系不愿意指导,这就是现实。这个阶段的程序员要有面对这种矛盾的心理准备,尽一切办法渡过这个难关,尽量处理好“业务”与“技术”的关系,可以通过加强对业务的理解来“适当弥补技术上的不足,或是找到其它更好的方法来处理这些问题。其实,我不是很主张这个阶段的程序把主要精力花在业务上,还有一个更重要的因素,这个因素“可能”甚至是“一定”会给公司的发展带来难以处理的“后遗症”,这对公司长远的发展来说,几乎是百害而无一益。但仅对个人的生存而言“重业务轻技术”未必不好,特别是对那些“管理不善,人员流动频繁的公司”或是“业务含金量很高的行业(如银行、保险等)”,走“业务线路”也可能迎来好的“钱途”,不过这种情况并不适合多数人。关于这个话题,我暂时就不再这里阐述了。

        另外,知识技能的积累发展,通常也有一个过程,我把这个过程归纳为“想到(理论水平)à能做到(可能水平)à做到(极限实战水平)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值