Blog

Blog

PHODAL

说说程序员的核心能力:第一个三年:后台、前端、移动应用,第二个三年呢?

转眼间,做了一年多的项目结束了。修了两天的假,等着下一个项目的开始,或许这就是身为乙方的宿命。

倘若是在自己的办公室里完成项目,那么甲方和乙方的区别怕是不大。而作为一个在客户现场工作的乙方工程师,就不是一件容易的事。在客户现场面对的,不仅仅是技术问题,还要注意一系列的沟通,以及额外的政治影响等等。

时间一久吧,总会在思考两种工作模式的不同之处。两者的目标是一致的,只是一方永远都是要配合的。总在想,如果我是另外一方,会怎么去思考问题。也在思考着,如何来提升自己——因为很多时候自己是接触不到数据、最终用户等等的信息。

扯太远了,我就是来总结一下所思所想。

不要让 title 限制了你的职业生涯

大学学的是电子信息工程,刚毕业的时候,想找一些硬件方面的工作。可是因为学校和学历的原因,就找不到合适的机会。可尽管如此,在大学的时候,我仍然做了很多的网站开发的工作。

从前将自己定位成前端工程师,那时便觉得『运气』是一种特别值得玩味的事。它(运气)可以让你当上 CTO,走上人生巅峰,也能让你觉得生活是一种乐趣。

当我想做前端相关开发的时候,项目主要的都是 Java 相关的维护工作。慢慢地由于需要,将注意力放到了后台架构、搜索引擎这一类的事上。

当项目上用上了前沿的前端技术栈时,我在做 DevOps 的工作。关心项目中的一些琐事、杂事,也会羡慕别人可以无忧无虑地去做业务卡。

当其他人觉得我的主要工作前端的时候,在项目上主要做的是移动应用开发工作。从原先的混合应用,到编写一些简单的 Java、Objective-C 来实现混合应用插件,再到使用 React Native 升级 Growth 来练手。

这就是命吧,下一步是怎样的,便是一件有趣的事。

可后来吧,工作的时间漫漫的拉长,便也发现了作为一个工程师,我到底还是合格的——放到一个新的技术栈上,如与擅长的前端不同,学习会儿,也就勉强能跑几步了。这倒是与之前的定位,发生了一些微小的变化。

慢慢地,在我完成了《全栈应用开发:精益实践》一书后,我便将前端工程师视为是工作的需求(也就如今年初写的开源电子书《我的职业是前端工程师》一书所讲述的),而不是我的标签后,便发现可以做的事情有很多,可以拒绝的事情也有很多。

大抵只是因为我将 title、标签 视为工作上的标签。对,就是那种你觉得工作上的你是正经的你,业余的你是不正经的你。你可以去做自己喜欢的事,编写自己想写的代码——前提是,你加班没有那么多。

不过,我的真实 title 是一个咨询师,啊哈哈哈。

关注能力的成长

从后台到前端,再到移动端,要关心的东西很多,要学的东西很多。可说到底吧,有几种能力便还是不变的:

  • 快速学习
  • 索引知识
  • 解决问题
  • 沟通表达

快速学习

记得我在大四实习的时候,没有用过 Spring,亦没有深入了解过 JDBC 这一类的东西。可是,工作上是要用到的。于是吧,无论是谁,都得拼命的学一段日子。这时吧,只能买几本书,熬几个夜,喝几杯咖啡,几天也就得上手。压力这么一大吧,学习也就快了。

可这样一说,快速学习那可是基本的核心能力啊。它所指的,并非是我们能快速使用一个新的框架,而是我们能快速的使用一个新的框架来完成工作。因为当我们谈及快速学习的时候吧,我们多数是在以任务为驱动的学习。

解决问题

慢慢的,当我们习惯了堆砌的代码,就会发现工作中的高潮,就是解决一个个的疑难杂症。解决问题吧,无非就是: 先识别问题,再去解决问题(PS:很是奇怪)。

识别问题。通过复现、Debug 找到出现问题的地方,然后再找寻到出现问题的地方,再去追根溯底。这一步往往是最难的地方,为此,你需要掌握好各式各样的调试工具,前端开发中的 Chrome 调试,后台开发中的实时 Debug、日志记录,移动开发中的抓包工具。还要去了解各个系统的组成,如典型的编码问题,一般都不是应用程序的问题。因此,你要从 Chrome 发出的请求开发,再查看 HTTP 服务器(如 Nginx)接收到的请求,随后便是应用容器(如 Tomcat)转的语法,最后才到应用程序的地方。

解决问题。多数时候,我们所要解决的问题,都是别人遇到的。因此,解决问题的第一原则是使用搜索,多数时候只需要搜索错误提示,就能找到答案。而为了使用好搜索,你还需要找到合适的上网方式。

在解决问题的过程中,最重要的不是解决问题本身,而是诸如问题有没有解、有没有解决问题的必要(即最优解)。如你做了一个混合应用,那么性能问题接近于『无解』。而如果你们的应用不会有性能问题,那么就没有理由去重写应用,以解决性能问题。

索引知识

人呐,不会一直年轻,也总会有个伴侣的(@花仲马),哪怕是基友喝上门。很多时候,总需要处理一系列的琐事,需要花费时间去照料家庭,家人。哪怕能我一样不加班,时间也远远不够用的。有些技术细节,只能看个大概,又有很多技术细节,与其他框架是相似的。

上手一个新的领域,总会找个人资料、找本书了解、找相关资料探索,随后再找一个 Awesome List,在这个列表里,找到这个领域的一些流行趋势。一步步探索的过程中,我们便在不断地构建这个领域的索引,慢慢地便能识别相关的问题。

因而,当你觉得你对这个领域很了解时,实际上是因为你有了这个领域的索引。

沟通表达

对于我而言,这方面仍然有相当大的提升空间,只是当前它可能还不在第一优先级上。虽然只是花费了一两个月的时间,读了一两本相关的书,确也发现有所提升。

作为一个程序员的日常沟通,大概就是业务人员和程序员吧,沟通的要点吧,便是知道对方要表达的东西,再表达清楚自己心里的想法。

可作为一个普通的人,是得多和人打交通。与大多数程序员相比吧,在我司还是不错的,至少你要不断地和人沟通,日常的聊天、与客户的沟通、与开发人员的沟通等等。

做一个自己的产品

大抵,只要是一个有追求的程序员,都会想去做自己的产品。无论你是在腾讯、阿里大公司里,又或者是在哪个小公司里,只要你不是老板,那么做出来的东西可就算不上你的成就了。于是乎,有热忱的程序员都会去创造自己的轮子,有一个自己拿得出手的东西。

造轮子、写博客、做 APP,总能让我看到代码之外的,不一样的东西。用某句高大上的话来说,就是看到世界的运行法则。

博客,算是我的第一比较正式的作品,我学习了大量的 SEO 技巧。

Growth,用户过 10万的作品,尝试了大量的用户,代码维护。如何宣传,获取更多的用户

『玩点什么』,作为职业生涯里的第三个作品,运用了更丰富、尝试着如何去保留用户。

你就好比是一个更大的试验田,可以轻松地尝试自己的想法。工作的时候,往往很少有这样的机会;业务上的任务,是由业务人员与客户沟通过来的,

在学校找一个女朋友

考虑到,你们那么单纯:

  • 工作的,还是去学校找个女程序员~~~,啊哈哈哈。
  • 还在学校的,快找学妹下手~~。

算了,只要不上婚恋网站就行~~。

完结,撒花~


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签