有下面两种说法:
一种是“程序员到了35 岁就要被裁员了”。
还有一种是“程序员是4D工种:dirty,difficult, dangerous, dreamless”。
但这些说法,并不是所有人都认同,比如我们的一个韩国作者。
“
这些说法与我的经历大不相同,所以我完全不能理解为什么会有这样的传言。
我并不认为程序员这个职业比其他职业更辛苦。韩国自然资源缺乏,更要通过人才去创造附加价值。我认为,劳动密集型产业使得大部分行业无比辛苦。韩国的代表性产业是制造业,为了提高制造业的效率,只能通过延长工作时间来实现。韩国制造业的中心从轻工业转变为重工业,现在,IT 产品制造业成为新一代的出口主导产业。在韩国主要产业变化的进程中,软件和程序员起到了支持作用,工作环境也通常会随着甲方的变化而变化。
在中小企业工作的程序员对恶劣的工作环境颇有不满,但我不认为韩国代表性大企业——三星电子或LG 电子的工作环境有多好。通常身处甲方位置的都是主业务,而负责软件开发的总是乙方,所以仅能追随甲方的脚步而已。
但现在,软件行业的处境正在改变,原因可以总结为以下几点。
软件业转变为甲方
为了在全球竞争的时代存活下来,韩国业界必须快速适应市场变化。行业趋势已经从以前的以硬件制造为中心,转变为以“苹果”和谷歌主导的软件为中心。竞争方式也正在转变为硬件业务外包、软件提供平台。
韩国的软件行业虽然还没有发展到主要产业的程度,但现在也已经占据了无比重要的地位。如今的软件行业不再是硬件的附属品,人们已经开始认识到,注重软件品质才能将产品销售出去。
除此之外,工作环境有望逐步改善。每个公司的管理层只有在向软件开发人才强调加班对制造业的重要性后才会明白,这对提高效率和提升品质并没有什么作用。如果将软件开发视为单纯的制造业,那么最终只能被市场淘汰。因为软件开发不是体力劳动,而是脑力劳动。当程序员压力大或感到厌烦时,开发出的产品品质只会下降。现在越来越多的公司都认识到了这一点,程序员的整体工作环境将会得到提升。
需求增长
伴随着产业的发展,软件行业站在了竞争的中心,对程序员的需求也迅速增长。企业为了寻找高质量人才而常年开展招聘,谋求具有相关经验的人、有实力的“大牛”。人才储备短缺,但需求却在不断增长,造成的结果就是成本增加。比如,具备相当水平的程序员的储备量不断下降,需求量却不断上升,导致一直稳定的软件程序员的人工成本从2009 年开始上涨。
从发达国家相关产业的发展中,可以看出这个职业的前景。就韩国来说,人们喜欢的职业通常是医生、律师等,但未来可能发生改变。国际竞争机制正在变化,随着产业的不断升级优化,韩国也会顺应时代的发展逐步变化。三星电子新设立了软件部门并开始大规模招聘,正是为了应对这种变化而做的准备。当产业结构发生变化时,人们对职业的喜好也会随之改变。通过美国现在的职业喜好度排名,可以预测韩国未来的职业喜好趋势。下表中的分数分别代表了各行业的工作环境和人们的喜好程度。
image美国2013 年“最受欢迎的工作”
我认为,程序员这个职业前途无量。虽然支柱产业的归属总是“三十年河东,三十年河西”,但至少在这个年代,程序员的上升空间非常大,因为正是程序员才使得我们梦想中的未来逐渐实现。无论主流软件怎样改变,最基本的软件是不会衰退的。只要在市场发展的进程中坚持努力、不被淘汰,就一定能享受到“程序员”这个职业带来的红利。而专家更是如此。
程序员者,专家也
程序员熟知编程语言、算法、数据结构、计算机系统专业知识,对欲创建的对象进行分析、设计、调试、实现UI 并正式运行。光看这些名词就知道,这并不是一个容易上手的领域。所以程序员需要不断扩充自己的知识储备,对技术有更深入的了解,与时俱进,然后一步一步成为专家。只有成为专家,才能在艰苦的环境中获得较好的待遇。
专家并不一定从事某个特定的领域,我们只需要在自己当前从事的领域内做到最好,积攒经验并能灵活运用。重要的是,要认为自己就是专家,具备向其他人推销自己的信心,不断提升自我实力。
瑞典斯德哥尔摩大学的安德斯·埃里克森教授提出了“10 年法则”:要想在任何领域成为大师,至少需要10 年的不懈努力。此处重要的是,10 年间的努力是“用心”还是只“用力”。
决定做一件事情时,大部分人都会在初期下定决心、付出全部,但随着时间的流逝,由于未能在短期内达到预期目标,很多人便会失去信心和积极性。如果不能跨过这道坎而只满足于现状,那么就会原地踏步。这样的人数不胜数。至少要付出哪怕比这些人稍微多一点点的努力,才有可能在自己的领域中冒尖。要想成为在10 年间不断发展、成长的程序员,必须将自己置于艰苦的环境,不断积累经验教训,只有这样才可能成为专家。
在同一行业或同一家公司工作3 年后,基本可以掌握成为技术人员所需了解的98% 的知识。从业3 年的程序员和从业10 年的程序员做出的软件在外观上看不出什么差别,只有实际使用时,才能体会到二者的稳定性和维护便利性存在很大不同。这是决定项目成败的核心要素。从业时间长的程序员具备积攒多年的实力和经验,只懂技术的人无法与之相提并论。技术员与专家的距离只有2%,但这2% 却需要用7 年以上的经验去填补。为了那2% 的空缺,专家需要用至少7 年的时间去创造只属于自己的独家秘诀,总结个人经验,提高实力。也许有人会想:“就为了那区区的2%,有必要花费这么长的时间吗?”若想成为被认可的专家,必须付出比这更多的努力。
我们耳熟能详的那些成功人士,无一不是经过长时间的磨炼才获得今日成就的。他们不只致力于98% 的技术,而是将更多的时间和精力用在了那欠缺的2% 上,为了达到甚至超越100%,他们无惧一天一天近乎残忍的磨炼,最终获得了成功。这种积攒实力的过程正是在自己的领域出人头地的保证。
神经学家丹尼尔·格拉德威尔也提出了相似的理论。他认为,要成为某个领域的专家,需要10 000 小时。10 000 小时是什么概念呢?我们可以这样计算,如果每天工作3 小时,每周工作20 小时,那么成为一个领域的专家至少需要10 年。这就是“10 000 小时定律”。
这个时代需要的是有实力的专家,如果你是一名具有100% 技术能力的专家,那么机会自然会找上门来。从我们羡慕的专家身上不难看出,他们都在自己的职业中有着突出的业绩。这些人正是通过工作和职业发掘自身才能的,他们不是为了挣钱才工作,而是为了实现自己的理想和抱负而努力。也就是说,如果只是为了维持基本生计而工作,那么很有可能半途而废。
让我们看看美国计算机科学家、Sun 公司(已被“甲骨文”收购)创立者之一比尔·乔伊的事例。乔伊在20 世纪70 年代初开始学习编程。当时的计算机可谓庞然大物,一台计算机可以占满一个房间,而价格也超过100 万美元,且内存容量和CPU 运算性能非常不尽如人意。在那个年代,能接触到计算机本来就不是一件容易的事,编程更是难上加难。当时的编程是在穿孔卡片上打孔实现的,所有代码都用打孔机打孔来记录。如果想编一个复杂的程序,就需要几百甚至数千张穿孔卡片。可以想象在这种环境中,要成为一名程序员该多不容易。一位计算机科学家这样描述当时的环境:“用穿孔卡片编程,这不是在学习如何编程,而是在培养耐心和纠错能力。”计算机就在这样的条件下慢慢发展,直到计算机科学家们开发了计算机共享系统。
从此,计算机共享系统取代了穿孔卡片,乔伊也开始使用共享系统进行编程。幸运之神再次眷顾,校方为他24 小时开放计算机室,从那时起,乔伊开始了夜以继日的编程生活。通过坚持不懈的反复尝试,当重新开发Unix 代码的需求浮出水面时,乔伊最终得以胜任。乔伊日后回忆起最开始编程的那段时光时说,他花了10 000小时,也就是10 年的时间。写程序的人都知道,熬夜写代码是家常便饭。但如果像乔伊这样享受编程,就能将永不枯竭的精力转换为对工作的热情。
image成为编程专家的条件
通过整理不难看出,成为专家最重要的因素便是“10 年法则”和“10 000 小时的努力”。看到这里,如果各位立志于成为专家,那么必须全身心地实践“10 年法则”和“10 000 小时的努力”。
“现在再去实践‘10 年法则’已经太晚了吧?”如果各位有这样的想法也不要放弃,你需要的只是加倍的努力。什么时候开始并不重要,有意义的是“已经开始了”。此外,从觉醒的那一瞬间起,之后10 年要如何度过则更为重要。如果已经具备足够的经验,那么不一定需要10 年。
我还想强调一点,在这10 年时间里,不能只专注于编程而完全不涉猎其他领域。换句话说,不要成为一个除了编程什么都不会的“傻瓜程序员”。
这是一个学科交叉、领域交互的时代,编程也会与各种各样的领域产生联系。只有对相应领域有足够认识,才能编写出正确的程序。史蒂夫·乔布斯曾经说过:“‘苹果’正是借助了技术与人文学的交叉点,才创造出了具有革命性的产品。”我们不知道何时会为何种领域编程,所以我建议大家,平时广泛涉猎各个领域的书。这个建议是最现实的,也最容易实现。在现实生活中,我们经常能见到只专注于编程的程序员,我个人觉得非常可惜。如果你看美国情景喜剧《生活大爆炸》时,觉得主人公身上有自己的影子,说明你需要改变。那么,现在开始去涉猎更多的书吧。
一个组织中,会有一种“30-40-30”法则,意思是30% 的人对该组织有贡献,40% 的人维持现状,剩下的30% 需要他人帮助。其中,对组织有帮助的30% 的人就是专家。现在是专家急缺的时代,一名好的程序员也必须是这个行业的专家。各位准备好成为一名优秀的编程专家了吗?
我们需要警惕的并非不知何时会发生变化的外部条件,而是安于现状的自己。如果10 年如一日坚持不懈地充实自我,终有一日,你必将成为优秀的编程专家。
站在巨人的肩上
初级程序员接到自己不知道的内容的程序开发任务时,会感到相当尴尬。即使有一些基本的知识储备,但因为经验不足,哪怕业务并不完全陌生,也会因为找不到开发方向而手足无措。此时,处境尴尬的初级程序员就会紧急求助互联网,进入编程相关的网站参考,需要时也会直接“获取”(Ctrl+C,Ctrl+V)源代码。有些网站设有问答板块,十分便利。但是,我并不推荐这种编程方法。
对于程序员来说,编程既是“业务”,同时也是“学习的延伸”。面对雨后春笋般出现的新技术,程序员一定要不间断地学习,从学习中掌握。相较于“明白就好”,更优秀的做法是,通过学习达到可以进一步发展的程度。这样说会让人认为是“死心眼儿、不知变通”,但程序员从业5 年、10 年后,不可能依然只找寻简便方法。若想顺利处理事务,必须具备优质信息。现在的问题不是信息不足,而是如何在低质信息的洪水中寻找优质信息。最有用、得到最广泛认可的获取方式就是——书本。
人们有自己希望得到的知识或想做好的事情时,就会去书本中寻找答案,从单纯的兴趣爱好,到与从事的工作相关的专业知识,都想涉及。比如说,如果想做好理财,需要阅读沃伦·巴菲特、罗伯特·清崎等在该领域取得杰出成果的大师的著作,从中寻找理财秘诀。只知道秘诀还不够,还要学习他们的理念和哲学。即使不能完全照搬,但可以以他们的方式为蓝本,帮助自己制定计划。
与编程相关的书也是一样的。编程界的大家有史蒂夫·麦克康奈尔、查尔斯·彼佐尔德、斯科特·梅耶斯、本贾尼·斯特劳斯特鲁普等,阅读这些大师的著作可以间接获得他们从业多年总结的秘诀。
学习需要好的老师,书本就是老师的替代品。专业大师的著作就是他们一生的缩影,我们可以以低廉的价格获取他们的秘诀和信息的精髓。需要时可以随时翻书,给后辈讲授自己熟悉的知识时也很方便。不仅如此,学习当下需要的知识的同时,还可以接触其他各种主题和内容。自己知道的主题越丰富,接触其他类型的业务时,就越能比之前更加游刃有余。
除了书本,我还希望大家从公司经验丰富的前辈那里请求指点。如果不方便询问编程知识的方方面面,可以从开发技巧、减少错误的方法、设计的诀窍等开始提问,也可以询问能否直接使用从编程网站上获得的内容。
image编程的学习方法
不仅限于技术方面,程序员无法找到符合自己的正确发展方向时,也可以就这一问题向经验丰富的程序员请教。确定发展方向后,再深入研究相关领域,进而成为该领域的专家。这种在特定领域中成为专家的人叫作“I 型人才”,此后不断扩大知识面,便可成为“T型人才”。自己亲自请求到的指点是量身定做型的,与网上那些片面的知识有很大不同,所以可以帮助我们更上一层楼。
但由于时间和环境的制约,我们并不容易见到大师。此时,通过拜读他们的著作,间接学习秘诀并付诸实践,不失为一个好方法。
任何事都没有捷径。即使走上最慢、最绕的路,最终也会通往正途,这才能走得更远。总是纠结于“走哪条路更快”“哪种方法才正确”,最终将一事无成,这种情况屡见不鲜。与其胡乱翻过很多本书而犹豫不决,不如精读一本。认真“啃”下一本书后,阅读下一本时可能会产生一些变化。所见即所知,从书中看出的东西越多,自己的知识储备就会越丰富。
”
本文内容选自《程序员进阶之路:从码农到中层管理者》。
多年编程经验,今年1月整理了一批2019年最新WEB前端教学视频,不论是零基础想要学习前端还是学完在工作想要提升自己,这些资料都会给你带来帮助,从HTML到各种框架,帮助所有想要学好前端的同学,学习规划、学习路线、学习资料、问题解答。只要加入WEB前端学习交流qun:296,212,562,即可免费获取,学习不怕从零开始,就怕从不开始。
网友评论