软件开发的升级打怪攻略:从新手到高级工程师

 

       通过对软件开发中的工作事务与微技能进行评估和分级,可以清晰地理解工作构成、评估当前水平、定位下一步发展的方向和思路。

 

       核心技能: 技术、编程、交流、合作、公众表达、规划、执行。

       两个维度: 开拓新的领域; 分享已完成的成果。

 

        难度系数 *** 1  (新手上路)

        1.  完成页面测试;

        2.  编写简明的文档;

        3.  能够理解基本业务;

        4.  日常普通的交流;

        5.  下载所需要的软件和工具;

        6.  完成简单的脚本实现临时需求;

   

        难度系数 *** 2  (亦步亦趋)

        1.  完成一个带命令行参数的实用脚本小工具;

        2.  完成一个函数或方法的单测;

        3.  完成一个服务接口的测试用例;

        4.  使用函数来结构化程序的组织;

        5.  使用数组、集合、列表、映射等容器来组织程序的数据;

        6.  使用系统API或库函数来操作文件与目录;  

        7.  学会使用工作中需要用到的软件与工具;

        8.  搭建软件开发环境,解决其中遇到的困难;

        9.  编译和运行应用,部署应用运行的服务器环境;

 

        难度系数 *** 3 (初出茅庐)

        1.  自己动手实现基本数据结构(数组、链表、栈、队列、二叉树、位图)的基本操作;

        2.  自己动手实现基本算法(排序、查找、选择、分治、递归、映射、过滤、聚合、动态规划);

        3.  完成一个小改动需求,小的 bugfix 或功能优化,含测试;  

        4.  编写脚本实现软件开发环境的自动化搭建;

        5.  学习和理解业务并梳理成文档;

        6.  绘制业务流程图、思维导图等;

        7.  理解小组成员的想法和构思,比较顺畅与小组成员交流;

        8.  聆听和理解产品需求并能和产品同学好好说话;

        9.  参加分享时预先准备, 会上做个发言或提问;

 

        难度系数 *** 4 (初露锋芒 - 初级工程师)

        1.  权衡优先级,进行一天的工作内容规划;

        2.  总结业务、项目与学习实践心得,博客分享赢得读者;

        3.  实现有难度的数据结构的算法,比如B+树编程;

        4.  能够排查普通或略偏难度的问题或BUG;

        5.  能够编写实用而健壮的监控脚本或数据订正脚本;

        6.  学习和使用设计模式来改善面向对象程序的结构;

        7.  编写实用而得当的业务文档、项目文档;

        8.  有能力与团队成员就技术工程议题进行交流讨论并发表见解;

        9.  能够理解比较复杂的业务并将其分解为可以规划和实施的子业务;

      10.  理解项目管理方法并能适当调节个人活动与项目总体进度保持同步;

      11.  理解产品设计与开发要点并能有效实现;

      12.  理解和完成前后端组件的交互、前后端团队的协作;   

      13.  适宜地发送私人邮件和公众邮件表达个人意见;

      14.  使用通讯工具简洁地私人答复和公开表达想法;

      15.  组织团建、预定会议室并主持团队周会;

        

        难度系数 *** 5 (风雨兼程 - 中级工程师)

        1.  实现复杂结构的编程, 复杂结构可能是List, Map 嵌套的复合结构,或者图结构;

        2.  实现含算法的综合编程, 比如迷宫回溯(含GUI); 

        3.  实现并发异步的编程, 比如 Ajax 编程, 并发实现词典的单词统计计数;

        4.  实现针对特定需求的可扩展的微框架的设计与实现;

        5.  编写测试框架和测试用例,实现可重复自动化测试;

        6.  理解分布式系统的整体架构设计,并完成普通业务开发;

        7.  对代码质量有比较深入的理解,能够坚持良好的编程风格;

        8.  完成一项需求的概要设计和详细设计(含数据库设计);

        9.  绘制子系统或子模块的整体框架图或架构设计图;

      10.  完成一项之前没有做过的技术工程工作,比如线上大流量服务分流;

      11.  能够排查比较深层次的业务方面的问题和BUG并进行修复;

      12.  确保负责的子系统的发布平滑完成;

      13.  参与和完成跨团队中型项目的开发,并参与第一次凌晨发布;

      14.  研究一个模块的源代码实现;

      15.  快速学习和应用一门新技术,比如HBase ;       

      16.  能够说服和邀请团队成员加入自己开展的项目;

      17.  理解、研究和讨论一项重要议题,并在会议上做出适当的发言;

      18.  能够在较小范围公众场合镇定地演示自己的工作成果;

      19.  完成一次良好的晋升面试; 

      20.  对一个业务主题做仔细的调研,并完成项目立项工作;

      21.  对一个中型需求做仔细的设计,并邀请团队成员进行设计评审;

      22.  在团队中分享在学习工作中掌握的新思想、新技术、新成果;

      23.  规划个人的季度总体目标及实施计划;

      24.  执行个人的季度总体目标及实施计划; 

 

        难度系数 *** 6  (激流勇进 - 高级工程师)

        1.  主导完成一个中型需求的开发,涉及需求理解、详细设计与实现、联调沟通、测试部署、线上运维等综合技能;

        2.  实现分布式系统下的复杂业务开发,涉及事务、并发控制等;

        3.  完成中大型跨团队项目的开发与合作;

        4.  独立负责一个中小系统的日常开发与维护工作;

        5.  深入到系统底层或框架内部细节排查细微的问题或BUG;

        6.  评估多个子应用或服务之间的依赖关系并保证无故障同步升级发布;

        7.  对系统的业务与模型进行抽象和解耦,实现可扩展和可维护的设计; 

        8.  绘制应用的整体框架图或架构设计图,从整体上思考问题的解决;

        9.  理解和把握公司、部门、团队的总体目标及方向;

      10.  规划个人的年总体目标及实施计划;

      11.  执行个人的年总体目标及实施计划;

      12.  规划小组的整体图景和方向;

      13.  执行小组的整体图景和方向;

      14.  指导初级工程师完成日常技术工作创造贡献; 

      15.  创造性地使用新方法解决问题改善工作效率;

      16.  完成普通项目的技术选型;

      17.  推进跨团队事务的如期完成;

      18.  流畅地与团队成员、TL、管理层进行交流和汇报;

 

      ----------------------------------- 分割线: 以下纯属 YY ------------------------------

 

        难度系数 *** 7 ( 劈波斩浪 - 专家,基层管理 )

        1.   主导完成一个独立子业务的服务化迁移;

        2.   主导完成一个独立子系统的重构;

        3.   有影响力地演示团队的工作成果与公司的品牌形象;

        4.   善于从整体上思考问题的解决方案并形成考虑周全的开放方案;

        5.   组建精悍团队来做有意义的项目或产品;

        6.   规划跨业务团队的总体目标及实施计划;

        7.   带领小组成员实现季度、年规划目标;

        8.  为重大项目做技术选型、架构设计或技术咨询;

        9.   指导中高级工程师做出优秀的工作成果和贡献;

      10.   在某个专业技术领域发挥着突出的技能和贡献;

      11.   综合运用知识、技能、经验、直觉等完成技术难题的攻克,比如交易引擎的设计与开发;   

      12.   综合运用知识、技能、经验、直觉等创造性地改善团队生产效率,比如自动化生成测试;

 

转载于:https://www.cnblogs.com/lovesqcc/p/6048114.html

你可能感兴趣的:(数据结构与算法,测试,设计模式)