文/上嵌科技(简书作者)
原文链接:http://www.jianshu.com/p/9fee4c5f6825
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
程序员这个职业具有丰厚的薪水,高端的职位和成就感的事业,几乎是现在计算机专业,和一些理工类专业同学的期望的职业。据中智2015年福利调研数据显示,程序员已经成为2015年最有“钱途”的职业,这些岗位包括软件开发工程师,移动开发工程师,产品经理(互联网/软件行业)、架构师(互联网/软件行业)、数据分析师(互联网/软件/医疗行业)。
程序界和软硬件一样都要遵守摩尔定律,当前的技术知识很快会被替代,你需要不断学习新的东西,否则就会面临着被淘汰的危险。然而,一个人的学习动力和欲望都是有限的,记忆力还会随着年龄的增长而衰退,从这个道理上来说,年龄大的迟早会被年龄小的超过,成为鸡肋并最终将被公司抛弃。难道程序员这个职业做不过三十五岁,永远是一碗青春饭吗?
决定一个人会不会淘汰的关键
一个人如果根基扎实,他就更容易学习新的事物新的知识,年轻和精力相对于扎实牢靠的根基是微不足道的,对于别人是一座山的障碍,对于他也许就是一张纸的隔阂,这样的人是不会面临着被超越被淘汰的危机的,青春饭的论调对他完全不适用。
看看5年前,我们都还没有智能手机,今天移动互联网和移动互联网创业已经如火如荼。第一批从事移动互联网开发,APP开发的工程师都是从其他开发语言转过来的,他们看准方向和趋势,早就受益了。
而一个人如果根基不牢,只是靠精力和年龄勉强立足,每次新事物新知识出现都在和年轻人拼体力拼精力,那么他迟早将被淘汰,优胜劣汰的社会就是这样残酷无情,但很公平。如果你只是一个工作经验用5年,在哪个行业,都不会有加薪的机会,还面临被淘汰的可能。
只不过在IT行业,程序员这个岗位上,技术趋势变化得更明显一些,对从业人员的学习要求更高一些。相反,如果你选择一个缓慢发生的传统行业,可能就是温水煮青蛙。
如何打好程序员的根基
面向对象(OOP)的思想。MVC、分层架构,面向接口编程、依赖注入,OR Mapping,面向切面,SOA等都是OO的发展,不从根本上领会它,程序员就难以把握程序发展进化的趋势,永远停留在老窠臼中无法自拔,自我提高升华进化当然更是一句空话。
数据结构。程序的核心目的是收集,整理和展示数据,而数据的核心就是数据结构,它的重要性不言而喻。线性表、栈/队列、串、多维数组、广义表、树、图这些数据结构你都需要认真掌握,掌握的程度越深,日后学习的阻力就越小,相对于他人将更有优势。
算法。如果缺乏好的算法,程序架构得再完美数据再贴切都无济于事,犹如一台法拉利却用牛来拉一样。迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法都是你需要掌握的,不要以为这很难,读透一本算法导论就足够了。
基础API。只有思想,数据结构和算法只是一条腿,要健步如飞还得两条腿走路。程序员的另一条腿就是基础API,你需要认真掌握TCP/IP协议详解,Socket通信,线程,文件读写等每种语言和技术都需要的基础知识,一个新事务即使再绚烂夺目也是利用这些基石搭建而成的,如果你彻底了解了它们将永处不败的境地,甚至觉得新技术也不过如此。
你再看看,一些大牛掌握好几种,十几种编程语言,就不觉得奇怪了。因为他们根基扎实,迅速掌握一种语言、平台根本没有问题。不同的语言、平台在他们眼里就是工具,就像一个武林高手一样,拈起一根树枝,也是一把剑。
如何打好根基
多学。从项目中学,从书本中学,从别人哪里学,从失败中学习,掌握基础API就是需要多学习,如果有已有的知识总结可以起到事半功倍的效果。
多练。构建自己代码库,有自己的完整的项目代表作品。不做项目,不做多个项目,不做大项目,程序员对“度”的把握总是缺乏经验,不是过就是不及。真正亲手手写过10-20万行代码的是成为一个成熟程序员的必要条件。在IT行业,人才成长的速度也是非常快,2~3年工作经验的程序非常抢手。
多见。眼光狭窄,目光短浅,固步自封只能造就一只井底之蛙,你的眼光必须超越自己所在的环境才能取得真正的进步。一是多了解参与开源社区,二是多跟高手交流接触。
程序员的职业生涯能给我们带来什么
只要人们还在使用计算机,程序员这个职业就永远不会消亡,因为计算机运行永远需要软件。相对于其它职业,程序员对自己命运的把握程度更大。“荣辱自取,不求于人”,这是一种非常好的感觉,在别的职业中是难以找到的。
比尔·盖茨、小扎,李彦宏、马化腾、雷军、周鸿祎、刘强东......他们都曾是程序员,程序这种职业不仅训练了你对技术的快速掌握,更多培养管理沟通能力,产品思维,对技术趋势的理解。
程序员事业发展的方向
乒乓球是中国的国球,在中国从事乒乓球运动就是一碗青春饭,人才辈出,青年人成长太快了。一个瓦尔德内尔要对阵打中国4~5代的运动员。但你看看国内的那些乒乓球退役运动员不是体育局的领导,就是开创了自己的事业。如果没有乒乓球这个运动的繁荣、人才辈出,他们不会有这样的发展和位置。
对于一个程序员来说,有哪些发展方向呢?
架构师CTO,CIO。对于热衷于技术的程序员来说这是一个不错的方向,架构师这个职位的必要条件是有优秀的技术功底和丰富的设计经验,此外还需要有某个领域的深入知识。CIO还需要对未来五年内的技术走势把握得比较清楚。
项目经理,部门经理。人际关系处理良好,语言能力出众的程序员适合走这条路。这也是大连大多数程序员的理想选择。
独立开发者,当一个给自己发薪水的人。网站做好了收入颇丰,低端如hao123,高端如google的例子都摆在眼前。其实做网站初期投入并不巨大,但需要持之以恒的毅力尤其是敏锐的市场嗅觉,它决定了你是否能从网站中盈利。此外,拥有自己的网站对于自我宣传,建立个人品牌有很大的好处。这条路适合于热衷于网络技术的程序员。
开公司创业,技术合伙人。制作软件并不难,难得是是否能接到活,能否接到长期的活,如果能做到的话,你就可以选择创业,一次项目的利润就可能就等于你前期的工资总和。