做一个高效的、能为团队带来更多价值的 Web 开发者。
一、基本原则
- 我的职业是 Web 开发,做这份工作既是为了赚钱,也是因为我真的热爱 Web 开发。
- 为了更好的工作,主要精力应当放在 Web 开发相关领域上。
- 工作只是生活的一部分,我们还有更重要的事情需要关注,永远不要忘记这一点。
- 效率就是能力:程序运行效率、开发效率、维护效率。
- 不要太依赖工具,万一离开了自己熟悉的开发环境,难道只能眼睁睁的看着时间流逝?
- 开发流程中应该有以下两项:准备调试环境、单元测试(对自己的代码负责)。
- 技术为业务服务,不要想着做纯技术,要了解业务,也就是要了解你开发的产品。
不了解业务的开发就叫做闭门造车。 - 善于利用已有的资源做出更大的成就,而不是总想着重复发明轮子。
不过,为了深入地学习和研究某些关键的领域,我们还是会反复造轮子,这很正常。
即便不用反复造轮子研究,关键的轮子还是需要熟练掌握、彻底理解。 - 自学、分享、总结、反省。
- 团结:多交朋友少结怨。
- 开发过程中遇到问题应该先尝试自己解决,至少不要在一个问题上找别人两次。
- 学习不是复制 + 粘贴,常用的知识点,一定要记在脑子里。
- 可以当面说的就不要 QQ 聊,重要的沟通成果一定要以邮件形式发给所有相关人员。
- 如果做不到就要说 NO,但如果说了 YES 就一定要做到。
工作目标的达成,如果出现风险,一定要及时报告。 - 工作任务,工作目标,应该用一个 TODO 列表时刻提醒自己。
- 版权自律,至少在有选择的情况下,倾向于选择合法的产品。
- 爱护身体,早睡早起。
- 主人翁意识;团队合作精神;热爱技术、敢于挑战;抗压、抗挫折;执行力;
- 经验就是财富,尤其是大型互联网项目的设计和研发经验。
二、岗位职责
- 需求分析;参与需求评审,给出参考意见;
- 完成产品设计方案;
- 复杂流程的抽象与简化;
- 技术实现:软件开发、自测、代码评审;
三、通用技能
- 记笔记的习惯
- 整理好自己的文档
- 云存储
四、理论知识
- TCP/IP
- HTTP/HTTPS
- W3C 标准:JSON、XML、XMLHttpRequest(Ajax)、WebSocket
- ECMAScript
- 程序设计语言
这里并不是指编译原理什么的,而是指总结各种语言的一些基本要素,掌握学习方法,举一反三,一以贯之。 - 数据结构与算法基础
软件工程
- UML
- 敏捷:极限编程、结对编程
- 文档管理
- 过程管理
- 软件设计:数据流图设计、数据设计、界面设计、数据库设计、算法设计
- 软件测试:测试用例
- 测试周期:自测、单元测试、集成测试、回归测试
- 制定测试计划
- 设计和执行测试用例
- 分配测试资源
- 构建测试环境
- 开发测试工具
- 进行缺陷跟踪和软件质量分析
- 测试流程和方法创新
团队管理
- 工业管理与一般管理
- 如何开会?
- 研发团队日常管理
- 规范的流程控制
数据库
- SQL
- 数据库的设计理论
- 常用数据库管理系统
计算机网络
- 网络管理的相关操作一定要非常熟练(比如:Linux iptables)。
- TCP/IP、ARP、DNS
- HTTP
- 高并发网络编程
应试知识
- 数学:高等数学、线性代数、概率论与数理统计、离散数学
- 操作系统
- 计算机组成原理
- 微机原理与接口技术
- 计算机体系结构
- 编译原理
- C/C++、Java、汇编
- 其他
- 相关法律法规
- 标准化
- 信息化与信息系统
- 专业英语
业余稍微了解一下
- 多媒体技术及其应用
- 计算机图形学和数字图像处理技术
- 信息检索与数据挖掘
- 搜索引擎
- 计算机网络安全
- 密码学
五、开发技能
HTML + CSS + JS
Web 前端开发的三项最基本的技能。
可能我们还会用到以下知识:
- jQuery & jQueryUI
- ECharts
- HTML5 + CSS3
- React https://facebook.github.io/react/
- AngularJS
- BackboneJS
- Knockout.js
- RequireJS、SeaJS、CommonJS
布局:
- Bootstrap
替代:
- Dart
- CoffeeScript
- TypeScript
- CSS 预处理框架:SASS、LESS、Stylus
后端开发
- 深入理解语言特性
- 熟练掌握标准库与第三方库的基本用法
- 掌握各种调试技能
针对具体语言:
- Python
- 理解:Django(Pinax)、Tornado、eventlet
- 掌握:Web.py、SQLAlchemy、twisted、Jinja、IPython
- 了解:supervistor、HTTPie、requests、flask、BeautifulSoup
- ini、json、conf、xml、html、xls、md 文件操作
- PHP
- ThinkPHP、Yii...
- WordPress
- Ruby(ROR)
- Go
- Node.js
- R 数据分析
C/C++:
- 编译与构建:make/scons、gcc
- 调试:gdb
- gcov、valgrind
六、软技能
- 浏览器兼容性
- CSS Hack
- JS 时间系统
- 渐进增强,优雅降级
- 响应式布局
- WEB 安全
- 同源策略
- XSS 跨站点攻击
- CSRF 跨站点请求伪造
- 点击劫持
- SQL 注入
- 性能优化
- 压缩
- CSS Sprites
- 合并、减少请求
- 缓存
- CDN
- 避免重定向
- 代码:语义性、可用性和可重用性
- 界面交互/用户体验
- 方便调试
- 日志
- 自带调试功能
- 代码风格
- PHP:PSR
- Python:PEP-8
- 高可用(大型 Web 站点架构设计)
- 消息队列
- 任务调度
- 分布式计算
- 负载均衡
- 反向代理
- SEO
七、工具
服务器
- GNU/Linux 发行版:CentOS、Ubuntu
- bash、zsh、rsync、telnet、ssh、nfs
- iptable、selinux
- HTTP 服务器:Apache 和 Nginx
- 数据库管理系统:MySQL/MariaDB、SQLite、MongoDB
- Memcache、Redis
- RabbitMQ/ZeroMQ
- 需要了解的 NoSQL 数据库:Redis、CouchDB、MongoDB
还有谷歌的 LevelDB、BigTable - ...
资源
- fontAwesome
- IcoMoon
编码技能
- virtualenv
- tmux
- 源代码管理/版本控制
- SVN
- Git
- 排版:Tex & LaTex
- 代码整理工具
- 代码版本管理
- IDE
- PyCharm
- WebStrom
- PHPStrom
- 编辑器
- Vi、Emacs
- Notepad++
- Sublime + zencoding
- UltraEdit
- grunt
- uglify
- concat
- cssmin
- jshint
- csslint
- watch
- gulp
调试
- fiddler
- 抓包 Wireshark
善用 GitHub
- GitHub 上最热门的 JavaScrit 项目
- GitHub 上最热门的 CSS 项目
- GitHub 上最热门的 HTML 项目
- GitHub 上最热门的 Python 项目
- AwesomePython,另外可以访问它的 官网。
Web 开发
- 浏览器
- Firefox(Gecko)
- Chrome(Blink)
- IE(Trident)
- Safari(WebKit)
- 文件系统检测,某些时候真的很方便...
- 基于 Ruby 的 Guard
- Linux 文件系统事件监控框架:inotify(使用 inotify 监控文件系统的活动)
- F12:谷歌浏览器开发者工具,或者 Firebug
- 使用 PhotoShop、GIMP 做一些基础的图片处理工作
- Inkscape 矢量图编辑器,CorelDraw、Illustrator
- Dia,结构图工具,对应 MS Visio
- freemind
- 熟练掌握一门操作系统部署开发环境,我选择了 Linux。
- 希望我有一天能够熟练到完全地自由定制发行 GNU/Linux 操作系统。
- 另外,基于 “不依赖” 原则,Windows 的开发环境也要能熟练使用。
- 容器和虚拟化,可以更好地管理好自己的开发和测试环境
- 自动化部署
- Gearman
八、业务
- 搜索技术
- 分布式系统和体系结构
- 技术:MapReduce/BSP/实时计算
- 系统:Hadoop、HBase、Spark、Storm
- 分布式机器学习
- 跨平台资源调度
- 流式计算
- 虚拟化
- KVM + QEMU + libvirt
- VirtualBox、vagrant
- Xen
- 容器:Docker(LXC)、Kubernetes/OpenShift
- 云计算
- OpenStack/DevOps
九、产品
- 个人技术博客
- 至少一个成功的开源项目
十、参考
- 知道创宇,研发技能表v3.0
- 博客园,王福朋的博客,自己总结的web前端知识体系大全
- 北京邮电大学计算机学院,课程设置
- 知乎,一名合格的前端工程师的知识结构是怎样的?