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


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

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

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

            难度系数 *** 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.   综合运用知识、技能、经验、直觉等创造性地改善团队生产效率,比如自动化生成测试;

  • 相关阅读:
    ubuntu部分端口命令的使用----开启端口/开启防火墙
    ElasticSearch 5.0及head插件安装
    维基百科语料中的词语相似度探索
    Mac下多版本JDK安装
    Mac OS 终端利器 iTerm2
    android mat 转 bitmap
    simHash 简介以及 java 实现
    Python数据可视化之matplotlib实践 源码 第二篇 精进 第六章
    Python数据可视化之matplotlib实践 源码 第二篇 精进 第五章
    Python数据可视化之matplotlib实践 源码 第一篇 入门 第四章
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/6048114.html
Copyright © 2020-2023  润新知