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

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

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

先精后广,一转多长

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

平心而论,程序员在市场上的供求关系比绝大部分职业都更有利于求职者,在微博上、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 条评论
登录 后参与评论

相关文章

来自专栏灯塔大数据

干货|35张PPT,教你快速成为数据分析师

本文适合一些想学数据相关的知识,来提升自己产品、运营能力的人。不太适合数据分析师。 一、如何入门互联网数据分析 网站分析是一种能力 对于大部分人互联网从...

3394
来自专栏CSDN技术头条

从底层到应用,大数据工程师成长之路必备技能汇总

概述:谨以此文献给对数据有热情,想长期从事此行业的年轻人,希望对你们有所启发,并快速调整思路和方向,让自己的职业生涯有更好的发展。 根据数据应用的不同阶段,我将...

2289

4种帮助您发展业务的流量获取工具

吸引流量到网站/博客是一种非常有效的宣传业务的方式。

2075
来自专栏理论坞

1 千个从业者就有 1 个交互设计师

转自简书:https://www.jianshu.com/p/32dbf8ba4a6c

711
来自专栏SEO

「知识」2018年的搜索引擎优化该怎么去做?

34112
来自专栏ThoughtWorks

DevOps团队之殇|洞见

“你在团队里是做什么的?” “DevOps。” “DevOps是什么呢?” “DevOps是一种文化、一种实践,目标是加快软件迭代速度,让团队更快交付价值...

2736
来自专栏Crossin的编程教室

【数据说话】当下的Python就业前景如何

Python 现在是越来越火了。 IEEE 发布的 2017 年编程语言排行榜,Python 排第一。 ? 百度指数的搜索趋势,Python稳步上升。 ? (此...

3038
来自专栏携程技术中心

干货 | 从底层到应用,那些数据人的必备技能

作者简介 潘鹏举,携程酒店研发部 BI 经理,负责酒店服务相关的业务建模工作,主要方向是用机器学习帮助业务创造价值。本文首发作者知乎,略有修改,点击底部“阅读原...

30710
来自专栏全栈数据化营销

四个案例解析:数据分析是如何指导产品设计

两年之前,那时我刚开始做产品,当需要做数据分析时,我总是一头雾水,完全不知道该如何下手。我想做好,我真的非常想做好,可我却真的不知道该怎么做。经过这两年大大小小...

35810
来自专栏FreeBuf

企业安全团队强大与否,看这八个关键指标

? 概述 安全人员喜欢用一些比较消极的方法来防御恶意攻击,比如“没有消息就是最好的消息”(此说法源自美国南北战争时期,由于打战死人后,家人都要收到阵亡通知书,...

1875

扫码关注云+社区