读《Web全栈工程师的自我修养》

《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.性格内向尤其独到的价值。我是性格内向,这让我有很好的学习能力和不错的社会意识。
    记住:性格来自基因,有其独特的价值,只要充分利用自己的天赋,就能得到您想要的。不要为了迎合社会主流,而伪装成一个外向、热情、合群的人。

    书籍推荐:

    《卓有成效的管理者》 美 彼得。德鲁克
    《麦肯锡教我的写作武器》 日 高杉尚孝
    《金字塔原理》 (美) 巴巴拉。明托
    《安静:内向性格的竞争力》 (美) 苏珊。凯恩

你可能感兴趣的:(个人相关)