一本开源的程序员快速成长秘笈

写在前面html

前几天和 PPMoney 万惠集团董事长宝叔以及几个合做伙伴一块儿吃饭,席间宝叔戏言引用一个段子来描述我的成长:读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路,名师指路不如本身去悟。静下心来想一想,这总结还真挺有道理,回头看看本身走过的路,从懵懂少年第一次厚着脸皮向数学老师讨借 Basic 语言编程指南开启 programming 生涯到如今混迹于金融和技术跨界领域,历经了那么多时光岁月艰难坎坷喜悦快乐,读书也好,行路也好,名师也好,领悟也好,都是本身成长道路上不可或缺的重要元素。程序员

若是我有机会把这条路从新再走一遍,有没有一些灵丹秘方能够借鉴让本身发展速度更快些呢?之前有一本叫“杜拉拉升职记”的小说指引了不少初出茅庐的小白领一步步走向职业的高峰,对于技术屌丝儿们,我们是否是也有个快速成长的葵花宝典能够借鉴呢?今天让咱们来聊聊这样的一个秘笈,它来自于我本身多年以来的感悟以及对身边成功技术大牛们的观察,但愿可以给年轻程序员们带来一些帮助。编程

程序员成长框架设计模式

这个秘笈最核心的精髓在这个成长框架里:养成良好的职业习惯不断提高本身的基本能力。网络

首先是养成好的职业习惯。你们也许看过那本《成功人士的 7 个习惯》,对于程序员来说,下面这几种习惯可能更加有针对性:架构

  • 第一是对新鲜事物和技术的好奇心。技术世界的最大特色就是变化,强烈的好奇心会驱动一个程序员不断学习研究最新最早进的技术和架构从而让本身处于领先地位,这种好奇心也能够帮助咱们成为一个优雅的懒人,经过探寻最有效的解决方案来减小无聊的重复;框架

  • 第二是要有一个积极勇敢的心勇于接受挑战。别人不敢作的事儿你敢去作并把它作成了,一方面你得到了很是宝贵的第一手经验另外一方面只有你才能完成挑战必将给他人带来极为深入的好印象;dom

  • 第三是要可以持久坚持不轻易放弃。不少事情看上去不容易,可是若是你咬牙坚持不懈把问题最终给解决了,你的功力会上升到一个崭新的层次;编程语言

  • 最后一个习惯我以为最重要,那就是把工做变成一种快乐。若是你以为作技术很痛苦,最好仍是尽早离开这个领域,只有你工做和玩儿同样的,你不只仅是获取了快乐,你的技术能力也会永不疲倦地提高再提高,我总以为搞技术和玩电脑游戏同样,都是不断地练功找宝贝(写代码)和打怪兽(找 bug)嘛。工具

有了良好的职业习惯,你还须要不断提高本身的基本能力,对程序员(技术岗)来讲:

  • 第一种能力是 技术能力,这个是和职业最直接相关的能力,是咱们作设计、写代码、解决技术问题的能力,是咱们之因此被称为工程师而不是销售或者客服的硬能力(hard skills);

  • 第二种能力是 和人相处的能力,也叫作软能力(soft skills),是让咱们如何更好地和他人协同工做;

  • 第三种能力是 业务领域(business domain)能力,计算机程序是用来解决问题的,若是你了解并可以提出业务需求,你的综合实力会更强大;

  • 第四种能力是 管理能力,能让更多的人有条不紊地齐心合力作好一件大事儿,能把一我的的能力放大无数倍;

  • 最后一种是 学习能力,是前面四种能力的爷爷,这个强了其余能力的提高会更容易。篇幅有限,这里没办法把每种能力描述得很透彻,但你必须充分理解这些能力的含义,由于一个程序员不一样职业生涯阶段都是这些基本能力不一样程度和级别的组合结果。

因此,咱们说一个程序员的职业生涯,其核心就是把上面这些习惯越练越熟最后成为本能反应,同时把上面的各类能力不断从菜鸟升级到大师的过程。

了解了基本的成长框架,咱们看看程序员在不一样的成长阶段该如何利用这个工具自我发展。

程序员初长成

大部分的程序员是在读大学或者第一份工做开始技术生涯的,咱们能够从技术初长成、从业行业与领域的选择、选择什么类型的公司来展开讨论。

技术初长成

这个阶段的核心是如何能尽早地开始职业化(professional)编程。所谓的职业化,也就是按照一个合格的职业程序员的标准来写代码,这包括良好的编程风格、采用流行的编程框架、专业的调试方法、规范的文档撰写以及坚持不懈不解决问题毫不休息的习惯等等。你不能仅仅是把老师安排的做业完成了,把领导安排的业务逻辑给实现了,你要可以作到写出的代码和你们公认的好的程序员基本接近。

选择一门编程语言是第一步。别老跟我说 PHP 是世界上最好的语言(哈哈哈),至少我能够告诉你,PHP 多是当前职场里不很值钱的语言。。。若是你想把技术作得更深点,我建议你把一门面向对象的语言(如 Java)学透彻,由于你不光是要用这个语言来解决实际问题,你还要经过不断研习大师们的开源代码来提升本身的编程能力,资源越多的语言你能够参考的东西越多,同时,若是你能把这样的语言理解透了,那么其余任何一门语言你均可以很快掌握。好比说我本身吧,从 C++++ 学起,弄明白了后学什么(包括 Java)都比较容易,先后在实际工做中起码用过 8-10 种以上的编程语言。

学会了基本的编程,接下来要学会如何尽早地往职业化发展。若是你还在学校里,碰巧不幸你的计算机老师或者是没作过职业程序员或者是心不在焉精力没放在教学上,你应该尽早经过去校外公司兼职提前作职业程序员作的事情,只要你作的东西不是儿戏,你就会感受到职业压力,你就会更早地走上职业的道路。好多科班出身的人看不起编程培训学校(哈哈哈),其实这些学校也是蛮有价值的。我一个学计算机的亲戚大学三年都在玩游戏,大四的时候有点慌了,赶忙去学了四个月的培训学校,提前感觉“职业化”熏陶,最后轻松找到满意的工做。

我对我们大学教育一直是小失望的,大学生们不少宝贵的时间都浪费了,若是可以更早地教授他们职业化编程能力,他们毕业的时候会具备更高的价值。若是你是在第一份工做里开始接触编程,那么你能够多和公司里的编程高手学习,看看人家在解决一样问题的时候是怎么写程序的,仔细想一想为何人家的思路比你本身的更优秀,不断模仿不断思考不断提升。

在这个入门阶段,若是你能有一个严师或者对你要求苛刻本身又特别想作出成绩的上司,那是你的大幸,他对你要求越高越挑剔你的成长速度越快。有这样的人天天在后面鞭策,你敢于接受挑战毫不轻言放弃的好习惯会快速创建,你的技术能力也会迅速获得提高。我当年很幸运地碰到了至少两位这样的老板,他们给个人信任和压力为我早期的成长带来巨大动力。后来我作管理的时候,我把这套激励体系充分施展开来,个人团队成长很是快。你要相信本身无穷的潜力,尽量去找一个严格苛刻给你充分压力和信任的老板开始本身的职业生涯,这个算是名师指路那个我的发展武器吧。

入门阶段绝对离不开编程以及设计方面的书籍,去找几本经典书仔仔细细完整地读下来,啃一本是一本,怎么都比不看要好太多,刚开始可能会很辛苦,可是你一旦完成一本,未来看书的速度会愈来愈快,这也能够提高本身不轻易放弃的良好职业习惯。咱们 PPMoney 研发团队就要求每一个技术人员每一年必须看完一本书读完一个开源代码,习惯了之后,其实蛮简单的。

行业与领域

若是你关心投入产出比,你应该选择一个将来有前途的行业或领域,好比互联网和人工智能。对于在传统金融领域作了 10 几年最近才加入互联网行业的我来讲,互联网 +(我这里是互联网 + 金融)以及人工智能 + 有无限的发展空间以及太多的机会,选对了行业可让本身得到更好的职业回报。

选择什么样的公司

大公司仍是小公司,民企、国企仍是外企,这些我有幸都经历过,应该说各有各的特色选择哪一类都 ok 的。选公司除了公司实力之外最关键的仍是这家公司适不适合你早期的成长。一个充满激情的、忙碌的、有梦想的、每一个人敢于承担责任的公司能够培养出优秀的技术人才。不少年前我在杭州待过的一家叫超软的小公司,经营的并非很好以致于老早就不存在了,远远比不上那些国际化的大公司,可是她具有上面描述的那些好公司的特质,培养了好多如今国内顶尖公司的 C++XO 级别的大牛(不是我哎。。。)。

进阶阶段

这个阶段通常是在你职业生涯开始 3-5 年之后,具有了基本的职业素质,你在不断巩固本身良好职业习惯的同时要进一步提高各类基本能力而且要时刻准备抓住各类职业晋升的机会。

技术能力方面,你要开始提高技术的深度和广度。你要积极主动接受挑战啃最硬的技术难题,在工做中积累对技术本质的理解;你要习惯性看各种大牛的代码,学会判断什么是好的什么是差的;你要学会用更少更精致的代码完成任务;你要学习不少设计模式,掌握解决各种问题的套路;你要开始深刻各种架构,不断提高本身的设计能力;你要学习多种语言,选择最适合解决问题的工具;这是一个逐步梳理本身对技术的理解,从无序到有序到套路满满的过程。

这个阶段,你要学会“懒惰”,不要重复作简单无趣的工做,哪怕有也要想着法子写出一个工具去简化去偷懒。我之前一个团队继承了不少 ETL 的代码,咱们有几十个程序员在作着枯燥无聊翻译业务逻辑成 ETL 代码的工做,“懒惰”驱动我写了一个给需求分析师制定业务逻辑的工具,业务需求写完了,程序也就完成了。为了把这样的工具作出来,我找了一个叫 Pentaho 的开源工具,把核心代码完全读透读懂,而后个人 SmartETL 也就横空出世。要学会站在巨人的肩膀上,多看人家的代码,你的设计能力编程能力都会愈来愈强大。这么作其实也是工做就是快乐的良好习惯天然驱成。

若是你想往技术管理方向发展,这个阶段你要开始锻炼本身的管理能力。对于技术类管理,我喜欢一种诠释:管理是把一我的能力放大的能力,经过协调更多的人作更大的事。也就是说好的技术管理者,首先是要具有较深较广的技术能力。管理最重要的一个基本要素是责任心。哪怕你目前还无论人,你必定要养成一个良好的习惯可以有担当,你要可以拍着胸脯跟你的 leader 说:这事儿包在我身上你放心。一样的话,你当 leader 后能够和经理说,当上经理后能够和总监说,当上总监后能够和 C++TO 说,当上 C++TO 后能够和 C++EO 说,当上 C++EO 后能够和董事长说。有了这种勇于担当的勇气和习惯,相信你一直会成为你的上司最器重最欣赏最努力栽培的人。

业务领域能力方面,你应该让本身跳出技术的 comfort zone,把本身的知识面扩展到产品以及业务层面,你越了解公司的业务,你的设计越柔性越能应付系统往后的扩展,同时正由于你可以和业务老大讲一样的业务语言,你的价值会更早地被公司管理层发现。拿我本身的例子,当年我在金融公司作风控系统,为了把系统作得更好,我读了个金融方向的 MBA,结果不少业务需求我本身就很容易去写,不少业务上的金融模型我也能够去作,后来的路绝对是宽太多去了。

能力的提高不能担保你必定能在公司获得职位上的提高,你还要学会如何抓住转瞬即逝的机会。作别人不敢作的作很差的对公司相当重要的事儿,把现有的性能提升 10 倍,在公司最困难的时候提出一个切实的解决方案并帮助公司走出难关,作出远远超过公司给你的回报的业绩。。。只要你可以作出远远超过别人预期(Expectation)的事情,你就能紧紧抓住晋升的机会。你对新技术充满好奇心,你敢于接受挑战,你坚忍不拔永不放弃,这些逐步养成的良好职业习惯配合你日益强大的基本能力,再加上你时刻准备好积极寻求机会的心态,不想获得晋升都很难啊。我之前在那家外企,当时业务想建立一个新的金融模型,没人作的出来也没人敢去作,我当时好开心,机会啊,不要白不要。花了一个月的时间天天 13-14 个小时的努力,最后东西作好了,本身能力提高了,大大超出业务的预期了,想不获得提高都很难是吧。

这个阶段你还须要不断扩大本身的人脉关系网络。单纯一我的的成功是比较难以实现的,你要学会借助他人的力量,学会整合资源,学会从和他人的交流中获取灵感。你必定要多参加技术交流,好比 QC++on 或者其余各类线下线上形式的活动,要能厚着脸皮和人家谈上第一句话多结交朋友。你逐渐积累的关系资源会为你未来的成功提供坚实的支持。

关于跳槽

尽管我从大二开始的第一家公司到如今,前先后后经历了 5-6 家公司,我仍是想建议你们若是选好了公司轻易不要跳槽。你在一个公司至少得花上个 3-4 年来深化本身的职业能力,创建本身的人脉,深刻了解一个行业。只有当你以为目前得公司不适合你的发展了让你再也不有 passion 了你再选择换一个公司发展。纯粹从一个招聘经理的角度来讲,若是一个候选人常常换工做,咱们会认为这我的不够踏实或者人品能力有问题,这样的人很容易被 HR 直接 pass 掉。

C++XO 的技能

少数人职业进一步发展会晋级到 C++XO(C++IO/C++TO/C++OO/C++EO)级别。那么 C++XO 须要哪些能力准备呢?在前面所说的能力以外,C++XO 必定要具有战略眼光,他们要在本身的职能领域给你们指明方向,他们要可以发现、招聘并培养公司须要的人才,他们要学会如何搭配合理的团队架构并经过有效的激励制度让公司健康成长,C++XO 们还要具有良好的人格魅力,可以很天然地把团队凝聚在一块儿。 对于技术方向的 C++IO/C++TO,除了本身专业领域足够强之外,C++IO/C++TO 必需要深入了解业务而且用技术的力量帮助 C++EO 把公司的业务发展壮大。

作一个快乐的更全面的人

一个优秀的技术人员绝对不该该是简单无趣的技术屌丝,我我的信奉的理念是 work hard play hard and be a fun person。让工做自己成为一种快乐的形式,工做以外也可让各种爱好丰富本身的生活。

 

 

 

 

转自:https://www.test404.com/post-1462.html

相关文章
相关标签/搜索