如何成为一个上流的程序员

除去极少数天赋异禀的神级程序员,我们大部分人都是凡人。

凡人要从一个小菜鸟成长为全栈工程师大神,只能从少到多,慢慢积累知识。这里我推荐采用“先精后广,一专多长”的流程来学习。

先精后广,一转多长

毕业生遇到的第一个问题就是如何在一个城市,甚至是北上广深这样的大城市生存下来。生存下来需要一个稳定的工作,所以需要投一些简历给大公司或者小公司。

平心而论,程序员在市场上的供求关系比绝大部分职业都更有利于求职者,在微博上、twitter上、v2ex上……对优秀程序员的需求从来就没有减少过。优秀的程序员总是能找到工作并且工资不低。但是为什么很多毕业生投出的简历都石沉大海呢?

大部分情况都是由于求职者在所需专业上的深度不够。让我们做一个情景假设,你看到腾讯有一个职位空缺:

招聘前端开发:

  • 本科以上学历;
  • 两年以下工作经验;
  • 精通HTML、CSS、JavaScript等前台相关技术,熟悉W3C网页标准;
  • 熟悉至少一种后台语言的开发机制(如Java,c++等);
  • 有一定架构能力和算法能力,有良好编码规范;
  • 良好的学习能力、沟通能力,追求完美,有工作激情,能在较大强度下工作。
  • 热爱互联网,喜欢研究各项互联网者更好。

你想,自己完全满足要求啊,于是一封简历就投递到面试官的邮箱那里了,里面用大段文字表达自己的激情和兴趣,并且表明自己完全符合这个要求。

但是你从面试官的角度来想想,他收到了多少个简历呢?可能100个。

他要从100个符合要求的人中选择10个来面试,你的简历中的哪一点吸引到他了呢?有的竞争者有移动端的作品、有的竞争者提到他很擅长页面性能优化、响应式、页面渲染效率、有的写过JavaScript框架……而你只是一个普通的满足要求的人。

你可能会说,我爱好广泛,我会一点PHP,做过wordpress主题,会一点java,毕业设计做过一个小客户端应用,什么都会一点……但最终你仍然会得到一个“无亮点”的评价,被无情地pass掉。

所以,作为一个求职者,无论是毕业生还是社会招聘,仅仅满足招聘要求是不够的。考核你能力的是专业的面试官,面对他你要有足够突出的专业加分项。

有了一个职业的专长,你就能有自己的阵地,以此为生,然后再之后的时间逐步学习更加广博的知识。

如果你在一个中等规模以上的公司找到了工作,那就会有一个专门的职业。经过几年的工作和练习,你会在专业知识上达到很专业的程度,日常需求都在你的舒适区,现在你终于能重新提起精神,准备做一个全栈工程师了,那么从哪些技术开始入手呢?

关注商业目标

我的第一条建议是,关注商业目标。归根结底,技术是服务于商业目标的。

在计算机科学诞生的短短几十年中,热门的技术和平台都一直在发生巨大的变化。服务器端的平台和语言从C到C++,Java,Python,Node……客户端分浏览器和原生开发两个分支。浏览器方面,web标准和不同浏览器的比例每隔5年就发生天翻地覆的变化,原生设备的市场份额更是风起云涌,曾经的诺基亚和摩托罗拉被新起之秀收购,iOS和Android之争还在继续……

但是商业目标是相对稳定的。把关注点放在商业目标而不是技术上,就能在多个技术之间选择更能完成商业目标的技术,这样往往能做出更为客观的决定。更重要的是,在这个过程中你学习到的不仅仅是技术,更是一种潜意识的思维方式,这种思维方式可以帮助你提升你的综合竞争力,是一种“硬通货”的能力。

所谓“商业目标”要广义地去解读。对于直接制作产品输出给用户的团队,就对外关注如何提高产品质量、降低产品成本,对内关注如何优化流程、减少错误率。如果团队输出的成果是公司内其他部门需要的原材料,就关注下游的需求,看如何更好地输出这个成果。

关注商业目标需要持久的练习。等到自己成为全能的大神,或者成为团队管理者,更加需要在多个目标任务之中做出选择。全栈工程师需要做和能够做的事情是很多的,他会很多技能,也负责处理很多工作,所以他更需要能力从诸多事情中找到从商业上最值得解决的一个:可能是制作一个工具提高团队的效率,也可能是成本上的优化,也可能是增加一个用户需要的功能,更有可能是拒绝一个用户不需要的需求。全栈工程师可以做很多,他更需要有判断做什么的能力。请总是从商业目标的角度看学习哪些东西,而不是纯粹为了锻炼技术能力而去学习。

记住,当你只有一把锤子,你看啥都是钉子。

关注用户体验

我的第二条建议是,从用户体验方面来考虑问题。

全栈工程师应该关注用户体验,并且有用户体验相关的知识。即使一个技术达人能够以一己之力搭建一个站点,但他如果不知道如何关注用户和客户的体验,那么他做的产品就会体验极差。这样的产品除了“能用”之外什么优点都没有。

所有优秀的工程师所做的一切都是在优化用户体验:一个优化性能的开发者是在积极的提升用户体验和交互,一个设计师有意用颜色、空间、大小和表单的排列方式让用户体验更顺畅好用,而一个内容运营者认为某些内容重要,某些内容不重要,也是在考虑如何提升用户的体验。

甚至工程师作为团队leader向领导汇报时、发送邮件时也需要认真地关注客户(在这里是老板)的体验,以对方能理解,会关注的方式来表达自己做了什么、请求对方的支持。

所以这里的“用户”仍然是一个广义的定义:所有为之服务的人。

我如果开创一个公司需要招聘“全栈工程师”,我要求的三个能力就是一专多长、关注商业目标、关注用户体验。

如果是有志往全栈工程师方向发展的学生,我推荐从入门简单的前端开发开始学,渐渐地接触整个web开发的世界。因为前端开发直接面对最终用户,在上下游发展上有更自由的空间。其他职位也可以从一个专一的职业开始,专注地学习这个职业需要的技术,到达一定的深度之后,扩展自己的知识面,往一专多长方向去发展。

文章修改自豆瓣专栏(作者:余果)

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

你的编程技巧已经过时了吗?

编程是一个不断向前发展的行业。在某些时候,你可能会诚实地看看自己的技能,并得出结论,你已经落在了曲线的后面。如果你是专业人士,那么这很容易做到,因为很多时候你没...

712
来自专栏陈树义

如何写出别人看得懂的技术文章?

说起写博客,我从 2014 年毕业开始就有写博客的习惯,只不过当时写的博文更多是像记笔记,读者看下来迷迷糊糊的。我开始真正意义上的写博客应该是从 2017 年 ...

892
来自专栏ThoughtWorks

TW洞见〡极限会议: 原则与实践

文章作者来自ThoughtWorks:李光磊 ,图片来自网络。 极限会议是解决开会过多, 会议效率低下的一组原则和实践. 它基于两个简单的理念: 如果...

2416
来自专栏Java学习网

你的编程技巧已经过时了吗?

编程是一个不断向前发展的行业。在某些时候,你可能会诚实地看看自己的技能,并得出结论,你已经落在了曲线的后面。如果你是专业人士,那么这很容易做到,因为很多时候你没...

2564
来自专栏大数据文摘

业界 | 数据可视化项目失败的六大缘由

1444
来自专栏智能算法

技术人,为什么需要构建知识图谱?

作者简介:安晓辉,10多年开发经验,曾任软件开发工程师、项目经理、研发经理、技术总监等岗位,著有《Qt Quick核心编程》、《Qt on Android核心编...

34814
来自专栏Sign

大地之上

碎碎念 ? ---- 会有公司在看到新海诚的独立动画之后,认为新海诚很喜欢做动画,然后让他来自己公司作为一个原画师帮忙画原画吗? 这个类比不准确,现在的DOLO...

31912
来自专栏about云

你会让人工智能为你做决定吗?

问题导读 1.你认为我们已经将那些事情委托给人工智能? 2.你认为人工智能是否可以做更多的事情? 3.你认为人工智能未来可以做那些事情?

932
来自专栏PPV课数据科学社区

必懂 | 这是一篇让你快速把握数据分析的文章

1、为什么要注重数据分析? 我们为什么要注重数据分析,对此我的想法是: 有效避免拍脑袋、主观臆想; 为决策提供支撑,更能说服人; 通过数据分析,可以看到决策...

2645
来自专栏web前端教室

前端学习的碎片化

这段时间的先行者计划运行情况,很清楚的表明一个现实。就是前端学习很容易进入一种碎片化的现状。就是学习的时候没有一个明显的脉络,关注的点也是散射的状态,而且在学习...

1747

扫描关注云+社区