《Web全栈工程师的自我修养》---余果
一、全栈工程师
1.What?
web全栈工程师:至少包括服务器(比如Linux),数据库(比如Mysql),服务器端编程(比如Java,Php),前端标记语言和脚本语言(比如HTML,CSS,JavaScript)等。
2.Why?
(1)“各司其职”的弊端:
工程师职责不清导致效率低下
工程师缺乏主人感导致产品质量差
工程师缺乏全局的视野影响个人成长
更多角色导致项目效率低下
(2)全栈工程师特点优势:
一专多长
a.解决问题,而不是醉心技术---公司的存在是为了解决问题。互联网发展很快,问题的优先级不断变化,如果新计划是你不擅长的,应该立马开始学习新的技术,这就是所谓的关注问题,而非醉心技术。
b.高级工程师可以选择往上下游扩展自己的能力,并承担更多责任,给公司带来更大效益的同时也给自己带来更大的成长空间。
c.程序员在小公司里主动去承担更多责任,自己跟公司都会获得相应的成长。
d.在自由职业市场,全栈工程师是最耀眼的明星----能独立创作产品,容易被市场接纳。
e.天生的创业者。能够以最快速度测试自己的idea,从工作中锻炼出发现问题、洞察需求、设计解决方案并开发初始版本产品的能力。
3.How?
(1)先精后广,一专多长:在满足岗位常规需求的基础上,一定要在某个特定方向上有非常深入的理解。会做,理解背后的原因,理解背后的背后的原因。理解越深刻,找工作就越有优势。
(2)围绕商业目标:在考虑做什么项目的时候,围绕商业利益作为目标。因为技术是服务于商业目标的。
(3)关注用户体验:每个糟糕的体验背后都蕴含着商机
大巧若拙,
做自己会用的产品,创业公司做产品,CEO一定要是自己的目标用户,要去体验自己的产品
二、从学生到工程师
1.选择时先选岗位后选公司,自己喜欢的岗位,然后自己喜欢的公司
2.面试中,自己的作品是最强的信号,阅读能力及编码能力(著名开源项目中贡献代码),英文能力
简历建议:
a.确定求职意向,针对特定意向填写简历
b.表达出自己的创意,不要使用简历模版
3.实习建议
a.记住团队里的每一个人
b.有任何问题,主动问导师
c.主动介绍自己,告诉大家你是新人,请多关照(大家对新人的天真或愚蠢有更高的容忍度)
d.每周发邮件记录心得总结,经验教训,学习成长
e.实习期结束时,用邮件总结所有项目,给出交接文档,并向大家致谢
注:主动性是全栈工程师必须具备的一个特质,没有一个全栈工程师是被别人逼出来的。
三、工程师事业指南
1.积累作品集---作品集是指个人的项目和作品的集合,一份精心准备的作品集比简历更能说服人。
2.作品集要突出重点:突出某个技能的深度,可以针对这个技能列出大量作品,项目,专栏等。
四、高性能网站的关键---缓存
1.服务器缓存:
a.基本的数据库查询缓存:
b.扩展数据库缓存:memecached,数据库自带缓存是在Mysql所在的服务器上开辟的,能使用的内存空间有限。大型网站缓存不够用,这时需要使用服务器集群来实现数据库缓存。
c.文件缓存:可以将数据库查询结果缓存在内存中,也可以缓存在文件中。
优点:硬盘容量比内存大,可以缓存更多的数据。
数据更安全,断电之后数据还在。
易于扩展,硬盘不够用时可添加硬盘
缺点:文件缓存存取没有内存缓存快,只能作为内存缓存的补充。查找优先级为:内存缓存,文件缓存,数据库。
d.静态化
2.浏览器缓存:
五、持续集成:
持续集成包括版本控制、包管理、依赖关系、架构优化、自动发布等。
六、高效工程师:
1.阅读英文资料:StackOverflow、Google搜索;
2.时间管理四象限:如果平时没有重要的事情,就会发现自己常常在做紧急的事情。如果平时没能注意锻炼身体,就会常去医院花费更多时间。如果没有培养后辈,为每个项目设置接班人,就会常常需要到处救火。
如果没有配置好版本管理系统就开始工作,就会浪费更多时间去找回丢失的代码。如果偷懒硬编码了一些变量在代码中,后续一定会花费更多时间去调试。
一:既紧急又重要(立即执行) 二:紧急不重要(请他人代劳)
三:重要不紧急(制定计划) 四:不重要不紧急(Say No!)
注:建议工程师把80%的工作投入到第三象限中,避免“瞎忙”。
3.消除重复工作
第一步:详细记录自己一天的时间消耗,识别出时间花费在了哪里,以此作为优化目标。在合并代码上花费太多时间?还是提交测试?发布流程繁琐?编译太久?切图工作枯燥?
第二步:思考能否使用已有的工具--免费的或是付费的---来无缝衔接已有的流程中。
第三步:如果不能使用已有的工具,就自己去编写。在语言的选择上可以从这几个角度考虑:工具使用者是谁?用户的操作系统?
4.给自己留出不被打扰的时间
编程需要大量的精神投入,需要整块的连续的思考时间。eg:facebook 周三是没有会议的(No Meeting Wednesday!)
5.番茄工作法
1.每25min休息5min,每四个时间段多休息一会儿。eg:晨练,,,
6.纸上头脑风暴
1.笔和纸是最灵活、最容易修改、成本最低的头脑风暴方式。
比如写一篇文章前先画一个思维导图,把头脑风暴出来的所有关键词列出来,再根据金字塔形式的写作方法层层分解。
如果是开发一个软件,或者写一个脚本程序,可以把每一步主要工作都写下来,类似伪代码,但是抽象层级更高一点。
7.使用版本控制工具和构建系统
七、全栈思维
1.有兴趣就够了吗?
a.有没有想着把您的产品和您的名字联系起来?
2.学一点管理----《卓有成效的管理者》
a.有效的管理者知道他们的时间用在什么地方。
b.有效的管理者重视对外界的贡献。
c.有效的管理者善于利用长处,包括自己的长处、上司的长处、同事的长处和下属的长处。
d.有效的管理者集中经历于少数重要的领域,在少数重要的领域中,如果能有优秀的绩效就可以产生卓越的成果。
e.最后,有效的管理者必须善于做有效的决策。
3.沟通:被忽视的竞争力
良好的沟通是:“针对目标听众”,“有方法的”,“表达自己的想法”。
a.针对目标听众:
b.有方法:麦肯锡的金字塔原理。
4.示例:谈谈PPT
a.不要有太多文字:听众注意力只能放在一个地方,要么是PPT要么是您自己。PPT只是辅助,重要的是您本人。
b.设定进度:让听众知道自己在哪里,比如一开始告诉听众您的演讲时间,或者在PPT中设置进度表。
c.对待错误:放松
d.有条件的话,录像并对比提高:不要相信别人的评论,碍于面子,别人不会提出不好的评价。
5.性格内向的竞争力
a.性格内向尤其独到的价值。我是性格内向,这让我有很好的学习能力和不错的社会意识。
记住:性格来自基因,有其独特的价值,只要充分利用自己的天赋,就能得到您想要的。不要为了迎合社会主流,而伪装成一个外向、热情、合群的人。
书籍推荐:
《卓有成效的管理者》 美 彼得。德鲁克
《麦肯锡教我的写作武器》 日 高杉尚孝
《金字塔原理》 (美) 巴巴拉。明托
《安静:内向性格的竞争力》 (美) 苏珊。凯恩