程序员如何快速成长?

论坛 期权论坛 期权     
热心用户   2019-5-18 02:34   569   5
在大公司,做项目成长快还是搞研究成长快
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
zhihu用户  16级独孤 | 2019-5-18 02:34:22
不请自来。
概括来说。想要获得快速成长。最重要的是
1.积极主动的工作态度
2.定时归纳总结的习惯。这些不止局限于程序员,也适用于其他行业。
从工程项目上来讲,如果可以积极主动的去跟进项目中出现的问题,多想想自己项目是怎么设计的?有什么痛点和难点,是怎么解决的。其他项目是怎么规避和处理的?有什么更好的解决方式?我的解决方法给项目带来了多大的性能提升?多大的体验优化?或者在可扩展性,可维护性上做出了贡献?

处理完问题后多归纳总结形成方法论,并用这套方法论去持续验证改进

等到这段迭代过程成熟了,你自然形成了在所负责的工程项目里的经验方法体系。这些沉淀下来就是成长,就是珍贵的经验


说到积极主动,意思是在负责自己的模块的时候,可以多主动关心下外网反馈,接口监测数据。往往发生的小问题背后隐藏的是系统深远的故障。逐渐形成自己一套查问题,解决问题的方法。这些体现在解决的思路,能够依赖的处理工具和指令,搜索资料的能力。一个有经验的程序员,也体现在对问题的处理和解决上。这些同样可以进入归纳总结的迭代中,加深自己的工程体系认知理解。这个过程逐渐加深后,解决问题几乎成了条件反射。

曾经听过一个段子。
腾讯内部曾出现了一个网咯故障,这个故障网络部门排查了整整一周都解决不了。最后求助廖大师,他打着游戏连头都不抬不假思索就说了问题的处理方法。结果一试果然解决了。大家都惊呼为神人

当然这种人在我旁边也有。处理问题驾轻就熟,三下五除二捕捉到系统的关键信息,过程中要用到的工具手到拈来。一气呵成。这些都归功于他们遇到问题不逃避,积极跟进问题以及不断总结归纳。补充自己的认知短板

归纳总结的东西可以形成博客,既帮助自己积累总结沉淀,又能和别人讨论交流。有自己思想沉淀的博客或者笔记的技术人。这些在我看来是成为牛人的一个充要条件。
当然不排除有个别人可以在脑子里就完成归纳总结记忆过程。这种牛人就别来我这钻牛角尖秀优越感了

研究领域没搞过,无法给予帮助,期待楼下来回答下。
3#
zhihu用户  16级独孤 | 2019-5-18 02:34:23
要想快,还是要有方向,有规划,我这里有篇回答,讲了技术人员成长的9阶段,可以参考下。
这个很多人都问我,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对你的职业生涯,有所帮助。
1.
刚接触编程的时候,会觉得这是个很神奇东西,平淡的英文字母,再加上标点符号,竟然可以有这么大魔力。会觉得编程是很有自豪感的事情,因为在我们看来,它就是在创造,用这些跳动的字符,创造我们想要的效果。
我当时第一次看到编程的时候,就是这种感觉,我也不知道它是什么,如何做到的,但是就是感觉这很神奇,是一种不懂但是觉得很酷的感觉,然后就会着迷,开始想学。
2.
开始学编程的选择,是没有选择的,因为什么都不懂,可能最先从哪里看到的,就模仿学什么,然后就走上了编程之路。
我最先接触的语言是Pascal语言,当时我不知道它是什么,只知道它叫这个名字。这门语言是在高中的时候,计算机书本上的,我学了一些,与其说是学,还不如是记,因为我没有练过,没有运行过。
3.
走上了编程之路后,学习得方式主要看语法,这个是为了入门,但是并不太知道为什么会这样,但是能用,能模仿,这时候算是入门了。
入门后,会迫不及待的,使用实验各种效果,而且这些结果可能都不是自己写出来的,因为入门了,环境可以搭建,会运行,就会从很多地方拷贝一些代码,运行试试,然后感受成功后的自豪感。
我真正做出来东西的语言是VB,可以通过拖动生成界面,然后再填充需要的逻辑代码,就可以实现一些功能,比如MP3后缀名处理,HTML转TXT,那时候主要的目的,还是满足自己的需要,可以做一些酷的东西,并不是真的把它当成一门用于工作的技能系统的学习它,但是即使这样,已经够我在同学面前自豪了。
4.
真正的在走向工作之前,这时候的学习,就开始系统性,毕竟要决定靠这个谋生了。这时候我们会看一些实战类的书籍,比如如何做网站,通过什么框架,用到哪些数据库、服务器等等,这时候基本上已经走向正路了。
但是这个时候,我们只是会用阶段,大部分人还不知道为什么,比如Spring框架,我们知道这么配置可以用,可以IoC反转,但是不知道怎么实现的,原理是什么。
这个时候最大的特点就是,给分配的工作都能做,不太会的,也可以通过Google、百度解决,大不了拷贝别人的一份,改改即可。
不管怎么样,现在已经初步具备框架系统体系了,可以谋生了。
5.
随着工作时间的加长,经验的增加,你会渐渐的发展,很多常用的知识,自己只会用,但是并不懂,比如内存的分配,类的加载顺序,IoC的原理等等。
这时候大概是工作2年左右,如果快的话,可能会在工作第一年就意识到。这时候你会刻意的去买了一些讲解基础类的书籍,比如以前从来没有认真读完的《Thinking In Java》又开始重读了,并且读的很仔细,还会配合例子测试一下,俨然像一个刚入门的,但是你知道你很清楚你缺少的是什么,想从中学到什么。
然后你可能还会尝试买一些比较深入的书籍,比如讲解原理的,高级特性分析得等等,这时候你会逐步的在你现在的这门语言开始深入,要跨过不光会用,还要懂为什么的阶段,这个阶段是孤独的,因为大部分都是语言特性、原理的学习。
跨过去,就是鱼跃龙门,过不去,就是一个重复的螺丝钉。
6.
恭喜你能来到这个阶段,你不光会用,还知道原理。这个时候可能你已经工作3年以上了,这时候你开始独立负责一些项目,设计都是你来做。这时候对你的考验不光是编程语言本身了,你还会考虑如何让你的项目具备更好的扩展性,如何提高性能,如何和数据库、服务器、缓存等配合,设计出更好的系统。
这时候你可能开始看设计模式,也会研究数据库的优化,可能还会对Nginx研究,以便更好的使用。
这时候的主要特征,就是抽象能力、复用能力、组件化、模块化的提升,同时可以和编程周边(数据库、服务器等)进行更好的协调和搭配,以完成自己的项目设计。
这就是成为高级工程师之路。
7.
现在你来了第7段,这一段是资深工程师,是第6段的加强,并不会有质的突破。
在这个阶段,你会对抽象、架构的理解更深。开始积累更多的模块,形成一个SDK或者一个微服务,你开始深入研究安全,并发,监控。如果你是服务端,你可能会考虑服务双活甚至多活,考虑网关等等。
并且你可能已经开始跨多个端了解业务和架构设计,比如服务端和前端的分离,服务端和终端的协作,开始逐步的从全局(不限于自己的技术栈)思考问题、设计系统。
这个阶段,就是第6段的继续深入,积累,扩展,然后积累到可以突破到架构师。
8.
现在你终于突破到架构师了,你的眼界不在局限在你的技术栈,其他的语言你可能不懂,但是你知道如何使用他们,甚至你自己开始学习另外一门语言。
你设计的系统,不会只考虑自己的技术栈,你可能会选择更合适的技术栈来实现。
你会跨语言、技术栈思考问题,并且可以提出好的方案,比如负责的一个项目,横跨服务端、Android、iOS和前端,你会通盘考虑,兼顾哥哥技术栈,协调大家完成这个项目。
你不光可能完成分配的任务,还能对现有的系统提出更多有建设性的建议,进行优化,改进,甚至提前积累我们业务需要的技术、平台、知识,为我们未来的使用和扩展做准备。
你还会熟悉业务,可能比其他更多的人对业务更熟悉,因为只有这样,才能设计出更适合业务的架构。
你会借助技术负责人的能力,帮你推动协调事情,让你的想法更好的开展和实现。
你的考虑角度,永远都是整个技术部门,而不是再局限在某个项目,某个组,某个技术栈。
那么恭喜你,现在你是一个合格的架构师了。
9.
现在,到了第9段,现在可能你已经做了10年了,你发现,所有的一切技术,都是实现业务的工具。业务才是根本,技术是为业务服务的,如果买个系统就能达到目的,那么是不需要自己开发的。
这时候,你具备了再一次横向扩展的能力,可以横向到产品、市场、运营、设计、测试、运维等,这时候,你就不是一个单单的技术人了。
如果有一个称呼的话,可以是技术总监、技术VP等等。
10.
以上9段,是我结合自己10多年的从业经验,总结的技术人员成长的9段位,其中第5段是比较重要的,也是一个槛,第6,7段是一个积累的阶段,也是培养抽象、架构能力的阶段,这两个阶段,决定了你是否可以到第8段的架构师,所以第8段也是一个槛。
有些人,可能5年多就可以到第8段,但是可能需要10年才能到第9段,这是一个非常困难的过程,需要长期的积累,思想的蜕变,才能成长到第9段。
从第6段开始,你就不能只顾自己了,要更多的考虑协调、协作、体系、多角度。只有做的事情是让整个团队受益的,才能逐渐的突破第7段,进入第8段的架构师。
每一步,都踩实,多思考、多学习,在每个段位,都做一些超出这个段位的事情,很自然的就进入了下一个段位。
更多的要深入交流的,可以加关注公众号「flysnow_org」,加我微信交流。
4#
zhihu用户  16级独孤 | 2019-5-18 02:34:24
版权归原作者所有
商业转载请联系原作者获得授权
非商业转载请按规范格式著名出处
原作者:zhuweisky
原载于: 博客园
原文链接程序员的出路之一
就现在经济大环境而言,很不乐观,程序员的日子也很不好过,无论是还在找工作的、还是已经入职多年、哪怕做到项目经理技术经理的,压力都异常巨大,似乎处处充满危机。但是,仔细分析一下,出路还是有的,甚至解决温饱、过上有房有车没贷款的生活也是很可能的。首先,在如今这个浮躁的社会,大多数人的心态也是浮躁的,只要你能潜下心来,深入研究某个技术,有了一技之长,温饱问题肯定就可以先解决了。
1.一技之长
新技术层出不穷,而内核的精髓的东西却变化不大,就像.NET,从VS2003到VS2012,已经有10个年头,VS的版本不断更新,而.NET内核的最新版本也才4.0,所以,作为程序员,我们要多掌握内核的东西,精髓的东西。
我们的学习积累毛病在于:贪多、贪全、而不够深入。对于很多技术,我们都很有兴趣,对于刚兴起的技术,也紧紧跟随。但是,几乎都是蜻蜓点水、一知半解。回头想想,我们似乎什么都会一点,什么类型的项目都可以做,B/S的、C/S的、数据库的、分布式的,等等,但是,却不敢说,在某某方面,我的水平已经超越了圈中同类型的80%的人。只是我能做的,大家都会做,而且,我也没有把握比别人做得更好。
必须要让自己有价值,而自己的价值在于不可替代性或是难以替代性。如果,随便找个程序员就能把你replace掉,你的价值就很低廉了。如果在你负责的某个方面,只有20%的人超越你,那你的价值、你的重要性就凸显出来了,你与雇主的关系就从被动转向了主动,你就有了谈判的筹码。
在专业化高度分工的今天,一技之长并不是说需要你掌握某个很大的方面,而只需要你能掌握其中的某一个小的领域,并不断地深入下去。就这个小的领域来说,你花个3、5年的时间挤进前20%是非常可能的。比如,有人专门研究SqlServer数据库优化、有人专攻TCP通信、有人深入研究IIS、有人深入钻研WCF,等等。
2.打造自己的精品
当你在某个小领域钻研了3、5年后,你一定会有很多心得,积累了很多经验,其中有些经验是异常宝贵的,为什么了?因为在钻研这个领域一段时间后,会陆续碰到很多问题,而那些80%的人,在碰到某个问题时就停止向前了,在这个小领域的水平就到此为止了,而你却不断地解决这些问题,不断地超越那80%的人。
而且,很可能的一个情况是,作为几年钻研的一个副产品,你积累了一套类库或框架,而基于该类库或框架来开发该领域的项目,不仅开发速度更快,效率更高,而且项目的质量更有保证。然后,你可以把积累的这套类库/框架打造成一个精品,不断的打磨,直到某一天,可以让更多的人来用它。
当你在某一领域有了丰富的经验,或者有了自己的精品类库/框架之后,你便可以面向更广阔的市场。
3.更广阔的市场
在公司做个小白领,你的生死荣禄几乎就完全掌握在你的上司手中,你不得不关注他,被他的情绪所左右,很可能因为他的一句批评,你就整夜难眠。你觉得自己做得很好,可是他不认可。但是现在,你不需要再过分的关注他,你可以将眼光转向更广阔的市场。
互联网时代的一个好处就是,任何人都可以以非常低廉的成本来向大众市场展示自己或自己的产品,评判你价值的不再(仅仅)是你上司,而是整个市场,相比于你的上司,市场的评判会更客观、更公正。你可以把自己的经验能力说明放到自己的博客上、写专业的技术文章来分享知识、顺便推广自己,或者把积累的框架放到网上去卖,或者去项目交易平台接那些与你精通的领域对口的项目,由于在这个领域你超越了80%的人,所以,成功接到项目的可能性是非常之大的。有了这些基础,以后就算是靠技术创业也是有可能的。
如果做到了这三点,我想,你的“有房有车没贷款的生活”差不多就可以实现了。
就我个人经历而言,我花了10年的时间积累了ESFramework通信框架OMCS语音视频框架,单靠它们的收入,满足家庭的生活开销已经足够了。我作为一个普通的程序员,既然我可以做到,我相信后来人也可以做到,甚至做得比我更好。祝福大家。
5#
zhihu用户  16级独孤 | 2019-5-18 02:34:25
碰见难题不要一直搞,会消耗掉你学习的激情与耐力,学会借助外力解决问题.

想了想,我还是要说,不要急于成长,在工作上技术的成长很重要,但跳出工作,我却是活在生活中,有点绕口。总之,生活的中成长远比工作中的成长重要。生活中,工作只占一部分,工作中,技术只占一部分。自在坦然一些,不要因为急于成长而揠苗助长,忽视了其他东西。保持自己的节奏,有些事急不来,其实已经比别人很快了,又何必不知足呢?

好的,我决定了,我要走我自己的忍道,一条绝不后悔的道路,勇往直前的走下去。—鸣人
6#
zhihu用户  16级独孤 | 2019-5-18 02:34:26
[h1]从三流小公司到一线大厂,聊聊程序员的成长之道[/h1]我想,没有一个程序员能够一步登天,一下子达到很高的高度,有些路是我们必须要走的,有些阶段是我们必须要经历的。有入门,才有进阶,才有更上一层楼。
别看我现在在大厂,但是我也待过小到不能小的小公司,也许你会感兴趣,那么不妨听我说说,我在学习编程路上待过的公司吧。
[h1]不到20人的小公司[/h1]我在大学的时候学的不是计算机,上的课程基本上和计算机也没太大关系,但是我从小还是比较喜欢捣鼓电脑的,不瞒你说,以打游戏为主,修电脑为辅。
兴趣使然,于是大学期间想要自学编程,但是无从入手,于是让家里人介绍了去了当地一个小公司学习php,对,就是那个世界上最好的语言。
公司一共就10多个人,大老板就在旁边办公。当时我对计算机语言的认知是:Java好像很火,php没听说过,上班(学习)之前只在w3cschool上看了一些简单的教程,然后就自信满满地去公司实习了。
结果一看公司里的代码就懵圈了,这啥玩意啊,我学的怎么都用不上呢。再看看其他人,都很熟练地写着php代码,所谓的“师傅”压根也没空搭理我,索性我就开始自学,学了几天html和css,写了几个小页面就开心得不得了,给我师傅一看,他特别鄙夷地看了看,然后再也没管过我。
一个月之后,我就开溜了,当时主要也就是想体验一把程序员的生活,顺便学习一下世界上最好的语言。
这么一体验可把我打击坏了,原来写代码这么难啊,这么小的公司代码我都看不懂,哪有可能去大公司啊。
所谓初生牛犊不怕虎,大概也就是这个意思吧,无知可怕,但一直无知就很可怕了,后来有一个契机,让我再次接触到了编程。
[h1]500人左右的公司[/h1]大三的时候交换了一段时间,学习了几门编程语言,像Java、前端、php、Android等技术都接触了一些,算是对编程有了比较具体的理解,特别是在Android课程上,写app让我特别有成就感,那时候我就想,我以后就搞Android吧!
当时想法很单纯,感觉搞app有意思呀,于是想找一份Android的实习,我们家那边的IT公司本来就不多,稍微大点的也就一个,几番争取之后,在这家公司也获得了一个实习机会,只不过当时他们不需要Android工程师,于是安排我做Java Web,于是我和Java Web就这样结下了梁子,以至于我后来就在这条路上走到黑了。
这是我大学毕业那个暑假参加的实习。因为当时已经考上了研究生,所以想积累一点实习经验。
这个公司比上一家靠谱一些,当时用了一些框架,还需要我自己写前端代码,那时候我基本也是0基础的状态,一边学Java语法,一边学html、css、js,然后还要完成部门安排的新人作业。那时候感觉自己真的菜啊,隔壁几个学历不高的小哥哥都可以熟练上手,各种开发,我还一脸懵逼,无从下手呢。
那时候我学会了向技术大牛提问,用有道云笔记做笔记,以及使用eclipse,也算是误打误撞地入了门,当时觉得Java Web好难啊,我要去做Android开发,不过最后还是没有等到机会,于是呆了两个月就走了。
然后,我就开始念研究生了。
[h1]网易和百度[/h1]在读研之前,我是没有想过我能进大厂工作的,我记得大四的那个招聘季,投了我们省内的一些公司,罕有面试机会,有面试机会的岗位也都没有通过,当时仗着自己有Java实习经验就去投Java岗位,结果各种吃闭门羹,其实都不是什么有牌面的公司,但是却都拒绝了我,可见当时我的水平有多次。
于是从研一开始,我终于确定了Java这个方向,并且疯狂补基础,计算机基础、Java后端技术栈,需要什么补什么,大厂怎么要求我就怎么学,可能是我的执着也感动了我自己,后来就拿到了网易的实习机会,再后来也拿到了百度的实习机会。
在网易实习让我过了一把大厂瘾,当时去实习也就是打打杂,做点边边角角的任务,但是已经很震撼了,大型项目用到的技术、代码量、架构设计、标准业务流程,都让我很兴奋,不过当时光顾着兴奋了,没用到多少资源西就走了。
百度是第二次大厂之旅,相对来说没有那么兴奋,但是百度的技术还是比网易要靠谱一些,能学到的东西也更多,部门的技术栈虽然和我不是很搭,但是作为热爱学习的我来说,还是愿意花时间去学习的,在百度呆了半年,说实话技术没提升多少,其他的东西倒是学习了很多,比如百度自研的一些技术,以及部门在用的OpenStack和docker。
有了两段大厂经历加持之后,秋招也变得顺风顺水起来。最后能拿到不少大厂offer,我想是时间帮了我最大的忙。
[h1]总结[/h1]有时候成长是不会一帆风顺的,也很少有人能够一步登天,程序员也是如此,是需要在长时间的积累、实践、总结中不断提升的,很多大厂里的大牛,其实也是从小公司一步一步走到今天的,所以,你未来的可能性,需要靠你每一步脚踏实地地去把握,每一次进步其实都很重要,时间不会辜负你的努力。



http://weixin.qq.com/r/6CrYwAHEe1wErUWj93-6 (二维码自动识别)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:64547
帖子:12910
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP