前言
1、读书的时候觉得理论知识和后端知识比较无用,但在工作中却证实,它们非常重要,所以我现在页经常回头复习一些基础知识
2、做你自己想做的事情,学你想学的知识,不要怕走偏了,如果有人说你不务正业,那就让他们说去吧。如果你能远离传统的路子,你将会不同凡响。
什么是全栈工程师
1、项目管理:甘特图,一种柱状图:显示项目、子项目、进度以及其他与时间相关的系统的进展情况。
2、扩展:全栈框架MEAN
3、扩展:PaaS服务平台
4、关注问题,而不是醉心技术:公司的存在意义就是解决问题,公司要解决用户的问题,而员工要解决公司的问题。
5、影响力就是跨界解决问题
延伸阅读:黑客与画家、专业主义
如何成为全栈工程师
1、先精后广、一专多长:你需要在招聘要求的方向上以200%的能力来得到这个职位。
2、在考虑做什么项目的时候,围绕商业利益作为目标。归根结底,技术是服务于商业的。老板雇用一个员工,不是因为他能写程序,而是因为他能帮自己赚钱。
3、当你只有一把锤子,你看什么都是钉子。而如果你痴迷于工具,反而看不到问题所在。因此,要先看看有哪些问题需要解决,然后再补充你的工具箱。永远从商业目标的角度来觉得学习哪些东西,而不是纯粹为了锻炼技术能力而去学习。
4、做一次演讲或者汇报,第一件要紧的事不是做PTT,而应该调查听众,站在听众的角度去思考:听众知道什么信息,听众想知道什么。
5、把结论放在开始,方便对方快速了解情况;如果需要老板拍板,给出选择题,而不是问答题。
6、汇报邮件不要以“我做了一个工具。。。”开头,而应该以“我发现了一个问题。。。”开始
7、关注用户体验
延伸阅读:重来:更为简单有效的商业思维、精益创业
从学生到工程师
1、岗位优先于公司,即使再一个很好的公司里面,如果知识作者自己不喜欢页不擅长的工作,那能有什么前途呢。
2、设计四大原则:对齐、对比、距离和重复
3、记住团队里的每一个人;有任何问题,主动问导师;主动介绍自己,告诉大家自己是新人,请多关照;每周发邮件记录新的总结、经验教训、学习成长;实习结束时,用邮件总结所有项目,给出交接文档,并向大家致谢。
延伸阅读:编程之美:微软技术面试心得
野生程序员的故事
知易行难的开发者
延伸阅读:打找facebook
工程师事业指南
1、那个什么都懂的家伙。“无论多难搞,他肯定能解决”的信赖。
2、怎样获得良好的声望? 答应做的事,全部都要完成。
3、“我现在手头有XX工作,现在给我这个任务可能会来不及,看能否把之前的工作转交给XX”
4、如果使用得当,开源代码是你和你公司最好的广告
5、重视作品集:再商业化的市场里,对方(高效地)得到你的信息,您得到您应有的评价,这对双方是互利的。
延伸阅读:您就是极客:软件开发人员生存指南、代码整洁之道
全栈工程师眼中的HTTP
扩展:HttpWatch:检测页面所有HTTP请求
1、减少同域请求
2、常用的图片格式有哪些,他们的使用场景是什么?
延伸阅读:图解HTTP、高性能网站建设指南
高性能网站的关键:缓存
1、很多时候,优化算法和压缩图片带来的优化效果可能远远不如优化缓存
2、服务器缓存、浏览器缓存
延伸阅读:网站性能监测与优化
大前端
1、前端知识体系
初级:浏览器兼容性的了解、html/css/javascript 语法和原理的理解、对编辑器和插件的熟悉程度、对调试工具的了解程度、对版本管理软件的熟悉和应用经验、对前端库/框架的使用、标准/规范
中级:对代码质量、代码规范的理解、对javascript单元测试的熟悉、对新能优化的应用和理解、代码部署、移动web
高级:代码架构、安全、自动化测试
2、所有工程师都要学习:项目管理、数据库、软件开发流程、C++
3、不要迷信大框架,越需要满足更多人的需求,会封装很多你可能不要的资源进去。
4、重构工程师需要理解和熟悉:性能、动画、SEO、可用性和移动等方面
延伸阅读:精通CSS:高级web标准解决方案(第二版)、但也web应用:javascript从前端到后端
向移动端转型
1、客户需求只有在实际使用中才能辨明,再多前期调研页只能发现客户认为他们想要什么,而不是客户实际上要什么
2、让市场认可你,而不是让老板认可
3、“我有面向对象编程的基础,也会MySQL数据库,这是不是做IOS App的一个优势?”“有Mac就行”——行动重于计划
延伸阅读:Getting Real、从0到1:开启商业与未来的秘密、Building iphone Apps with Html,css,and javaScript
持续集成
1、版本控制:SVN、Git。最佳实践:频繁提交...
2、包管理:npm、Bower
3、构建工具:良好的架构:合适的分离粒度、最小知识原则、DRY、最小化预先设计,只设计必须内容、通过良好的层级,让文件易与找到、在代码层面,有一至且可执行的命名规则
延伸阅读:Pro git、Git版本控制管理
理解编程语言
延伸阅读:代码大全、代码的未来、禅与摩托车的维修艺术
全栈游乐场
VPS
软件设计方法
1、设计模式关注点:高效编写代码、高可复用性、抽象带来的可读性
2、如果内部实习出了问题,需要动手术解决的话,就不应该使用适配器了,因为那样是治标不治本的方法,反而会增加代码复杂度。
3、架构模式,MVC是一个抽象程度很高的设计模式
4、工程师水平高低并不在于敲代码有多块、复杂性有多高,而是能快速理解其他工程师的代码,并且自己编写的代码也能让其他工程师快速理解。
5、设计原则:DRY=>于系统架构关系密切、三次法则、惯例优于设置、KISS原则、最少知道原则
延伸阅读:设计模式、JavaScript设计模式
高效工程师
1、阅读英文资料:google、StackOverflow
2、时间管理四象限:紧急又重要/紧急不重要/重要不紧急/不紧急不重要
3、第一象限的问题往往是第二象限的问题没有制定好计划而滑落过来的
4、重复的工作应该给计算机去干
5、给自己留出不被打扰的时间
6、番茄工作法:劳逸结合
7、跨界思考
8、纸跟笔是最灵活、最易改、成本最低的头脑风暴方式。
9、如果下属基础需要加班才能完成工作,我会认为这是管理者的失职
10、长期加班=>不会去找高效的方法
11、下班后尽量不要处理需求,多点时间自我学习,或者准备一些分享,甚至做一些编外项目。
延伸阅读:软件随想录:程序员部落酋长Joel谈软件、卓有成效的程序员
学习设计
设计理论:亲密、对齐、重复、对比
扩展:sketch、quartz composer
全栈思维
1、老板给你任务,根本不关心你有什么理由,只关心你有没有完成
2、如果你想让团队一起造一艘大船、你不要告诉他们如何建造一艘大船,而应该唤起他们对大海的渴望。
3、有效的管理者善于利用长处,包括自己的长处、上司的长处、同事的长处和下属的长处
4、根据员工特质来授权:有意愿但是能力不够的:教会他做事的方法,提升学习能力;有能力但意愿不够的,多进行感沟通;有意愿又有能力的员工,大力培养;没有意愿没有能力的,尽早开除。
5、良好的沟通是:“针对目标听众”“有方法地”“表达自己的想法”
6、项目中有一大半的代码量部署我能完成的,所以我的主要精力放在推动各个部门的其他岗位的同事来协作
7、假如你收到从另一个集团或者部门的同事发过来的协作请求,而且对方跟你是平级员工,为什么你要帮他=>度己度人:找到那个关键的人,对他来说,帮助你对他是很有好处的。最好的办法是诉诸对方的利益/把问题上升到领导(慎用);
8、与上司沟通:汇报:求表扬、请求、询问
9、需要在20秒之内让他知道你的目标:麦肯锡的金字塔原理=>中心目标
10、“我们需要做什么”=>第一句话;a、表达立场足够简单。b、围绕唯一立场去沟通
11、PTT:设定进度=>一开始告诉听众演讲时间
延伸阅读:卓有成效的管理者、麦肯锡教我的写作武器、金字塔原理、安静:内向性格的竞争力