/developer-skill

研发工程师技能

MIT LicenseMIT

研发工程师软技能表

本文大部分内容来源于:

知道创宇研发技能表v2.2

并对原文结合实际情况作出了适量的删减。

说明

  • 本技能表为${company}研发工程师必备技能
  • 聪明的人会根据每个tip自驱动扩展
  • 不聪明的,坐等别人手把手的人请绕行,不仅不适合${company},也不适合任何有Geek精神的公司

通用技能

公司与个人

  • 公司是盈利性组织
  • 个人和公司必须双赢
  • 工作
    • 在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作

沟通、反馈、责任

  • 一个无沟通能力的人,要么是天才,要么是不可爱的人
  • 反馈要及时
    • 避免出问题不反馈,影响进度
    • 方式
      • 正式的:邮件
      • 临时的:微信、QQ等即时通信
      • 礼貌的:给个电话、短信
  • 工作有大小,责任心无大小
  • 周报的透明
    • 意义:大家互相了解工作与心得,有利于自己的判断与成长
    • 不是单纯的给领导汇报工作

任务四象限,决定优先级

  • 紧急重要
  • 重要不紧急
  • 紧急不重要
  • 不紧急不重要

新事物的敏感性

  • 保持好奇心
  • 不要局限在自己的圈子,适当跨界吸收灵感
  • 订阅国内外优秀博客/资源,鲜果RSS阅读不错
    • 英文很重要
  • 选择性参与一些必要的会议,听必要的主题,讨论必要的话题

成长

  • 对知识的渴望程度决定了前进动力的大小
    • BT常说:「做人一定要狂热!」
    • 我说:「一定得贪婪!」
  • 不要矫情,不要浮夸!
  • 和比你厉害的人在一起,和一流的人工作
    • 指点往往是精华
    • 💥 杜绝笨蛋爆炸
      • 二流的人招进来的人不太可能是一流的
  • 思考
    • 批判性思考
    • 换位思考
  • ⭐ 提问的智慧
    • 遇到问题先独立思考,尽最大努力后再提问
    • 提问的智慧
  • ⭐ 小事心态
    • 越基础的事越关键,需要越细心
    • 不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
    • 基础不牢、地动山摇
    • 小事做不好,别提大事
  • ⭐ 任务拆分
  • ⭐ 方法论
    • 完成一件事有好几条途径,优秀的人的途径最短
    • 任务拆分很容易得出做事的方法论
    • 好的「方法论」会让你具备更强的「创造力」!
      • ⭐ 时刻问自己:「是否具备创造力?」

牛人姿态

  • 即使现在不是牛人,也得具备这样的姿态
  • 这种感觉只能意会
  • 没有一定扎实内功与远见的人很少有这样的姿态

完成的定义

  • 比如写个POC
    1. 搞懂了目标Web应用漏洞的原理
    2. 熟练运用Python各相关模块与机制
    3. 熟练了解了HTTP协议
      • HTTP请求
      • HTTP响应
    4. 代码写得够规范,让人看起来就是爽
    5. 程序经过足够的测试
      • 黑测试
      • 白测试
    6. 及时反馈进度
      • 我遇到困难了
      • 我搞定了
    7. 更新相关文档,沉淀

熟练的定义

  • 比如熟练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自己的特性
        • 所谓的会跟进去
    • 客户端跳转
      • <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在哪出现,最终就在哪进行真实模拟调试
    • 缩小范围
      • 构建自己的测试样例
        • 排除网络复杂未知情况
      • 关联模块一个个排除
      • 单步调试
        • 开发者工具
      • 粗暴调试:alertconsole.log
  • 敏捷**

    • 快速迭代
    • 任务拆细
    • v1原则:定义好v1的目标,快速完成v1为优先
    • 习惯Wiki记录,利于沉淀与分享

翻墙

  • goagent
  • shadowsocks
  • 其他