一份项目小结及思考
来源:互联网 发布:网络赚钱qq群 编辑:程序博客网 时间:2024/05/18 01:05
项目进行到了一个阶段,是时候做一次小结了。
1、个人成长
就我个人而言,大致可以归纳为:
程序员熟练工(项目开始前有过1年半工作经验) --> 编程熟练工 --> 初步成为带有项目/产品意识的程序员(涉及需求、团队培训、项目计划)
2、技术成长
涉及到的技术包括:
- 基于Eclipse的IDE开发:Editor,Debug框架,GUI等
- 需求描述工具
- 代码生成技术:EMF、MWE、Xpand
- DSL (领域建模语言)工具Xtext
涉及到的开发流程包括:
- 需求讨论、追踪(英文)
- 项目开发要件:编码风格(Java, Xtext),代码审查
- 单元测试框架(TDD)
- Build相关
- 修改bug
3、遇到并解决过的难题
3.1、技术/工具升级
Xtext在两年半的开发中版本变更频繁(0.7.2 -> 2.3.0),而且还在不断升级,面对这种升级可以采取下列应对措施:
- 跟踪技术变化,化被动为主动
- 调整代码结构,将API/程序结构变化产生的影响减到最小
- 建立升级评估模版,把升级的工作纳入可控状态
3.2、运用抽象避免重复开发
项目开发中很多功能点和要求大致相似,为了避免重复编写冗余代码可以采取:
- 函数级抽象:避免大函数,尽量提高函数的可重用性
- 充分利用API:避免每个人自己重复编写API,学习并充分利用框架提供的API并进行相关的修改,编写自己的API
- 公共模块/插件:提高复用
可以通过下列几个方面尝试改善需求对开发的影响:
树立正确的心态:要正视需求变更,烦躁情绪不能解决问题,还不如好好考虑如何面对
追踪需求变更:需求变更往往通过聊天、邮件、会议的方式提出,因此一定要对客用户提出的变更要求进行记录,可以通过文档、邮件或wiki来进行;切记,一定要和客户确认相关的变更内容,以及认可对项目开发可能产生的影响!
技术准备:在项目开发中,尽可能地使代码和设计变得灵活,这样可以减小需求变更带来的影响
流程准备:思索需求变更的原因,并纳入到项目开发的流程中
自己是否考虑得不周全?比如异常流程
自己是否理解了对方的意思?用自己的理解重复对方的需求
是否缺少定期的需求沟通?比如每周例会,周报等
学会拒绝:对于客户突然提出的需求,要能够依据之前的项目计划进行调整,必要的时候可以拒绝或调整开发计划
3.4、公共资源和培训
在项目开发中,会积累很多技术资源,但由于资源分散在各个人员中间,因此很容易出现
同一个问题重复解决,信息得不到及时分享这样的问题,可以采用下列方式解决:
- 集中搜集的资料:文档、书本、文章
- 集中项目编写的技术文档:设计、评估报告
- 每个成员都可以访问并可以添加
- 定期组织技术交流
3.5、临时方案(walkaround)
很多时候,为了赶上项目进度或遇到困难的问题,会采用临时方案(walkaround)。可能是将配置写死,或者是直接修改开源组建的代码。
虽然可以暂时解决问题,但是会对后续的开发产生不良的影响:
- 避免为补丁打补丁,要即使修复
- 能够追踪项目中应用的临时方案
- 及时作出决定:是重新设计还是将临时方案永久采用
3.6、如何解BUG
解BUG环节,除了要修复现有问题,还要做下列工作:
- 要明确BUG是什么?
- 要了解为什么会出现这个BUG
- 是设计问题?
- 是编码实现问题?
- 是需求不清或是理解有误?
- 如何处理困难的Bug
- 开发没有问题,发布后出现BUG:是否Build过程有问题
- 不可重复出现的BUG
4、软技能
4.1、沟通能力
- 英文能力至关重要。
- 清晰地阐述技术方案。
- 提出有效/有意义的问题。
- 理解并重复客户的需求,对方的观点。
- 有效的邮件沟通。
4.2、了解业务知识
- 了解工具相关的业务知识(开发中的实际需求)。
- 了解工具在整个项目开发流程中的位置。
- 能够区分重要/次要的功能点。
4.3、学会思考
依据实际项目要求,思考各种备选技术的优缺点(团队的熟悉程度),选取合适的技术。
思考团队成员问题背后的需求,并予以相应的支持(或者找到外部支持)。
通过不断反思,逐步改进开发过程中的问题,在项目进度允许的情况下为团队成员的自我提升创造条件(任务分配,技术资源,及时沟通)。
- 一份项目小结及思考
- 区块链小结及思考
- 项目小结及心得体会
- 搭建SSM项目框架全过程及思考
- 搭建SSM项目框架全过程及思考
- 多一份思考,少一行代码
- 项目小结及难点复盘
- 项目思考
- 项目思考
- 近期思考小结
- 推荐系统思考小结
- 近来项目中遇到的问题及思考
- XX科技条码项目的反省及思考11-04
- 区块链开源项目Ripple二、相关概念介绍及思考
- 大型项目架构演进过程及思考的点
- 大型项目架构演进过程及思考的点
- 大型项目架构演进过程及思考的点
- 大型项目架构演进过程及思考的点
- java--Mysql连接池管理类
- Android Makefile分析 .
- 关于jQuery的cookies插件2.2.0版设置过期时间的说明 (使用过,真的OK)
- python libsvm 学习总结系列一
- ASDF(Lisp项目构建利器)使用说明
- 一份项目小结及思考
- 用clojure解决euler problem 7
- 启用数据空间:让VirtualBox虚拟机中的Ubuntu 10.10和XP主机互通有无
- 磁盘阵列-带宽和IOPS对性能影响
- java 多线程
- ubuntu GCC编译器
- Common mail 包的使用
- 在windows7下如何正确的安装及配置java运行环境及java编译器(Eclipse)
- 求一个数的二进制的位数