原文地址:http://leihuang.org/2014/12/12/read-Full-Stack-Developer/
昨天晚上看海贼王给看睡着了(11点的左右),导致早上5点就醒了,怎么办呢,找点东西打发点时间,本来想看看知乎的,但是最近对知乎的氛围很失望,总感觉好浮躁的氛围,当然这些跟我关注的人有关系,改天清理清理.
犹豫了半天,想着还是看本薄点的书吧,下了个豆瓣阅读软件,因为以前没用过,本来想找书,结果点进了豆瓣专栏,还以为里面是书.进去之后才发现是别人写的专栏.也没想太多,看到有科技分类的就点了进去,排第一的名字叫<<谈谈全栈工程师>>.因为对这比较感兴趣,就开始看了.
里面有不少干货,感觉还不错,就想着发表这篇读后感,对即将毕业的我来说还是蛮有帮助的.
从早上5点钟看到11点左右,因为中途查阅了一些资料,顺便下了几本作者介绍的书.下面是整理的文章笔记.
这里时专栏链接:http://read.douban.com/column/226077/
1.什么是全栈工程师
全栈工程师的意思是说一个工程师可以处理数据库、服务器、系统工程和客户端的工作。根据项目的不同,客户需要的可能是mobile stack, web stack, 或者原生应用程序。
全栈工程师的好处:
- 由于全栈工程师对整体产品流程比较熟悉,可以做管理类的职位,比如项目管理或者技术leader,会比传统管理者更擅长任务分解和进度把控。全栈工程师在大公司中也会有很大的发展空间,比专精一门技术的工程师能触碰到更高的天花板。
- 因为全栈工程师有自己搭建整个站点的能力,所以适合做自由职业和创业。
- 我的观点是如果能在任何专精的职业中努力做到top 10%,那都会获得巨大的回报。比如做top 10%的前端工程师,或者交互设计师……都会给自己带来巨大的收益,成为炙手可热的职业明星,升职加薪都不在话下。
总之,全栈工程师是一个能够在所有场合都能发光发热,实现个人价值的职业,也是一个非常容易被市场接受的职业。在未来,中国也会像国外一样涌现出越来越多优秀的全栈工程师。
2.如何成为全栈工程师
除去极少数天赋异禀的神级程序员,我们大部分人都是凡人. 凡人要从一个小菜鸟成长为全栈工程师大神,只能从少到多,慢慢积累知识。这里我推荐采用“先精后广,一专多长”的流程来学习。
关注商业目标。归根结底,技术是服务于商业目标的。不能为了技术而技术,要为了产品而技术,而产品就是商业.
关注商业目标需要持久的练习。等到自己成为全能的大神,或者成为团队管理者,更加需要在多个目标任务之中做出选择。全栈工程师需要做和能够做的事情是很多的,他会很多技能,也负责处理很多工作,所以他更需要能力从诸多事情中找到从商业上最值得解决的一个:可能是制作一个工具提高团队的效率,也可能是成本上的优化,也可能是增加一个用户需要的功能,更有可能是拒绝一个用户不需要的需求。
3.全栈工程师可以做很多,他更需要有判断做什么的能力。
请总是从商业目标的角度看学习哪些东西,而不是纯粹为了锻炼技术能力而去学习。
一专多长、关注商业目标、关注用户体验。
一专多长并不是一个简单的目标,我所看到的更多是蹩脚的程序员hack各种代码,写着各种凑合能用的项目。我的建议是不要想着一口吃个胖子,先沉下心来吃主食——一专,等有精力了再来饭后甜点——多长,中间辅以《代码大全》《黑客与画家》《设计模式》等佐料,全栈工程师是水到渠成的事情。
4.nginx,apache,node.js对比
近年来Nginx越来越多地受到市场的青睐。在高连接并发的情况下,Nginx是Apache服务器不错的替代品,或者补充。一方面是Nginx更加轻量级,占用更少的资源和内存。另一方面是Nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能。 由于Apache和Nginx各有所长,所以经常的搭配是Nginx处理前端并发,Apache处理后台请求。 值得一提的是新秀Node.js也是采用基于事件的异步非阻塞方式处理请求,所以在处理高并发请求上有天然的优势。
5.一个程序只做一件事,并做好。
如果PPT中出现了代码,那观众打呵欠就会比较多,所以后来我就不怎么贴代码了。
行动重于计划,《重来》中也写到, You can’t be a good surgeon if you don’t get your hands dirty。
客户需求只有在实际使用中才能辨明,再多的前期调研也只能发现客户认为他们想要什么,而不是客户实际上想要什么。因此在不了解客户真实需求的情况下,只会多做多错。
使用原生技术来编写app的时候,可以充分调用系统的能力,比如多线程。但是在使用web技术来编写app的时候,所有的逻辑都只受限在一个webview的线程中,并且给系统说的话还要经过webkit内核的一次翻译!可想而知性能会有多么差。
牛逼程序员并不是敲代码有多快,多难让人理解——当然这也是牛逼的一种体现——而是能快速理解其它程序员的代码,并且自己的代码非常清晰。
我发现程序员大致可以分为科学家和工程师两类,科学家关注技术是否优越,而工程师关注产品是否完美。和科学家类型的程序员合作一起做项目往往是件痛苦的事情,他们太过关注自己手中的锤子是否先进,却不在意自己敲进去的钉子是否平整光滑不扎屁股,更不要说这颗钉子是不是跟其它钉子对齐了。特别是那些从更早的时代开始做程序员的更是如此,那个年代很多用户体验的技术不成熟,能做出一个能用的东西已经不易,更不要说做出一个性能还算不错的产品了。抱着这个想法走到今天,大多数没有进化应该被淘汰的程序员却反而坐到了更高的位置,开始拿这种过时的想法熏陶小弟。
6.项目开源
If you do it right, open sourcing code is great advertising for you and your company.
github上火的项目不是因为它用到的技术有多高深,而是它解决了用户的痛点,作者举例说它的一个php网站例子.根据需求去做项目
portfolio不一定是严谨而无趣的,之前有一个前端开发者就将自己的portfolio用一个html5游戏包装起来,让人非常印象深刻。
通过社会化媒体,树立起个人的品牌,即使不拿名片出去,也有人知道自己,这才是应该努力的方向。
佛家有一个词叫“度己度人”,就是在帮助别人的过程中,其实也是帮助自己的过程。
7.学会沟通
上司时间非常宝贵,你需要在20秒之内让他知道你的目标。
重点是,因为上司时间很紧迫,所以要在第一句话就告诉上司你的目的,不要掖着藏着,既想请求上司的帮助,又要求表扬。
无论你的想法多么复杂,已经自己进行了多么复杂的推演,最终你要沟通的时候,要注意两点:一、让自己要表达的立场足够简单。二、围绕着这唯一的立场去进行沟通。
ppt分享
- 不要有太多文字。听众的注意力只能放在一个地方,要么是幻灯片文字,要么是你自己。除非你不想让大家关注你,否则你应该用尽量少的文字在幻灯片中,幻灯片只是辅助。
- 设定进度。让听众知道自己在哪里了,比如最开始告诉听众你的演讲预计持续多久,或者在幻灯片中设置进度表。听众注意力只能坚持十分钟,所以不要太久。
- 对待错误:放松。临时出了点问题?放松,没人知道你犯了错。记住,你怎么对待错误,听众就怎么对待错误。你觉得这是世界末日,它就是世界末日,你觉得可以跳过,听众就觉得可以跳过。
8.为什么我想成为全栈工程师?
最后谈谈我自己为什么对全栈工程师感兴趣.
自从接触到全栈工程师这个概念之后我就觉得这是自己的发展目标,也是自己的兴趣所在.
我觉得全栈工程师更像是一个工程师,而专精的工程师更像是一个科学家.而我觉得自己没有潜力成为科学家,虽然我一直梦想自己能朝着科学家那个方向走,但是那需要天赋,而我没有,虽然我觉得自己智商还行,但还差的很远.所以我适合朝工程师方向发展.
还有一个原因是因为我无法抵制自己对新事物的兴趣,每当我听说某某技术很好时,我总是有去研究研究的冲动.也就是说三分钟的热血.当然我确实也能坚持下来,不过想学的东西确实太多太多.
第三点,是因为我对技术的热爱和对产品的热爱时同等的,我更希望自己能独立开发出一个自己喜欢的东西出来.
所以不管从天赋和兴趣我都适合朝全栈工程师方向发展,不过还是应该有精扩展到广,这是必须的.
9.推荐书籍
- 写给大家看得设计书
- 重来
- 一周4小时