给新程序员的10条建议

(注:本文曾发表于《程序员》201509A期)

我最开始不是做软件开发的,是一个售后技术支持工程师,你懂的,就是公司卖出的设备坏了,我就到现场去鼓捣两下,换个零件,重启下系统什么的。后来我转行做软件开发,颇经历了一些曲折,遇到了很多实际的困难,再后来我成了程序员,干上了手艺活儿,就这么一路过来了,还出了两本书,《Qt on Android核心编程》和《Qt Quick核心编程》。

后来我也和一些刚入行的开发人员共事过,有的朋友可以很快度过适应期,有的朋友则会花费比较长的时间,遇到各种不那么酸爽的事儿。你知道,我是一个爱瞎琢磨的程序员,根据我的个人经验和我观察别人的结果,我发现,如果一个新手可以坚持并实践这么几点,就能够很快从青涩变成熟,完成最初的角色转变,融入到让你欢喜让你忧的软件开发工作中来。

接纳自己是一张白纸这个事实

我觉得这是一个首要的前提。也许你很优秀,有很强的学习能力,有强大的信念,有超强的小宇宙,有百折不挠的韧性……但是,你没做过,你确实是一张白纸。这是一个客观事实,我们必须要要承认。我们所做的一切,都是在接纳现实的前提下展开的,唯有承认这一点,其它美好的事情才有可能。

我们平静的看待这一点,不要妄自菲薄,也不要好高骛远,从一条线开始,慢慢绘制自己的蓝图,一切可能就会慢慢变成现实。

关注自己能做到什么

我们是一张白纸,但我们还是可以做很多事情,我们通过学习,将能做更多事情。我们会遇到各种各样的问题,会产生自己这个不会、那个不会,可能安装一个IDE都会出问题,可能三行代码都会遇到10个编译错误,可能Run起来你不知道结果是对是错是否符合预期……这都没关系。

我们要看自己今天做到了什么,明天又能做到什么,一周后能做到什么,一月后能做到什么。我们关注积极的方面,不要因为各种挫败而将自己陷在不良情绪的泥潭里,自怨自艾、自我否定、羡慕嫉妒恨、失望、沮丧……这些情绪都是我们的敌人,都是有不良居心的魔鬼,它们只会坏我们的事儿。我们要逃离它们,不给它们机会,我们的对策就是,看我能做什么,看我将来能做什么,看我需要做哪些事情才可以达到明天、下一周、下一个月的目标。这样我们就能积极行动起来,就会把时间花在有价值的地方,我们也会慢慢更有价值。

如饥似渴地学习

我们是一张白纸,就要如饥似渴地学习,抓住一切机会学习,读书,求人,读代码,上班8小时,下班还有更多时间,我们可以把一切可以利用的时间都投入到相关知识和技能的学习中来。

当你连一个DEMO都不知道如何创建,当你连一个Hello World都跑步起来,当你弄不懂变量、操作符、函数、对象、类、实例、控制语句,当你不知道那些被老手们当做常识的递归、链表、单例、观察者、MVC、CRUD、RBAC……你唯一能做的,就是把自己变成一块干燥的海绵,持续不断地去吸收各种知识。

这个过程是快乐的,幸福的,你会发现随着你掌握的知识越来越多,随着你能解决的问题越来越多,你会发现今天的自己和昨天的自己不同,这个月的自己和上个月的自己不同,每一天、每一周、每一月都是一种惊喜。就让自己变成一个小孩,收获简单的快乐。

别怕犯错

很多新手怕犯错,其实不必。犯错不等于失败,犯错也是一种学习。

我们不必担心别人因为自己犯错而看轻自己,要知道,此时此刻我就是一张白纸啊,我没有经验啊,我什么都不会啊,我不犯错才是奇怪的事情。

就像小孩子蹒跚学步,跌倒是很正常的事情。可是它会在跌倒中收获宝贵的经验,摔几次,摔几天,它就学会了。

犯错一点儿也不可怕,可怕的是不总结、不归纳、不吸取教训。

迎难而上

我遇到一些新入行的朋友,面对一个任务时会畏缩,说这个我不会啊,说这个我从来没弄过啊,说我搞不定啊……

当然会遇到困难!作为新手,你遇不到困难才是见了鬼呢。要把困难当做机会,只有做你眼下搞不定的事情,你才能提升,你明天才能搞定更多的烂事儿。

所以,要迎难而上,把困难当做猎物,当做锻炼的机会,要见猎心喜,用于挑战自己。

记录问题和心得

我觉得这一点非常重要。在初始阶段,记录遇到的问题,记录学习心得,总结解决问题的经验,将会对我们后来的进步提供非常大的帮助。我们要模仿牛的反刍,不断从有限的实践经验中总结、消化,获得更多的营养。

同时这也会帮助我们养成良好的工作习惯,良好的习惯,会让我们终身受益。

适时求助

有些人喜欢闷头黑搞,搞不定也吭声,要么把困难扔在那里不管,自己也停在那里,要么继续黑搞,东搞搞西搞搞始终搞不定,停在那里。

我觉得应该给自己设定一个期限,在期限到达时还搞不定,就向别人求助。

向别人求助是正常的事情,每个人都可能会求助别人,一个人不可能搞定所有事情。不要担心别人太忙没时间帮你,也不要担心欠别人的人情。要知道“帮助别人”这件事本身,就是一件快乐的事。在帮助别人的过程中,提供帮助的人会收获快乐。多数程序员都很乐意帮助别人。真的。你获得了帮助,你在遇到别人的求助时也乐于提供帮助,这就够了。别的不用想太多。

提前告知上级你真的不能搞定

没错。就是这样,一旦你经过了种种努力,确信自己不能搞定手头的事情,一定要尽早告知你的上级和小伙伴。

一个软件项目的周期,通常是由最晚结束的那个任务决定。

假如你是一个新手,碰巧Take了一个任务,你当然不希望自己的任务是最晚结束的那个。可实际情况表明,你有很高几率扮演那个角色。我要说的是,你需要清楚判断自己手上的任务的状况,如果你真的不可能搞定(或者不可能按期搞定),一定要提前告知你的上级,把你的状况、任务的状况都说明白,这样你的上级才可能有时间做必要的调整(比如分配新的资源、延长时间等)来应对可能的项目延期。如果你在最后一刻才告诉别人,那就没有补救的机会了。真的。

别担心别人看轻你,即便经验丰富的优秀程序员,也会碰到搞不定的事情。软件开发的性质就是如此,永远会有超越你能力边界的问题蹦出来。这很正常的,让别人知道,让大家能想办法补救,这就是很好的措施。

向优秀的同伴学习

三人行必有我师。

想让自己变优秀的一个好办法就是和优秀的人走在一起。

你一定要知道(自己观察、别人告诉你、上级告诉你)你所在的团队中的哪些程序员在哪方面比较优秀,比如张三代码简洁能自解释,比如李四设计能力强,比如王五总能搞定技术难题,比如赵六具有卓越的影响力,比如钱八善于分析问题,比如赵十能深入浅出的讲解技术问题,诸如此类,如果你能够清楚,一方面可以在自己遇到问题时向正确的人求助,另一方面,你也可以主动学习。

见贤思齐,自古就是这个道理。有时很多变化是在潜移默化中发生的,你所处的环境、你交往的人,往往会以润物无声的方式影响你。孟母三迁,只为择邻,就是这个道理。

让上级为自己指定导师

如果可能,让你的项目经理或者领导为你指定一个导师(mentor),让导师来帮助你制定你的阶段目标,并且让他来指导你达到目标。

有个实践,叫OJT培训(On the Job Training)。不过不一定每个公司都运用这种机制。如果你所在的公司没有,那可以让上级给你找一个导师,或者自己找一个。

有经验的导师,既能引导你少走一些弯路,又不会越俎代庖直接帮你把事情搞定。这样你就会自己走在正确的方向上,在节省不必要的精力浪费的同时,又能自己收获实作的经验。



更多精彩文章,参看“漫谈程序员”专栏。

我开通了微信订阅号“程序视界”,关注即可第一时间看到我的原创文章以及我推荐的精彩文章:

版权声明:本文为foruok原创文章,未经博主允许不得转载。

时间: 2024-08-08 05:03:00

给新程序员的10条建议的相关文章

程序员的10条建议

我最开始不是做软件开发的,是一个售后技术支持工程师,你懂的,就是公司卖出的设备坏了,我就到现场去鼓捣两下,换个零件,重启下系统什么的.后来 我转行做软件开发,颇经历了一些曲折,遇到了很多实际的困难,再后来我成了程序员,干上了手艺活儿,就这么一路过来了,还出了两本书,<Qt on Android核心编程>和<Qt Quick核心编程>. 后来我也和一些刚入行的开发人员共事过,有的朋友可以很快度过适应期,有的朋友则会花费比较长的时间,遇到各种不那么酸爽的事儿.你知道,我是一个 爱瞎琢磨

给php程序员的40条建议 优化你的php代码(一)【转载】

给php程序员的40条建议 优化你的php代码,这些经验是资深php程序员多年的积累结果,经验之谈,对php开发者有很好的指导意义!搜集如下,可以时常翻出来看看. 1.echo 比 print 快. 2.尽量避免使用__get,__set,__autoload. 3.$row[‘id’]的效率是$row[id]的7倍. 4.尽量采用大量的PHP内置函数. 5.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍. 6.如果一个方法可

禅道程序员的10条原则

英文原文:The 10 rules of a Zen programmer 在一个阴雨的早上,我坐在桌子旁,开始想如何才能高效的工作.在我成为一个自由职业者之前,我有很长一段时间都很努力工作,但收效甚微. 我在 2006 开始接触禅学.我马上意识到:古代的禅宗大师们几百年前早就已经知道现今的程序员应该如何工作.虽然我很讨厌“如何成为一个更好的程序员”之类的文章,但我仍旧想分享一些我的想法.它对我来说起到个提醒的作用,如果你有什么想法,也请留言. 0. 专注 Focus 如果你决定开始工作,请尽力

如何提升你的能力?给年轻程序员的几条建议

收藏自腾讯开发平台:http://gad.qq.com/article/detail/7151319 一转眼工作已有8年,前两天公司一位初入职场的同事希望我给一些建议与经验.我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发. 我工作过的公司有4家,NVIDIA, Google, Slide和Glow.其中两家是知名的大公司,Slide我是D轮过后加入的,那时约150人.Glow则是从它第一天创立,一直走到现在.个人的工作也从Developer,Tech Lea

[好文推荐] 给年轻程序员的8条建议

看到一篇写的很好的职业生涯建议,想想真的是这些道理. 翻译如下: 如同儿歌 "Ooh La La" 所唱的一样,我多希望年轻时就懂得现在才领悟的那些道理呀.那时候,我心里只有代码,才不会去想想自己的职业人生,也不会去主动维持良好的朋友关系.要是有人指点一二,那能少走多少弯路啊! 1.保持联系方式 我刚毕业时一门心思都扑在计算机上,如果谁将我和心爱的电脑隔离我甚至会很反感.好吧,这样说可能夸张了一点. 尽管那时候就认识很多行内知名的专家,也参加各种交流会议认识很多值得做朋友的人, 但很可

【转载】程序员跳槽10个建议

这个月我将再一次面临我的新工作.首先我必须要承认,我每次跳槽,都特别焦虑.这是一次痛苦的经历——因为我需要从一个我已经完全熟悉的地方转移到另一个全然陌生的场景.值得庆幸的是,下面有一些小诀窍有助于我们更快地过渡到新的角色. 1)要有耐心 不要指望能在一两个星期内就学会一个代码库.通常而言,大型的代码库和系统是需要几个月的时间才能够充分理解.所以,别着急,尽力学习的同时也不必给自己施加压力非要立即掌握所有. 2)要谦虚爱学习 对自己不熟悉的工具和方法要抱有谦虚的态度.新的工作就意味着学习新的东西.

[转]如何提升你的能力?给年轻程序员的几条建议

转自 http://tech.glowing.com/cn/advices-to-junior-developers/ 一转眼工作已有8年,前两天公司一位初入职场的同事希望我给一些建议与经验.我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发. 我工作过的公司有4家,NVIDIA, Google, Slide和Glow.其中两家是知名的大公司,Slide我是D轮过后加入的,那时约150人.Glow则是从它第一天创立,一直走到现在.个人的工作也从Developer

成为优秀程序员的101条建议(2)

33. 不断增强你现有的技能 如果你现在掌握一项技能就应该去运用它.除非有意识地进行改进,否则技能会随着时间的推移而逐渐消失,而且这个行业发展非常迅速,持续练习也很重要.要摆脱“我一直都是这样做”的心态,并进入“有更好的方法来做到这一点吗?”的思维方式. 如果你现在有一大包甜甜圈,这并不意味着你每天都可以吃一个??并长期保持这种状态. 34. 了解背后的原理 有时你必须表达自己的意见,因此了解其背后的原理非常重要.为什么解决方案 A 比解决方案 B 更好?提供有效的论据,你的意见将更加健全. 3

给Java程序员的几条建议

对于Java程序猿学习的建议 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是LZ你是如何学习Java的,能不能给点建议? 今天LZ是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,LZ要先声明两点. 1.由于LZ本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请