如何评估个人的软件开发能力

来源:互联网 发布:知乎炸鱼 编辑:程序博客网 时间:2024/04/20 07:26

如何评估个人的软件开发能力从基本的来看

基础:

 1. 读程序的能力     

很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构,理解该软件初始的开发思想,能迅速并有效地参与到项目开发中去。 

2. 编码能力     

这点会涉及到开发人员对所用语言的熟练程度,和该开发人员的编程风格。是否拥有良好的编程习惯,能遵循通用的编程规范,并作好注释,对该开发人员所开发代码的易读性和易维护性有很大的影响。 

3. 调试和测试能力     

现代的软件行业中,代码的调试和测试时间并不比编码时间短,甚至会超出,当然,很多的调试和测试工作并不都是编码人员完成,但测试工作是很多软件开发人员的必经之路。 

4. 软件的维护    

似乎维护谈不上需要什么能力,因为这时更多需要的是开发人员的耐心。

 

进阶能力

1. 需求分析的能力     

一个项目,最初就需要做需求分析,了解该项目的目的,对系统的需求,对功能的要求,并对其进行分析,作好项目规划和说明 。 

2. 建立软件框架的能力     

建立一个良好的软件框架是这个项目成功的一个保证,需要考虑整个软件的一致性和完整性。 

3. 贯穿项目始终的管理控制能力     

在项目开发过程中,不可避免会出现新需求的加入,目标的修正,或者人员的变动等问题,对此进行有效的管理控制是对开发人员的更高要求。

 

软件工程师→软件设计师→架构设计师或项目管理师

 

A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。    

  B.一门编程语言,现在基本上都是面向对象的语言,JAVA/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。    

  C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。    

  D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等    

  E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。    

  F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。    

  G.一种软件过程,RUP/XP/CMM等等,通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。当然还有其他的一些软件工程知识。    

  H.项目管理、体系结构、框架知识。

 

具体实施方法

1.实践

2.参考代码

JAVA领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛

3.英文阅读

4.读书

5.工具

程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。   从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。

6.请教他人

你是否在google中搜索了问题的解决办法?你是否查看了JAVA API文档?

你是否查找过相关书籍?你是否写代码测试过?    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

能力指标

具体

技术

Java Web应用开发的基本技能

l  基本知识

–   WEB应用、JAVA开发  

l  JAVA框架构成

–   基本框架、公共组件

数据库设计、开发与维护

l  设计

–   E-R图、逻辑设计和物理设计、使用PowerDesigner 、数据量的评估分析

l  开发

–   视图、存储过程、触发器

l  维护

–   使用PowerDesigner 、备份和恢复、监控数据库性能

系统分析和设计的能力

l  系统分析

–   需求捕获

l  用户访谈、小组会议、问卷表

–   分析

l  业务需求、用户需求、功能需求

–   工具

l  时序图、类图

l  系统设计

–   架构设计、功能设计、UI设计、数据库设计、接口设计

系统测试能力

l  测试计划、测试方法、测试环境、测试人员安排、回归测试

应用软件过程的能力

l  软件过程模型的选择

–   模型:瀑布、迭代、XP……、我们的特殊性:产品开发、定制开发和产品导入

l  技术预研

l  开发过程

l  部署过程

l  试运行过程

l  变更控制

业务

公司产品理解

l  公司产品

l  目的

–   企业形象、业务挖掘、不是卖产品而是导入产品,或解决方案提供和管理模式输出

方案

l  内容

–   方案概述、需求分析

–   解决方案、关键技术、实施方案

l  方法

–   不是Ctrl_C+Ctrl_V,关注用户需求、不了解的情况下做什么:课前下足功夫

PPT宣讲

l  前期准备

–   用户关注什么、哪些关键用户参与

l  准备PPT

–   金字塔分层、关键的东西要写出来、言简意赅,多用图片

l  准备宣讲

–   时间、多练习

l  宣讲

–   多观察、有突发事件怎么办

l  总结

领域知识

l  项目管理

l  企业级项目管理

行业背景

l  目的

–   共同语言

l  如何掌握

–   收集、项目

管理

制定计划的能力

l  计划做什么

–   目标明确、范围分解、工作量估算、资源分配

l  其他计划

–   成本、测试、配置、沟通、资源

项目跟踪报告

l  目的

–   让公司和客户对你放心、让公司和客户帮你干活

l  报告内容

–   本期已完成、下期计划、存在问题及对策、

l  应该还有

–   成本、资源、风险

和项目涉众沟通的能力

l  目的

–   维护项目目标一致

l  做法

–   计划、沟通周期、沟通方式

l  会议

–   会议准备:拟定会议议题、会议时间、参会人员、记录员、签到表和议程

–   会议过程:记录、主持的方法、一定要有决议、遗留问题要确定下次会议时间

–   有成果物评审的

 参考:百度文库