软件开发攻略技巧 西安尚学堂

很多人在学习软件开发时很兴奋,为这即将踏入高薪的门槛兴奋不已。孰知软件开发行业水深似海,对于新入门的小白,没练几手,很容易被淹没那大“大海”里。
软件开必,顾名思义,是用电脑的语言告诉电脑来执行人给它的命令。软件开发的应该就不在此赘述。本文通过对软件开发中的工作事务与微技能进行评估和分级,可以清晰地理解工作构成、评估当前水平、定位下一步发展的方向和思路。

软件开发攻略
软件开发核心技能:
技术、编程、交流、合作、公众表达、规划、执行。
两个维度:
开拓新的领域;分享已完成的成果。
一、难度系数 >> 1 (新手上路)

  1. 完成页面测试;
  2. 编写简明的文档;
  3. 能够理解基本业务;
  4. 日常普通的交流;
  5. 下载所需要的软件和工具;
  6. 完成简单的脚本实现临时需求。
    二、难度系数 >> 2 (亦步亦趋)
  7. 完成一个带命令行参数的实用脚本小工具;
  8. 完成一个函数或方法的单测;
  9. 完成一个服务接口的测试用例;
  10. 使用函数来结构化程序的组织;
  11. 使用数组、集合、列表、映射等容器来组织程序的数据;
  12. 使用系统API或库函数来操作文件与目录;
  13. 学会使用工作中需要用到的软件与工具;
  14. 搭建软件开发环境,解决其中遇到的困难;
  15. 编译和运行应用,部署应用运行的服务器环境。
    三、难度系数 >> 3 (初出茅庐)
  16. 自己动手实现基本数据结构(数组、链表、栈、队列、二叉树、位图)的基本操作;
  17. 自己动手实现基本算法(排序、查找、选择、分治、递归、映射、过滤、聚合、动态规划);
  18. 完成一个小改动需求,小的 bugfix 或功能优化,含测试;
  19. 编写脚本实现软件开发环境的自动化搭建;
  20. 学习和理解业务并梳理成文档;
  21. 绘制业务流程图、思维导图等;
  22. 理解小组成员的想法和构思,比较顺畅与小组成员交流;
  23. 聆听和理解产品需求并能和产品同学好好说话;
  24. 参加分享时预先准备, 会上做个发言或提问。
    四、难度系数 >> 4 (初露锋芒 - 初级工程师)
  25. 权衡优先级,进行一天的工作内容规划;
  26. 总结业务、项目与学习实践心得,博客分享赢得读者;
  27. 实现有难度的数据结构的算法,比如B+树编程;
  28. 能够排查普通或略偏难度的问题或BUG;
  29. 能够编写实用而健壮的监控脚本或数据订正脚本;
  30. 学习和使用设计模式来改善面向对象程序的结构;
  31. 编写实用而得当的业务文档、项目文档;
  32. 有能力与团队成员就技术工程议题进行交流讨论并发表见解;
  33. 能够理解比较复杂的业务并将其分解为可以规划和实施的子业务;
  34. 理解项目管理方法并能适当调节个人活动与项目总体进度保持同步;
  35. 理解产品设计与开发要点并能有效实现;
  36. 理解和完成前后端组件的交互、前后端团队的协作;
  37. 适宜地发送私人邮件和公众邮件表达个人意见;
  38. 使用通讯工具简洁地私人答复和公开表达想法;
  39. 组织团建、预定会议室并主持团队周会。
    五、难度系数 >> 5 (风雨兼程 - 中级工程师)
  40. 实现复杂结构的编程, 复杂结构可能是List, Map 嵌套的复合结构,或者图结构;
  41. 实现含算法的综合编程, 比如迷宫回溯(含GUI);
  42. 实现并发异步的编程, 比如 Ajax 编程, 并发实现词典的单词统计计数;
  43. 实现针对特定需求的可扩展的微框架的设计与实现;
  44. 编写测试框架和测试用例,实现可重复自动化测试;
  45. 理解分布式系统的整体架构设计,并完成普通业务开发;
  46. 对代码质量有比较深入的理解,能够坚持良好的编程风格;
  47. 完成一项需求的概要设计和详细设计(含数据库设计);
  48. 绘制子系统或子模块的整体框架图或架构设计图;
  49. 完成一项之前没有做过的技术工程工作,比如线上大流量服务分流;
  50. 能够排查比较深层次的业务方面的问题和BUG并进行修复;
  51. 确保负责的子系统的发布平滑完成;
  52. 参与和完成跨团队中型项目的开发,并参与第一次凌晨发布;
  53. 研究一个模块的源代码实现;
  54. 快速学习和应用一门新技术,比如HBase ;
  55. 能够说服和邀请团队成员加入自己开展的项目;
  56. 理解、研究和讨论一项重要议题,并在会议上做出适当的发言;
  57. 能够在较小范围公众场合镇定地演示自己的工作成果;
  58. 完成一次良好的晋升面试;
  59. 对一个业务主题做仔细的调研,并完成项目立项工作;
  60. 对一个中型需求做仔细的设计,并邀请团队成员进行设计评审;
  61. 在团队中分享在学习工作中掌握的新思想、新技术、新成果;
  62. 规划个人的季度总体目标及实施计划;
  63. 执行个人的季度总体目标及实施计划。
    六、难度系数 >> 6 (激流勇进 - 高级工程师)
  64. 主导完成一个中型需求的开发,涉及需求理解、详细设计与实现、联调沟通、测试部署、线上运维等综合技能;
  65. 实现分布式系统下的复杂业务开发,涉及事务、并发控制等;
  66. 完成中大型跨团队项目的开发与合作;
  67. 独立负责一个中小系统的日常开发与维护工作;
  68. 深入到系统底层或框架内部细节排查细微的问题或BUG;
  69. 评估多个子应用或服务之间的依赖关系并保证无故障同步升级发布;
  70. 对系统的业务与模型进行抽象和解耦,实现可扩展和可维护的设计;
  71. 绘制应用的整体框架图或架构设计图,从整体上思考问题的解决;
  72. 理解和把握公司、部门、团队的总体目标及方向;
  73. 规划个人的年总体目标及实施计划;
  74. 执行个人的年总体目标及实施计划;
  75. 规划小组的整体图景和方向;
  76. 执行小组的整体图景和方向;
  77. 指导初级工程师完成日常技术工作创造贡献;
  78. 创造性地使用新方法解决问题改善工作效率;
  79. 完成普通项目的技术选型;
  80. 推进跨团队事务的如期完成;
  81. 流畅地与团队成员、TL、管理层进行交流和汇报。
    七、难度系数 >> 7 ( 劈波斩浪 - 专家,基层管理 )
  82. 主导完成一个独立子业务的服务化迁移;
  83. 主导完成一个独立子系统的重构;
  84. 有影响力地演示团队的工作成果与公司的品牌形象;
  85. 善于从整体上思考问题的解决方案并形成考虑周全的开放方案;
  86. 组建精悍团队来做有意义的项目或产品;
  87. 规划跨业务团队的总体目标及实施计划;
  88. 带领小组成员实现季度、年规划目标;
  89. 为重大项目做技术选型、架构设计或技术咨询;
  90. 指导中高级工程师做出优秀的工作成果和贡献;
  91. 在某个专业技术领域发挥着突出的技能和贡献;
  92. 综合运用知识、技能、经验、直觉等完成技术难题的攻克,比如交易引擎的设计与开发;
  93. 综合运用知识、技能、经验、直觉等创造性地改善团队生产效率,比如自动化生成测试。
    八、难度系数 >> 8 (飘浪江湖 - 架构师,中层管理)
  94. 分析市场发展动向和竞争同行动态并形成业界认可的参考价值高的报告;
  95. 分析国家政策变化及行业发展变化并形成业界认可的参考价值高的报告;
  96. 塑造个人的行业影响力并为公司带来有益影响;
  97. 会晤某高层人士洽谈合作事宜;
  98. 为跨业务团队大型项目做架构设计或技术咨询;
  99. 领导部门团队成员实现部门季度、年规划目标;
  100. 持续领导部门级的发展战略和实施计划的执行。
    九、难度系数 >> 9 (雾里看花 - 参谋长, CXO)
  101. 实现跨部门的季度、年规划目标;
  102. 持续领导跨部门的发展战略和实施计划的执行。
    十、难度系数 >> 10 (不归之路 - 创始人)
  103. 实现整个组织的季度、年、长远规划目标;
  104. 持续领导整个组织完成有意义的季度、年度目标,并为社会承担企业责任;
  105. 实现组织的持续盈利模式;
  106. 吸引和说服投资者持续投资。

你可能感兴趣的:(软件开发)