本文大部分内容来源于:
知道创宇研发技能表v2.2
并对原文结合实际情况作出了适量的删减。
- 本技能表为
${company}
研发工程师必备技能 - 聪明的人会根据每个tip自驱动扩展
- 不聪明的,坐等别人手把手的人请绕行,不仅不适合
${company}
,也不适合任何有Geek精神的公司
- 公司是盈利性组织
- 个人和公司必须双赢
- 工作
- 在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作
- 一个无沟通能力的人,要么是天才,要么是不可爱的人
- 反馈要及时
- 避免出问题不反馈,影响进度
- 方式
- 正式的:邮件
- 临时的:微信、QQ等即时通信
- 礼貌的:给个电话、短信
- 工作有大小,责任心无大小
- 周报的透明
- 意义:大家互相了解工作与心得,有利于自己的判断与成长
- 不是单纯的给领导汇报工作
- 紧急重要
- 重要不紧急
- 紧急不重要
- 不紧急不重要
- 保持好奇心
- 不要局限在自己的圈子,适当跨界吸收灵感
- 订阅国内外优秀博客/资源,鲜果RSS阅读不错
- 英文很重要
- 选择性参与一些必要的会议,听必要的主题,讨论必要的话题
- 对知识的渴望程度决定了前进动力的大小
- BT常说:「做人一定要狂热!」
- 我说:「一定得贪婪!」
- 不要矫情,不要浮夸!
- 和比你厉害的人在一起,和一流的人工作
- 指点往往是精华
- 💥 杜绝笨蛋爆炸
- 二流的人招进来的人不太可能是一流的
- 思考
- 批判性思考
- 换位思考
- ⭐ 提问的智慧
- 遇到问题先独立思考,尽最大努力后再提问
- 提问的智慧
- ⭐ 小事心态
- 越基础的事越关键,需要越细心
- 不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
- 基础不牢、地动山摇
- 小事做不好,别提大事
- ⭐ 任务拆分
- 成长过程会经历:能力越大、责任越大、事情越多
- 思路
- 拆分细化为多个点
- 排好优先级
- 加入时间维度:何时完成
- 是否需要寻求帮助,谁能帮你,自己单干?
- 任务是否可以切换/并发
- 自己欠缺什么,立马发现
- ⭐ 方法论
- 完成一件事有好几条途径,优秀的人的途径最短
- 任务拆分很容易得出做事的方法论
- 好的「方法论」会让你具备更强的「创造力」!
- ⭐ 时刻问自己:「是否具备创造力?」
- 即使现在不是牛人,也得具备这样的姿态
- 这种感觉只能意会
- 没有一定扎实内功与远见的人很少有这样的姿态
- 比如写个POC
- 搞懂了目标Web应用漏洞的原理
- 熟练运用Python各相关模块与机制
- 熟练了解了HTTP协议
- HTTP请求
- HTTP响应
- 代码写得够规范,让人看起来就是爽
- 程序经过足够的测试
- 黑测试
- 白测试
- 及时反馈进度
- 我遇到困难了
- 我搞定了
- 更新相关文档,沉淀
- 比如熟练SQL注入
- SQL语句这门“语言”能脱离文档顺手写出
- 主流数据库的SQL特有函数、存储过程、机制我都了如指掌
- MySQL
- MSSQL
- Oracel
- Postgre
- Access
- SQLite
- ...
- 牛逼的工具我不仅用的顺其自然,源码还读过几遍,我能修改
- sqlmap
- ...
- 我具备创造性,而不仅仅是跟在大牛身后
- 研究出了几个不错的技巧
- 发了几篇不错的Paper
- 对外会议/沙龙等进行了几次分享
- 写出了自己的相关工具,爽
- 我实战了N回,遇到了很多奇葩环境,我有足够的信心绕过
- 以上这些之后,这才叫熟练!其他同理
- 至少完整看完与练习好一本书
- 至少过一遍官方文档
-
HTTP抓包与调试
- Fiddler
- Charles
-
什么是跳转
- 服务端跳转
- 302
<?php header("Location: 3.php"); ?>
- 301
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: 2.php"); ?>
u=urllib2.urlopen(url)
后,u.url
能得到服务端跳转后的地址- urllib2自己的特性
- 所谓的会跟进去
- 302
- 客户端跳转
<meta http-equiv="refresh" content="0; url=http://www.evilcos.me" />
- htmlparse解析就行了
location.href="http://evilcos.me";
- 正则(弱),js引擎(王道)
- 服务端跳转
-
Office能力
- Word文档编写,看去要专业,尤其对外的
- Excel里面大量的统计、图表功能,需要善于使用
- PT演讲、培训等必备,如何做好PPT?百度一下……
- 😋 其他
- ❗ 脑图(如何整理思路)
- 数据可视化(如何汇总)
- ❗ markdown(如何写好别人能看懂的内容)
-
熟练VIM
-
算法
- 快排
- 二分
-
正则表达式
- why?搜文件、换代码......
- 怎么学?资源那么多,百度去
-
瀑布模型
- 需求->需求分析->设计->开发->测试->上线->运维/运营
-
❗ 需求分析能力
- 给你一个需求,如何给出一个优美的执行思路——方法论
- 这个能力非常非常非常的关键
-
调试能力
- 只要定位出,就没有解决不了的Bugs
- 肉眼看到的都是假象
- 一定要专业的工具与经验配合
- Bugs在哪出现,最终就在哪进行真实模拟调试
- 缩小范围
- 构建自己的测试样例
- 排除网络复杂未知情况
- 关联模块一个个排除
- 单步调试
- 开发者工具
- 粗暴调试:
alert
,console.log
- 构建自己的测试样例
-
敏捷**
- 快速迭代
- 任务拆细
- v1原则:定义好v1的目标,快速完成v1为优先
- 习惯Wiki记录,利于沉淀与分享
- goagent
- shadowsocks
- 其他