如何成为一名优秀的工程师?顶级程序员的5点建议

Posted 码老思

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何成为一名优秀的工程师?顶级程序员的5点建议相关的知识,希望对你有一定的参考价值。

一位工程师,如何才能称得上优秀?除了写得一手好 Code,什么样的工作态度和方法才是一个优秀工程师的必备?今天给大家分享百度前COO、计算机科学博士及优秀的管理者陆奇,他提到的这5点要求,相信对每个工程师都适用。

1. 永远相信技术

首先要相信技术,整个工业界,特别是各种高科技大公司,对技术坚定的、不动摇的信念特别重要。盖茨提到微软公司的宗旨就是:写软件代表的是世界的将来。为什么?未来任何一个工业都会变成软件工业,因为任何工业任何行业自动化的程度会越来越高,最后你所处理的就是信息和知识。

但现在软件的做法又往前提了一次,因为在人工智能时代,不光是写代码,你必须懂算法,懂硬件,懂数据,整个人工智能的开发过程有一个很大程度的提高,但是,技术,特别是我们这个工业所代表的技术一定是将来任何工业的前沿。

所以,我们一定要有一个坚定不移的深刻的理念,相信整个世界终究是为技术所驱动的

2. 站在巨人的肩膀上做创新

在美国硅谷、在中国,互联网创业公司也好,大型公司也好,大家的起点是越来越高的。为什么现在创新速度那么快?主要是起点高了。我们可以使用的代码模块,使用的服务的能力,都是大大的提升。

所以每一次你写一行新的代码,第一要做的,先想一想你这行代码值得不值得写,是不是有人已经做了同样的工作,可能做得比你还好一点。有没有其他人已经解决这个问题,然后你可以把你的时间放在更好的创新上。特别是大公司里面重复或者是几乎重复的 Code 实在太多,浪费太多的资源,对每个人的职业生涯都不是好事情。

在大公司内部,你写代码之前想一想,你这行代码要不要写,是不是别人已经有了,站在别人的肩膀上去做这件事情

3. 追求Engineering Excellence

Engineering Excellence,也就是工程的技术的卓越性和能力。

任何市场上竞争就像打仗一样,就看你的部队体能、质量,每一个士兵他的训练的程度,和你给他使机关枪、坦克,还是什么样的武器。

Engineering Excellence 是一个永无止境的、个人的、团队的,能力的追求和工具平台的创新,综合在一起可以给我们带来的长期的、核心的竞争力,为社会创造价值,最终的目的是给每个用户、每个企业、整个社会创造价值。

我们要么不做,要做的事情一定做最好,这是我对大家的要求。数据库也好,做大平台也好,大数据也好,我们要做什么事情,我们一定要下决心,这是我对你们每个人的要求,做什么事情一定要做最好,一定要是做业界最强的。

4. 每天学习

每天学习,可能是对每个人都是最最重要的。

每个人可以把自己想象是一个软件、一个代码,今天的版本一定要比昨天版本好,明天的版本肯定会比今天好,因为即使犯了错误,里面有 If statement,说如果见到这个错误,绝对不要再犯。

英文有句话是 Life is too short, don’t live the same day twice. 同样一天不要重活两次。每天都是不一样,每天为什么不一样,因为每天都变成最好,每天都变得更好。今天的版本一定要比昨天好,每个优秀的工程师,杰出的技术领袖,一定要保持自己学习的能力,特别是学习的范围。

做 Computer science 的,如果只学 Computer science,不去学一些其他的行业,肯定不够。举个例子,经济学必须要学。为什么这样讲?Computer science 它有个很大的限制,他是假定你有输入以后有输出,这种解决问题的方式有它的好处,但有它的限制性。

比如做地图导航,如果你纯粹用这个方式去做,你只是把一个拥挤的地方移到另外一个拥挤的地方。经济学,它对问题的建模是不一样的。它起点是假定是一个整体的一个生态,每个人的输入都是另外一个人的输出,你要用经济学的方式来描述地图导航的问题,你就会去算一个 Equilibrium,市场也是这样。

另外,学产品,如果不懂产品,你不可能成为一个最好的工程师。真正要做世界一流的工程师不光要懂产品,还要懂整个商业,懂生态。因为你的工作的责任,是能够看到将来,把技术展望到将来的需求,把平台、把开发流程、把你的团队为将来做准备。所以学习是非常非常重要的。

5. Ownership

最后是一种职场里面的心态,Ownership,就是看到机会不需要问别人,有机会就去做,看到问题也不要去问别人,就把它解决掉。把公司当成我们自己每个人的事业来做,Own everything,你在职业生涯一定是走得最快,从我做起,从身边的每一件事情做起。

总结来说,就是Believe in 技术、站在巨人的肩膀上做创新、追求 Engineering Excellence、每天学习、Take Ownership,陆奇送给每一位工程师的建议,你 get 到了吗?

如何通过自学成为一名优秀的 Android 开发工程师?

前言

在现在的人才市场上,其实有相当一部分的开发者都不是科班出生的。尤其是Android程序员,基本上都是自学的,能在大学里接受正规系统的Android开发学习是很难的,很少有学校会专门教这个。
(以上都是我的个人经验,不知道现在的大学教育是什么样子)

以笔者自身为例,14年会计本科毕业,编程都是大学的时候自学的,Android更是完全的零基础自学。但是毕业后,我幸运的拿到了百度云的Android开发岗offer,现在已经是一名Android高级研发工程师。

下面就来分享一下我这一路走来的心路历程吧。

开门篇:万丈高楼从地起

知识储备要求:

  • 算法分析和数据结构:
    查找,排序,DP,图论,数论,栈,堆,二叉树等
  • 操作系统:
    进程线程,中断机制等
  • 计算机网络:
    五层架构,各种协议等
  • 编译原理:
    理解语言的结构,词法分析,语法分析等,对你后面掌握语言有帮助
  • 数据库:
    简单了解一下各种范式,android开发对其要求不算高

学习方法推荐:

推荐书籍:
《算法导论》,然后再来一本数据结构的书基本够了。
《深入理解计算机系统》
《计算机网络:自顶向下方法》

配合刷题:
刷题很重要,他可以让你对算法还有其他的知识点理解更深。同时现在基本上正规规点的公司笔试也这样,也算是为以后的进军大厂做准备了。

入门篇:万变不离其宗,书中自有黄金屋

知识储备要求:

  • Java 语言基础
    虽说现在是kotlin first,但是市面上的APP基本上还是用的Java语言写的。不过,大家也可以选择先学kotlin。

学习方法推荐:

书籍+检索+上机实操

这个阶段还是推荐大家以看书为主。现在网上的视频资料也有很多,但是都比较零散,基本上都没有什么系统,也没什么体系,与其找一集看一集去耽误时间,不如直接从书本上手,慢慢打造一个完整的知识体系。

当然,不是说视频就不能看,大家在看书学习的过程中如果遇到了不懂的地方,或者上机操作出现问题的时候,大家可以就自己这个特定的问题去搜索视频学习(学会在有用的网站检索有用信息也是成为一名优秀的Android程序员的必备技能)。

推荐书籍:

《 JAVA核心技术(卷1)》
这本书可以理解成一本工具书,对于Java的讲解面面俱到,在你不记得相关的知识的时候需要拿出来,巩固学习。

《Effective java 中文版(第2版)》
进阶学习,在了解Java的基础的前提下,开始学习更多知识点。

《 Android开发入门教程 》
编程语言熟悉后开始向Android过渡。

检索:

VPN + google

我当时学习的时候行业还不够成熟,网上能够找到的有用信息很少,现在关于Android的分享已经很多了,基本上大部分的问题都能检索到答案。大家可以去CSDN、掘金或者玩安卓里面搜索答案或者自己提问。

个人觉得最好的地方就是:

  • https://www.google.com/
  • http://stackoverflow.com/

初级篇:实践是检验真理的唯一标准

知识储备要求:

  • Java 语言基础
    虽说现在是kotlin first,但是市面上的APP基本上还是用的Java语言写的。不过,大家也可以选择先学kotlin。
  • Android 开发知识基础
  • 设计模式

学习方法推荐:

看书 + 逛博客 + 看视频

(当你入门后,你会有更强的鉴别能力,这个阶段可以较多的接触视频教学了,比较快速)

推荐书籍:
《深入理解java虚拟机》
《Java编程思想》
《java并发编程实战》
《第一行代码》
《android开发艺术探索》
《android编程权威指南》(工具书,当字典用)
《大话设计模式》
《head first:Java》
《重构》
《android源码设计与实战》

逛博客:
GitHub、掘金、CSDN、高质量的微信公众号

看视频:
现在网上的免费资源很多,但是都比较零散,没什么条理和系统,这边推荐B站几个比较实用的学习视频。

进阶篇:理论和实践的双重进阶

其实成为初级android工程师并不困难,但是目前初级android工程师已趋于饱和,因为这些年学习Android开发,想做这行的人实在是太多了。

这样的大环境可能会让一些正在走这条路或者想要走这条路的人感到并不容易。

但是想要脱颖而出也不是非常困难,只要你认真的学习,跟着下面的线路走。

知识储备要求:

  • 架构师筑基必备技能:
    深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
  • Android高级UI与FrameWork源码:
    高级UI晋升+Framework内核解析+Android组件内核+数据持久化
  • 360°全方面性能调优:
    设计思想与代码质量优化+程序性能优化+开发效率优化
  • 解读开源框架设计思想:
    热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
  • NDK模块开发:
    NDK基础知识体系+底层图片处理+音视频开发
  • 微信小程序:
    小程序介绍+UI开发+API操作+微信对接
  • 进阶大厂加分技术:
    Flutter进阶,跨平台开发技术

针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了系统性的,有条理的总结。

资料开源分享。有需要的朋友可以扫描【下方二维码】直接找我免费获取全套资料。

  • 架构师筑基语言基础

  • 设计思想解读开源框架

  • 360°全方位性能调优

  • Android框架体系架构

  • NDK模块开发(音视频开发系列)

  • Flutter学习进阶

  • 微信小程序开发

资料开源分享。有需要的朋友可以扫描【下方二维码】直接找我免费获取全套资料。

最后

技术提升需要一定的过程,脚踏实地走好每一步,先定好一个小目标,然后去实现。

希望大家好好利用这份资料,最终达成所愿。

升职有压力,我知道,我也知道很多程序员的学历都在硕士以下,有不少朋友,还在用本科学历,和那些名校硕士生,在职场死磕。

但是,我想说,牛逼的学历固然重要,但也不要让学历成为你自我设限,然后放弃努力的理由!

技术,该进阶的还是要进阶,搞开发,是凭借技术端的饭碗!

以上是关于如何成为一名优秀的工程师?顶级程序员的5点建议的主要内容,如果未能解决你的问题,请参考以下文章

(转)如何成为一名优秀的程序员?

怎样成为一名更优秀的程序员?我总结出 7 条建议

如何成为一名优秀的程序员?

想成为一名优秀的Web前端工程师,这5点你要知道

想成为一名优秀的Web前端工程师,这5点你要知道

如何通过自学成为一名优秀的 Android 开发工程师?