前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何成为一个上流的程序员

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

作者头像
程序员互动联盟
发布2018-03-12 17:09:25
7690
发布2018-03-12 17:09:25
举报

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

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

先精后广,一转多长

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

平心而论,程序员在市场上的供求关系比绝大部分职业都更有利于求职者,在微博上、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开发的世界。因为前端开发直接面对最终用户,在上下游发展上有更自由的空间。其他职位也可以从一个专一的职业开始,专注地学习这个职业需要的技术,到达一定的深度之后,扩展自己的知识面,往一专多长方向去发展。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档