课(ke)程(cheng)咨询: 400-996-5531 / 投(tou)诉建议: 400-111-8989
认真做教育 专心促就业
干了40年(nian)程(cheng)序员(yuan)(yuan)(yuan),是一(yi)种什么体(ti)验?一(yi)位从1984年(nian)就开始当(dang)程(cheng)序员(yuan)(yuan)(yuan)的(de)老哥出来“现身说法”了。他总结(jie)了自己从业近40年(nian)的(de)经(jing)验,汇集成13条建(jian)议,希望能(neng)给想长(zhang)期做程(cheng)序员(yuan)(yuan)(yuan)的(de)新手(shou)们提供一(yi)些帮(bang)助。
来自近40年(nian)码农的经验分(fen)享
这位老哥叫NoahGibbs,曾供职于(yu)英伟达、AppFolioInc、DAQRI等多家公(gong)司,目前(qian)就职于(yu)Shopify。
作为一名资深(shen)的软件开发者,他一直活跃(yue)在开发一线。
但与想象中不同,这次他(ta)并没(mei)有介(jie)绍要(yao)学习什么语言或框架,而是指出了一些(xie)他(ta)认为比技术更重要(yao)的事。
(以(yi)下是作者NoahGibbs的(de)口吻叙述)
1、几岁开始都(dou)不晚
大约一年(nian)前,也就是45岁时(shi),我(wo)才开始学习弹钢(gang)琴。这(zhei)一年(nian)我(wo)觉得自己一直在(zai)进步,我(wo)相信如果坚持(chi)下去,到60岁时(shi)我(wo)一定会非常棒。
学(xue)习编程(cheng)也是一样,当你(ni)已经有了一些(xie)其他领(ling)域的背景时(shi),你(ni)学(xue)习编程(cheng)就会变得(de)很快。
相信我,如果你从50岁(sui)开始做程序员,10年后,也就是(shi)你60岁(sui)时,肯(ken)定会比我18岁(sui)的水平好得多。
我遇到(dao)过(guo)很多优秀(xiu)的程序员,他们都是在20岁、30岁甚至(zhi)40岁才入(ru)行,所以我不知道你为什么不能(neng)从(cong)50、60岁开始。这一行需要时间(jian)和工作,但你不必非得(de)年轻。
2、多尝(chang)试(shi)不同类型(xing)的编程(cheng)
如果你刚刚入行,并且想长期从(cong)事编程(cheng)行业,我的建议是:要多写一些软件(jian),任何软件(jian)、写什(shen)么都无所谓。
在(zai)我干(gan)程序员(yuan)的40年里,很(hen)多(duo)潮流(liu)来(lai)来(lai)去去。可以说,让(rang)自己(ji)多(duo)尝试不同的类型的编程很(hen)重要。
这可以使你思想不(bu)会变僵硬,而(er)且(qie)事实(shi)证明,几乎任何(he)一(yi)种规则都能教会你一(yi)些东西。
如果你太(tai)拘泥(ni)于某(mou)一项单独的任务,就很(hen)可(ke)能会失败。
3、不要怕回报(bao)慢(man)
不要觉得自己正在学习的东西是(shi)无用的,因为无用只是(shi)相对的。
我曾经把多年的(de)(de)业余时间投入到(dao)一种叫做(zuo)DGD的(de)(de)旧MUD编程语言中。这当然不是为了实用(yong)价(jia)值,因为几乎(hu)所有关于它的(de)(de)东(dong)西都(dou)是奇怪的(de)(de)和(he)不标(biao)准的(de)(de),很少有真正能应(ying)用(yong)的(de)(de)。
但它(ta)教(jiao)会(hui)了(le)(le)我(wo)很(hen)多,它(ta)教(jiao)会(hui)了(le)(le)我(wo)RubyonRails后来应用的东西,它(ta)教(jiao)会(hui)了(le)(le)我(wo)如何使用数(shu)据(ju)库编程,它(ta)还教(jiao)会(hui)了(le)(le)我(wo)一(yi)些在后来学的5、6种语(yu)言中都能(neng)用上的东西。
有(you)(you)趣的是,多(duo)(duo)年(nian)后(hou)我(wo)在DGD找到了一份咨询工作。这世界上还没有(you)(you)多(duo)(duo)少(shao)DGD的工作,但我(wo)有(you)(you)一个(ge)!这比我(wo)学(xue)过(guo)的许多(duo)(duo)“实用”语言更实用。
就像(xiang)我经常(chang)对(dui)自己说的(de):“现在(zai)还早。”你可以多学习(xi)一些有(you)趣(qu)或有(you)用(yong)的(de)东(dong)西(xi),即使可能十年、二十或三十年后才有(you)回报(bao)。
不要总(zong)是选择(ze)18个月后(hou)就会(hui)变(bian)好(hao)的东(dong)西(xi),因为你(ni)无法预见未来会(hui)发生什么。
4、找到工作对你(ni)的吸引点
你(ni)开始写代码(ma)一定是(shi)因为它(ta)的(de)某些方面吸引(yin)了你(ni),你(ni)要(yao)做的(de)是(shi)试着(zhe)弄清(qing)楚那是(shi)什么(me)。
这个(ge)答案每一(yi)个(ge)人都(dou)不一(yi)样,对于我来说,我喜欢写代码(ma)给我带来的成(cheng)就(jiu)感和聪(cong)明的感觉。
只(zhi)有在(zai)工作中找到足够吸引你的点,才能长期坚(jian)持下去。
如果(guo)你感(gan)觉不到(dao)任何被(bei)吸引(yin)的(de)点(dian),那你可能需要(yao)休个(ge)假(jia),或重新(xin)寻找你喜欢(huan)的(de)东(dong)西,因(yin)为这样的(de)工作只会让你精(jing)疲力竭。
5、这(zhei)不(bu)是短(duan)跑或马拉松(song),这(zhei)是写日记
如果你是个新手,很可(ke)能(neng)(neng)在下定决心“我(wo)要成为一(yi)名(ming)程序员”后,列(lie)出一(yi)个详(xiang)细的计(ji)划(hua),计(ji)划(hua)中可(ke)能(neng)(neng)包(bao)含(han)8个大点、56个小点等等。
我不会告(gao)诉(su)你(ni)不要这么激动,但我要说(shuo):不要把这个计(ji)划太(tai)当真。因为你(ni)不可(ke)能通(tong)过计(ji)算和(he)计(ji)划来完成所(suo)有的事情(qing)。
在某些时候,你并没(mei)有“脱离你设(she)定的任务”,你只是“过着自己的生活”。这不是失败,也不是放弃。
你(ni)无(wu)法预测什(shen)么是有(you)价值的,所以你(ni)应该(gai)学习所有(you)的东西。我的经验(yan)就(jiu)是:你(ni)活得越久,工(gong)作得越好,你(ni)就(jiu)越能意识到(dao)每件事(每个人)都能教给(ji)你(ni)有(you)用的东西。
你不(bu)是(shi)在跑短跑或(huo)马拉(la)松(song)。相反,这(zhei)就像是(shi)在写日记。
十年后(hou),你会翻(fan)看这本日(ri)记(ji)(ji),然后(hou)说,“哇,我做了(le)一(yi)些很酷的事情(qing)”或者“嗯,我是个很有趣的人”,但我想你应该不会在日(ri)记(ji)(ji)上写“我非常擅长”。
6、不(bu)要混淆工作和(he)职业(ye)
不要把工作和职业混为(wei)一谈,它们不是一回(hui)事(shi)。
对于我来说,编(bian)写软件是一项非常棒的工(gong)作,但只(zhi)是一个(ge)还行或者(zhe)可以更(geng)好的职业。
在接受别人的(de)建(jian)议时,也要(yao)注意对方提到的(de)是(shi)关于(yu)工作(zuo)的(de)建(jian)议,还是(shi)关于(yu)这(zhei)份职业的(de)建(jian)议,如(ru)果(guo)你把两(liang)者(zhe)混淆(xiao),这(zhei)个建(jian)议就没(mei)有多大意义了。
7、学(xue)习顺序(xu)并不重要
在刚(gang)入门的时候,你往(wang)往(wang)会得到关于首先学习什么语言或技术的不同建议,但(dan)这(zhei)其(qi)实不重要。
如(ru)果(guo)你(ni)(ni)没(mei)有按老规(gui)矩走,而是开(kai)创了(le)自己的道路,那并不(bu)意味着你(ni)(ni)没(mei)有做好基础工作,也不(bu)意味着你(ni)(ni)就(jiu)很糟糕。
因为如果某件事真的很重要,你迟早都(dou)会发现,并重新去学它。
8、你越(yue)优(you)秀,就越(yue)和别人不一样
早期的程序员(yuan)职业培训(xun)(例如博客(ke)文章、大学课程、书籍)就像(xiang)流(liu)水线,试(shi)图培养你(ni)在(zai)每一个方面的基本能力(li)。
而且新手很容易(yi)误认为,一个首(shou)席工程师需要点满很多技能(neng)、每个技能(neng)水平也必须很高(gao),但事实并(bing)非(fei)如此。
你可以通(tong)过编写一段相当(dang)简(jian)单的代(dai)码并详细地描述它,就像(xiang)PatrickMcKenzie在《BingoCardCreator》中做的那样,也可以通(tong)过写一些真正(zheng)有利可图的东西(xi)来获得尊重。
除了基本的能力之(zhi)(zhi)外(wai),这些道路(lu)几乎没(mei)有任何共同之(zhi)(zhi)处。
这也(ye)是为什么当你求职时(shi)问这样的问题是很蠢的:“我是一名(ming)有15年工作经验(yan)的软件工程师,通常(chang)的薪水是多少?”
15年是如此之久(jiu),以至于你应该形成(cheng)了(le)与其他人不同的(de)优势之处。你写过(guo)(guo)书吗?从事过(guo)(guo)赚钱(qian)的(de)大型项目(mu)吗?整合过(guo)(guo)一个有趣(qu)的(de)开源(yuan)项目(mu)吗?这15年你做了(le)什么(me)?
当(dang)(dang)然(ran),这(zhei)也不仅仅是工资(zi)的问(wen)题(ti)。你可以问(wen):“我是一个有(you)15年经验的软件(jian)工程师,这(zhei)意味着我有(you)能力领导这(zhei)个项目,对吗?”答案(an)当(dang)(dang)然(ran)是“可能”。接下来的问(wen)题(ti)是“那在15年里你做了什(shen)么?”
9、从实践中学习
我不(bu)会(hui)建议(yi)人(ren)们(men)一开始就去学(xue)习(xi)软件设计的深层原理,这是因为(wei)如(ru)果你试图把它们(men)当(dang)作(zuo)纯理论(lun)来学(xue)习(xi),那么几乎肯定会(hui)做错。
对于初学者来说,首先要学会(hui)用(yong)一些实际(ji)的语(yu)言构建一个可用(yong)的软件。不管是哪(na)一种语(yu)言,只有犯(fan)一些真正(zheng)的错误(wu),才能(neng)在错误(wu)中解决问题(ti)。
然后就可以这样循环:实(shi)践,犯错(cuo),学习理论,修正错(cuo)误。
当(dang)然,这(zhei)也并不(bu)意味着(zhe)如果你先学习了理论,你就会(hui)永远变差,只不(bu)过是需要一段(duan)时(shi)间才能(neng)正(zheng)确使用(yong)你所学的知识。
10、使(shi)用什(shen)么技术很重要
如果(guo)你(ni)(ni)想(xiang)在程序员(yuan)这一行做上(shang)几十年,那(nei)么你(ni)(ni)不仅要学(xue)习(xi)(xi)各(ge)种(zhong)各(ge)样的技术,还要学(xue)习(xi)(xi)各(ge)种(zhong)各(ge)样的非技术技能。
举个例(li)子(zi),“学习(xi)至少(shao)一(yi)种函数(shu)式编(bian)程(cheng)语(yu)言”,就像钢琴家“学习(xi)演奏莫扎特的钢琴曲”一(yi)样是必须(xu)的,但同时,学习(xi)一(yi)些编(bian)程(cheng)时所涉(she)及的边缘技术,会为你培(pei)养(yang)额外的洞察力。
11、向其他(ta)领域(yu)学习(xi)
如果我(wo)们(men)的行(xing)业还(hai)很(hen)年轻,这(zhei)意味着(zhe)什么(me)?这(zhei)意味着(zhe)我(wo)们(men)还(hai)在(zai)研究(jiu)基(ji)本原(yuan)理(li)。
你可以从其他领域学(xue)到很多东西。我曾经(jing)(jing)写了(le)一本关于(yu)如何偷(tou)学(xue)艺(yi)术家(jia)练习方法的书,正(zheng)是(shi)因为艺(yi)术和音乐都(dou)是(shi)古(gu)老的学(xue)科,它们已经(jing)(jing)领先计算(suan)机发展几千年了(le)。
所以,如果你遇到了一(yi)个(ge)问题,你可以考虑(lv)一(yi)下其他领域(yu)的人们会如何处理(li)这个(ge)问题。
例如,阿图尔·葛(ge)文德(AtulGawande)的《清(qing)单宣言(ChecklistManifesto)》中就讲(jiang)述了飞行员(yuan)、摩(mo)天大楼建(jian)造者和医生处理问题的截(jie)然不同(tong)的方(fang)式,这些(xie)都是很好的方(fang)法。
12、不要(yao)重复造轮子
众(zhong)所周知,如果(guo)美术家重复画一(yi)个静物、音乐(le)家反复练(lian)一(yi)首(shou)曲子,他们都会越来越熟(shu)练(lian),但程序员不一(yi)样。
在程序员(yuan)中有(you)一个说(shuo)法是“不要重复造(zao)轮子”,我们的(de)工作(zuo)正是想办法让电脑完(wan)成所有(you)的(de)重复工作(zuo),这样我们就(jiu)可以只做(zuo)新的(de)工作(zuo)。
你可(ke)以尝试重新(xin)发(fa)明轮子、可(ke)以故意用“糟(zao)糕”的方(fang)式编写代码,看看会发(fa)生什么。总而言之,你需(xu)要真(zhen)正擅长一些不同寻常的事情。
13、只(zhi)管去(qu)做
我一直在向大家推荐非技术领域(yu)的(de)建(jian)议,而不(bu)是(shi)那些(xie)充斥着(zhe)技术宅们的(de),那些(xie)论坛里充斥着(zhe)最(zui)近才转行为(wei)程序员(yuan)的(de)人那种偏执的(de)热情。
如果你写(xie)程(cheng)序,你就(jiu)是程(cheng)序员,或者软件工程(cheng)师(shi),或者随便你怎么称呼它(ta)。
只要你坚持写下去,你就可(ke)以一直做一个程序员,不(bu)管多少年。无论如何,如果你坚持下去,你就有资格(ge),这才是(shi)最重要的。
【免责(ze)声明】本文部分(fen)系(xi)(xi)转载,转载目的(de)在(zai)于传递(di)更(geng)多信息,并(bing)不代表本网赞(zan)同其观点和对其真实性负责(ze)。如涉及作品内(nei)容、版权(quan)和其它问题,请在(zai)30日(ri)内(nei)与联系(xi)(xi)我(wo)们(men),我(wo)们(men)会予以更(geng)改或删除亂伦(lun)xxxx乱(luan)女在(zai)线(xian)播放,韩国床(chuang)戏(xi)巜(gui)老师的(de)滋味,大荫蒂女人(ren)毛多高潮,成人(ren)做受(shou)黄大片,国产精品搬运相(xiang)关的(de)文章,以保证(zheng)您(nin)的(de)权(quan)益!