全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是:
全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用栈
深以为然,所以,全栈工程师应该分为Web全栈和App全栈。恰巧最近看了本有关Web全栈工程师的书,记录下其中一些观点。
笔记
- 应该从能力和思维方式两方面来判定一个人是否是一个合格的全栈工程师。
- 对于一些经理来说,宁可雇佣多个可管理的普通工程师,也不愿意聘请一个不可管理的天才工程师。
- 一个前端工程师可能会不加思考地实现视觉设计稿,因为他的岗位说明里规定了自己的职责,这其中不包括质疑设计稿,所以他忽略了自己的最终目标:让产品更好。
- 全栈工程师除了在一个专精知识领域有深入研究之外,还以知识广博和解决问题能力强著称。
- Done is better than perfect
- 老板雇佣一个员工,不是因为他能写程序,而是因为他能帮助自己赚钱。赚钱有两种方法:减少成本和增加收入。
- 如果增加一个用户需要的功能是加分项的话,拒绝一个用户不需要的需求更加值得推崇。
- 要先看看有哪些问题需要解决,然后再补充您的工具箱。永远从商业目标的角度来决定学习什么,而不是纯粹为了锻炼技术能力去学习。
- 如果我开创一个公司需要招聘“全栈工程师”,我要求的三个能力就是一专多长、关注商业目标和关注用户体验。
- 绕开每个人都会去做的事情–投简历–转而做一个自己的作品,这就给企业传达了一个信号。
- 主动性是全栈工程师必备的一个特质,没有一个全栈工程师是被别人逼出来的。
- 每个人都要有意识地维护自己的作品集,它在半年一次的考核、晋升面试甚至以后的跳槽中都非常有用。
- 尽量减少同一域下的HTTP请求数,以及尽量减少每一个资源的体积。
- 把静态资源放在非主域名下,除了可以增加浏览器并发,还可以减少HTTP请求中携带的不必要的cookie。
gzip
是一种开源的数据压缩算法,其中g
代表免费的意思。- DDoS攻击者喜欢攻击的页面一般是会对数据库进行写操作的页面,这样的页面无法静态化,服务器更容易宕机。
- 越接近高级工程师,越考察对某个点的本质理解,以及在项目和团队中的引导作用,而不是对某工具的使用经验。
- 框架应该是比库更广泛的概念。一个库是一系列对象、方法等代码,您的应用程序可以把这个库链接进来,起到了重用代码的作用,剩下了重写这部分代码的工作量,而一个框架是一个系统中可重用的一部分。
- 行动重于计划,自己给自己挠痒。
- 因为大家害怕失败,所以想把产品调整得完美无缺才发布。但是世界上成功的软件都不是完美的软件,而是在合适的时间发布的、刚刚够用的产品。如果它能活下来,在后面的版本中,他才有机会越来越好。
- 让市场认可你的能力,而不是让老板认可,因为老板会变,老板的标准不一致,而市场是一致的。
- semver & npm dependencies rules
- 架构是当项目变得复杂之后必须考虑的问题,而项目总是会变得复杂的。
- “任何能用Javascript实现的,最终都必将用Javascript实现。”Atwood定律
- 语言只负责描述一个程序,而程序运行的速度,不取决于语言,而是算法和编译器的质量。
- 如果您平时没有做重要的事情,就会发现自己常常在做紧急的事情。
- 如果平时没有注意锻炼身体,就会常常去医院,花费更多时间
- 如果没有培养后辈,为每个项目设置接班人,就会常常需要到处救火。
- 如果没有配置好版本管理系统就开始工作,就会浪费更多时间去找回丢失的代码
- 如果偷懒硬编码一些变量在代码中,后续会花费更多时间过去调试
- 时间四象限:
- 拿工作时长来拼,这是体力劳动时代打工者的心态在作祟。
- 程序员大致分两种:科学家和工程师。科学家关注技术是否优越,而工程师关注产品是否完美。
- 懒惰的终极原因就是你想逃避这件事。
- 耐心是一种能力
- 用市场最高价格雇佣高效能人士组成团队 Netflix企业文化
- 所谓自我提升,首先是接纳自我,而不是贬低自我的性格。
- 不要为了迎合主流社会,而伪装成一个外向、热情、合群的人。
- 项目的定义是:在一定的约束条件下(时间和资源),具有明确目标的一次性任务。
后记
做自己感兴趣的事情,学想学的知识,不要怕走偏了,如果有人说不务正业,那就让他们说去吧。如果你能远离传统的路子,将会不同凡响。 –Steve Jobs