全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用程序栈。
- 一专多长
- 解决问题,而不是醉心技术
Done is better then perfect --- facebook
- 先精后广,一专多长
先一个专精,才有“亮点”。
- 围绕商业目标
老板雇佣一个员工,不是因为他能写程序,而是因为他能帮助自己赚钱。
- 关注用户体验
每一个糟糕的体验背后都蕴含着商机。
大巧若拙
做自己会用的产品(一定要是产品的目标用户)
岗位优于公司
《写给大家看的设计书》设计四大原则:对齐、对比、距离和重复。
将自己的简历做成自己的一个作品,会是一个很大的“亮点”。
大公司优势
- 较小的风险
- 技术最佳实践
- 垂直专精的技能
- 服务海量用户的经验
- 软技能
- 人脉
- 心态
答应做的事,全部都要完成,实在有问题,要讲出事实。
积累作品集。
- Github/Dribbble
- Github Pages + Jekyll/Dexy
前端视角
- 尽量减少同一域下的HTTP请求数
- 尽量减少每一个资源的体积
后端视角
- 提高服务器的请求处理能力
- DDoS攻击
服务器缓存
- 基本的数据库查询缓存
- 扩展数据库缓存:memcached
- 再加一层文件缓存
- 静态化
浏览器缓存
- Expires
- Last-Modified
- Restful Web API
- HTTP 1.1加入的Cache-Control
- 浏览器缓存的现实世界
知识体系
- 对浏览器兼容性的了解
- 对HTML/CSS/Javascript语法和原理的理解
- 对编辑器和插件的熟悉程度
- 对调试工具的了解程度
- 对版本管理软件的熟悉和应用经验
- 对前端库/框架的使用
- 标准/规范
中级工程师
- 对代码质量、代码规范的理解
- 对Javascript单元测试的熟悉
- 对性能优化的应用和理解
- 对SEO的应用和理解
- 代码部署
- 移动Web
高级工程师
- 代码架构
- 安全
- 对自动化测试的理解
一个转型故事之行动重于计划。
一定要是自己产品的用户,先要有,生存下来再优化。
《精益创业》:客户需求只有在实际使用中才能辨明,再多的前期调研也只能发现客户认为他们想要什么,而不是客户实际上想要什么。
- IOS原生开发
- Android原生开发
- 混合模式
版本控制最佳实践
- 鼓励频繁地提交
- 确定分支流程
- 定义主干原则,并坚守
- 不要把逻辑的修改和代码格式化操作混在一起
- 不相干的代码分开提交
- 保持工作代码库的“干净”
包管理
- 一个程序只做一件事,并做好
构建工具
全栈工程师最佳实践
通用通途语言VS特定领域语言
- 尽量用最熟悉的通用语言来解决问题,比如Python、Java或C++
- 优化解决方案,提炼出一种真正精简、优雅的扩展库
- 开源扩展库,根据其他人的贡献来继续优化解决方案
有条件建议购买VPS玩。
- 增加对网站全貌的了解
- 更稳定
- 部署自己的环境
- 学习Linux
- 理解HTTP
实践
- VPS选择:
- 内存>硬盘大小和读写速度>CPU
- 客户服务
- 关注服务器安全
- 操作系统选择
- CentOs 上手成本低,资料全,社区支持高
- Debian 更稳定,占用空间&资源少,
- 域名解析(建议设置在国内智能DNS提供商,如DNSPod)
- 云服务器(更小成本的替代方案)
- 高效编写代码
- 高可复用性
- 抽象带来的可读性
设计原则
- DRY = Don't Repeat Yourself
- 惯例优于设置
- KISS = Keep it simple,stupid
- 最少知道原则
如果平时没有做重要的事情,往往是在做紧急的事情
- 1.重要又紧迫(立即执行)
如:线上出现bug、服务器出现漏洞、用户投诉
往往第二象限问题没处理好导致,经常在这一象限,说明平时在“瞎忙”
- 2.紧急不重要(可请他人代劳)
如:会议、一些可转交的需求
- 3.重要但不紧急(制定计划)
如:线上体验优化计划、团队的长期发展方向和个人培训
主要工作投入,避免“瞎忙”
- 4.不重要不紧急(拒绝)
如:逛论坛、刷朋友圈
比如利用grunt/gulp,抽象常用代码库,整合常用工具
编程需要连续思考时间,也才能深入。
每25分钟专注工作+5分钟休息
了解其他岗位的基本知识和思维方式,减小沟通成本,提高自我价值。
笔跟纸是最灵活、最容易修改、成本最低的头脑风暴方式。
设计十大基本理论
- 亲密
- 对齐
- 重复
- 对比
设计工具
- Axure
- Sketch
- Quartz Composer
- 代码
- 兴趣
- 耐心
- 责任感
学一点管理
- 没有在最开始做出合理的时间评估
- 没有根据人员的强项来安排任务
- 没有唤起他们对项目成功的渴望
- 缺乏沟通
《卓有成效的管理者》5个思维习惯
- 知道时间用在什么地方
- 总是对外界的贡献
- 善于利用长处;包括自己、上司、同事和下属的长处
- 集中精力于少数重要领域
- 必须善于做有效的决策
针对目标听众,面对什么人,说什么话