程序员自我发展之路:从态度到方法

三周前,正值手头事情忙得不可开交之际,接到右总邀稿,要我谈谈程序员发展的几条出路。我思考再三,索性趁此机会干脆行文一篇,把自己多年来给团队的唠叨整理整理,也算不负他人之托。

事先声明,本人并非专业的职业规划师,也不喜欢给人的职业生涯出谋划策,这里所写所言只不过是一位经历还算得上丰富的老程序员的所见所得。各位只需看看就好,若能引起共鸣,那更是不胜荣幸!

选择大于努力?

有段时间经常在朋友圈内看到类似“选择大于努力”的论调,甚至看到不少朋友还不断的转发和点赞。一开始我受到影响也心有戚戚焉,但后来觉得似乎哪里不对:

  • 如果没有丰富的阅历和经验做支撑,根本不可能做出很好的选择,而前者不会从天而降。
  • 有的选择机会是有门槛的,不努力的话,连门槛都达不到。
  • 一目了然的选择也不太可能是好选择,因为大家都会去选它,自然会引发激烈竞争。
  • 选择并不意味结束,它只是开始,在执行过程中不全力以赴,也是枉然。
  • 退一万步,就算有贵人相助,但除非含着金钥匙出身,要得到贵人的认可和相助也不是件易事。

鉴于以上几种原因,不努力,大概率也会导致不会或很难有好选择。可以说,不论走哪条路,发展的起点都要努力为先。之后,在执行过程中,按照自己的兴趣和机缘会各自走上不同的道路。

尽快确定方向

但是,光靠努力并不能让你就一定得到很好的结果,如果没有目标或方向,那就是白费气力,心中的阴影面积会越来越大。所以呢,你第二个要解决的紧要问题就是尽快确定方向。但是,你不要指望这个问题可以一蹴而就,半个小时就能搞定。作为人生三大问题之一,到哪去,只能“listen to your heart”。放在程序员发展之路这个背景下,我的建议:

  • 多跟长者交流和学习
  • 多跟朋友交流和学习
  • 多跟不同背景的人交流和学习
  • 多看看行业新闻和动态
  • 多看看图书市场的出版动态
  • 多看看招聘网站上的职位动态

基于这些信息和数据,我相信你也不会是木头,没有任何感触和想法。有了想法,就尝试,但不能一遇困难就退缩,否则你将很难判断出是自己能力不足,还是因为确实不喜欢这个方向。如此往复,即是死循环,永远原地打转,无法升级。找方向的过程是一个不断尝试和渐入佳境的过程,在这个过程中多交些朋友,多参与些社区,他们将会成为你的良师益友和支撑下去的力量。

环境会影响成长

环境,也是一个不得不说的因素。孟母三迁已经说明了环境的重要性,这里我也就不再展开讨论。简单的说就是:环境会影响你的成长。在我看来,环境可以用这样的三元组来表示:(城市,公司,团队)。其他更细微的环境,如办公环境,不在此处讨论之列。我认为好的环境包括下面的要素:

  • 机会多,包括:升职机会、培训机会、工作机会等
  • 氛围好,包括:积极的学习氛围,融洽的人际关系,公平的竞争机制等
  • 有将来,包括:朝阳行业,快速赛道等

这里我没有列出加班或薪水之类的因素,是因为它们根本就不是决定你是否成长和发展的关键因素,并不值得作为首要考虑的条件。当然,不是所有人都那么幸运地可以身处不错的城市、优秀的公司和好的团队,三元组的顺序则可以作为你选择的优先级,即:城市 > 公司 > 团队。

好的方法 = 如虎添翼

有努力的意愿、确定了明确的方向、选择了好的环境,这些已经让你站在了一个比较高的起点,但如果拥有好的方法,则会让你如虎添翼。好的方法应该是可以习得的,而且能够让你快速入门,并不断提升。所幸,我们并不需要自己去发明所谓的“好方法”,因为业界已经有很多值得学习的方法可供借鉴和拿来即用了:

  • 敏捷方法,熟悉敏捷开发的朋友可能会觉得很奇怪,觉得敏捷方法跟个人的修炼的成长关系不大。如若有此印象,只能说你的想法太局限。敏捷方法本质上是一种杜绝浪费的经验实践,一种发现浪费并消除浪费的思想。既是如此,为何不能将其应用于个人的学习和成长之中呢?尤其是其中的 TDD ,本身其实就是先树立目标,接着快速实现,然后不断优化的实践。将其应用于新知识的学习过程中,不仅可以学习实际的知识,还可以锻炼对新知识的洞察和理解,否则光树立目标和如何验证都做不成。
  • 设计思维,相对于敏捷方法而言,设计思维更侧重于做什么,借助于更优的沟通技巧和手段、快速地原型设计和验证,迅速拿出一个可行的方案。这也是为何我个人认为设计思维在前,敏捷方法在后的原因。比较而言,敏捷方法更偏目标确定之后的工程实践,设计思维更偏在正式工程之前找到最优方案。利用设计思维,有助于锻炼所谓的“移情”能力,这是很多成功者具备而大部分程序员不具备的能力之一。
  • 视觉化表述,一图胜千言,而且做一个会画画的程序员应该很酷。
  • 系统思维,整体全面地看待问题,很多人都希望如此,但实际中做到的很却不多。大多数原因都是虽然对此有认识,但从没有系统性地学习和掌握这方面的理论和工具。彼得圣吉的《第五项修炼》的江湖地位已不再需要过多描述,同时我还推荐一本实操性比较强的《系统思考》(丹尼斯舍伍德著)。虽然这类书籍被划分到管理类,但它们本质上属于思维改造类资料,我建议广大程序员在敲代码之余可以去看看。

相比起行业技术,以上方法是经得起时间考验的,并不会出现一朝被行业抛弃的情形。掌握这类方法将深刻改善你的认知和见识,相比起零星地碎片化学习,这些知识值得静下心来专门学习。

体验的重要性

最后,我想谈谈【体验】的重要性。如果你想提升你的见识,不去体验生活,几乎不太可能获得真正有用的体验。这也是陆游所言:纸上得来终觉浅,绝知此事要躬行。关于体验,作为过来人,我看到和做过的:

  • 参与社区,融入社区,有机会就分享,这是一个思想交流的机会。
  • 写文章、翻译文档,通过写作来整理思路,形成自己的观点,不要人云亦云。
  • 参与开源项目,体验不一样的协作模式和开发方式。
  • 对于公司内的机会,也不要错过,应该将它们作为你的首要目标,不要舍近求远,先去看外部机会。

修炼,就是折腾自己,在这个过程中才能真正成长。

总结

最后总结一下吧。

在这篇文章中,我既没有像其他文章一样去告诉大家程序员有哪些职业发展方向,如前端、后端和架构师等;也没有谈你的人生规划,如是创业、做个自由职业者,还是打工?这是因为我认为外面已经有很多文章谈到了这些,再写下来也没什么意思。

而且,我觉得授人以鱼不如授人以渔。你告诉他的这些所谓的职业规划和方向,只不过是当下环境下特有的职位和方向而已,未来可能不复存在。况且,提前说明这些,反而有可能事先将你的思维方式局限住,不如干脆讲些“元知识”,然后由你自己去决定自己的路如何走。

整篇文章先从态度(即努力)说起,再言及“方向”,进而谈到“环境”、“方法”和“体验”,所有这些都是我认为对于个人成长和发展非常关键的要素和条件,通过这种层层递进地说明,希望能起到为一些还感到迷茫的朋友解惑的作用,谢谢!

原文链接:https://mp.weixin.qq.com/s/eSOP9801mwsH7l9PS32DJw

Image placeholder
IT头条
未设置
  98人点赞

没有讨论,发表一下自己的看法吧

推荐文章
DBA职业发展之路:去“IOE”等挑战之下,DBA将何去何从?

开篇随着近些年来,开源、自动化、云化的兴起,DBA职业也正悄然发生一些变化。经常有朋友咨询我,职业发展规划;特别是近期Oracle的大幅裁员之后,针对DBA这一职业未来该如何发展?本文是个人对此问题的

两年Flink迁移之路:从standalone到on yarn,处理能力提升五倍

一、背景与痛点在2017年上半年以前,TalkingData的AppAnalytics和GameAnalytics两个产品,流式框架使用的是自研的td-etl-framework。该框架降低了开发流式

有态度的网易(暴力裁员),难道这就是网易的“态度”?

我相信昨天大家都看了这篇文章《网易裁员,让保安把身患绝症的我赶出公司,我在网易亲身经历的噩梦》在微信、知乎、微博以及各大平台都已经刷屏了。原因只有一个:这个员工真的被逼的太惨了。先给大家简单分析一下整

程序员自省清单

课程推荐:web全栈开发就业班--拿到offer再缴学费--融职教育 关于程序开发 代码不只是要执行。代码也是跨团队交流的一种手段,是一种向他人描述问题解决方案的方式。可读代码不仅仅是一种良好的编码习

阿里毕玄:从生物系学生,到技术团队 leader,他是如何完成自我蜕变的

©MSuzanneD.Williams编者按:新的技术层数不穷,困扰程序员的不仅有学不完的新技术,还有每个人在职业生涯中必然会面对的成长路线问题。这就像一个产品有了清晰的roadmap,下一步走的才会

Python程序员进阶必备:从新手到高手的100个模块

在知乎和CSDN的圈子里,经常看到、听到一些python初学者说,学完基础语法后,不知道该学什么,学了也不知道怎么用,一脸的茫然。近日,CSDN的公众号推送了一篇博客,题目叫做《迷思:Python学到

IEEE态度转变:解除对华为评审限制

大数据文摘出品作者:周素云、魏子敏IEEE的态度发生变化。今晨,IEEE电气电子工程师学会中国官网及官方公众号同时发出声明,表示IEEE向美国商务部要求就出口管制条例在IEEE出版活动的适用性做出说明

5位女性程序员的自白:计算机不撒谎;女程序员的代码一样也很棒

谁说这个领域就是男性的天下偏见本身就是一种带标签的想法她们的世界里只信奉“computer never lies”她们认为代码漂亮比发型漂亮更重要她们到底是谁?谷悦是喜欢简单、纯粹工作的气质女神,八年

一次Zookeeper 扩展之殇

一、背景基于公司发展硬性需求,生产VM服务器要统一迁移到ZStack虚拟化服务器。检查自己项目使用的服务器,其中zookeeper集群中招,所以需要进行迁移。二、迁移计划为了使迁移不对业务产生影响,所

十年软件通胀率:从 2009 到 2019 年,软件越来越昂贵

过去十年,软件定价逐渐上升。在我们调查的一百个商业应用程序中,价格平均上涨了62%,其中包括一些比较便宜的应用程序。如果用户现在花钱购买一款应用程序,那么它很可能比十多年前的价格贵98%以上。

一位从卖猪肉转行到前端开发小哥的自我救赎

一位曾经卖过猪肉的前端小哥自我救赎之路来自微信公众号:前端巅峰  的交流群真实采访花名:**郑伊健**一、你为什么要给自己取一个郑伊健的花名,有什么特殊含义特殊含义倒是没有,取这个花名,只是因为觉得郑

forEach无法跳出循环的自我理解

最近写代码才偶然发现forEach无法用return跳出循环,有朋友说用break可以跳出,感觉这个解决方案很瞎,试了试确实很瞎!首先break是用在循环体中的,forEach虽然是循环,但是代码写在

Golang语言的主要特性与发展的环境和影响因素

1.2.1影响Go语言发展的早期编程语言 正如“21世纪的C语言”这句话所说,Go语言并不是凭空而造的,而是和C++、Java和C#一样属于C系。不仅如此,设计者们还汲取了其它编程语言的精粹部分融入

Google 21 岁生日,一文回顾 Google 发展史

9月27日,谷歌在Google搜索引擎首页庆祝自己21岁生日。 在涂鸦存档上,谷歌发布了一封庆祝信: 21年前,两位斯坦福大学博士生谢尔盖·布林和拉里·佩奇发表了一篇有关启动“大型搜索引擎”原

五种拥有光明发展前景的新兴编程语言

在软件项目与具体实现层面,我们需要考虑众多具体因素。但无论从哪种角度出发,技术栈的选择永远是决定项目成功与否的核心因素之一。根据您的实际应用需求、站点或者产品设计思路,不同的编程语言往往能够带来不同的

未来有发展前景的IT技术岗位盘点

众所周知,在互联网时代,IT技术岗位是互联网公司和企业的核心发展力量。现在我们来盘点一下未来有发展前景的IT技术岗位。一般来说,IT技术岗位可以分为开发岗位、测试岗位、UI设计等,下面我将从这几个岗位

一文读懂数据库70年发展史

作者:常垒资本 冯斯基顾问:云和恩墨、戴工玖、周家晶零1949-19791956年,周恩来总理亲自领导了“科学技术发展十二年规划”,标志着我国计算机事业的开始。而那时,几乎没有人知道计算技术是怎么回事

降低 80% 的读写响应延迟!我们测评了 etcd 3.4 新特性(内含读写发展史)

导读:etcd作为 K8s集群中的存储组件,读写性能方面会受到很多压力,而 etcd 3.4 中的新特性将有效缓解压力,本文将从etcd 数据读写机制的发展历史着手,深入解读 etcd 3.4 新特性

大数据推动教育产业创新发展

《大数据时代》作者维克托•迈尔-舍恩伯格教授著作《与大数据同行:学习和教育的未来》一书指出:当下大数据正悄悄影响到教育体系的每个层面,对于全世界的学习与教育活动,都会产生极为深远的影响。AI辅助教学,

从关系型数据库到分布式机器学习,揭秘腾讯大数据十年发展历程

大数据技术在过去10多年中极大改变了企业对数据的存储、处理和分析方式。如今,大数据技术逐渐成熟,涵盖了计算、存储、数仓、数据集成、可视化、NOSQL、OLAP分析、机器学习等丰富领域。在未来,大数据技

Google Brain推出语音识别新技术、面部表情识别助力商业再发展|AI一周学术

大数据文摘专栏作品作者:ChristopherDossman编译:fuma、云舟呜啦啦啦啦啦啦啦大家好,本周的AIScholarWeekly栏目又和大家见面啦!AIScholarWeekly是AI领域

云网融合已成ICT发展趋势 天翼云提供专业云网融合解决方案

随着全球云计算领域的飞速发展和我国云计算发展进入应用普及阶段,越来越多的企业已开始将企业信息系统等转移到云上。为了保障更多企业顺利上云,对网络和行业上云解决方案产生了新的需求,由此云网融合应运而生。运

当前政府发展大数据产业思路分享

笔者认为大数据发展大体会经历三个阶段,一、业务的数据化;二、数据的业务化;三、业务的智能化。2018年,各地方政府包括企业通过这几年的大数据建设,基本完成了业务的数据化、和数据开放共享的第一阶段,20

为什么IoT需要机器学习才能蓬勃发展?

人们一直在热烈讨论大数据和人工智能等技术的机遇和威胁,并对它们的未来表示担忧。与此同时,公司希望通过安装越来越多的传感器,来提高效率降低成本。然而,InData实验室的机器学习顾问表示,如果没有适当的

深度复盘GitHub发展史:如何在短短10年内改变了人们的编程方式?

前不久,微软以75亿美元的价格收购GitHub,引发了科技行业的关注。在短短的10年内,GitHub改变了人们的编程方式。不仅让编程变得更简单,还改变了软件开发者对编程的看法。GitHub是如何做到的