我最近向的软件工程管理职位转变,感觉力不从心,由于缺乏管理经验,一直觉得代码工程失控,思维推不下去。在要求下面做个功能的时候,写代码的同事总是丢三落四,或者完成了不告诉你,或者做了逻辑跟你想得不一样,或者整个模块托管给他做(黑盒)整个逻辑就乱套了,到维护的时候每人能看懂他写的代码。我Boss也经常说我管理的工程进展缓慢,工作量无法统计等等。办法是逼出来的,建立了这套标记方案,拿出来给大家讨论。
标记的格式:
- [任务类别] Task: '['[执行任务人]{Finish=[是否完成]; <Audit=[任务审核人] ;> <LastFinish=[最后完成期限] ;>}@[任务顺序Id]']'
- Task Script:
标记组成:
- 代码任务 //Code Task: [王伟晔{Finish=false;Audit=;}@001]
- 模块代码任务 //Module Task: [王伟晔{Finish=false;Audit=;}@001]
- 详细设计任务 //Design Task: [王伟晔{Finish=false;Audit=;}@001]
- 检测任务 //Debug Task: [王伟晔{Finish=false;}@001]
- 审核任务 //Audit Task: [王伟晔{Finish=false;}@001]
- 任务描述 //Task Script:
分发的工程事例:
首先,是概要到详细设计的部分(也就是总工给我的部分)。
Code
Code
//Design Task:[王伟晔{Finish=false;Audit=;}@001]
//Audit Task:[CIO{Finish=false;}@001]
//Task Script:
//1. Task是所有任务类别的基类,用于描述任务的通性;
//2. Task可以添加从属的Task,可从父Task访问子节点;
/// <summary>
/// Task是所有任务类别的基类,用于描述任务的通性
/// </summary>
public abstract class Task
{
}
然后,通过我的详细设计后,再分发到程序员的代码页:
Code
//Design Task:[王伟晔{Finish=true;Audit=;}@001]
//Audit Task:[CIO{Finish=true;}@001]
//Module Task:[王伟晔{Finish=false;Audit=;}@002]
//Task Script:
//1. Task是所有任务类别的基类,用于描述任务的通性;
//2. Task可以添加从属的Task,可从父Task访问子节点;
//3. Task类有(s)Id,(s)Code,(bln)完成标记,(p)审核人,(p)执行人,(d)最后完工日期属性
//4. (s)Id是Guid,除去横杠,全部大写
//5. 重写ToString():输出标准格式
//6. 实例可用创建模式创建,考虑可扩展跟踪序列标示。
/// <summary>
/// Task是所有任务类别的基类,用于描述任务的通性
/// </summary>
public abstract class Task
{
/// <summary>
/// 构造方法
/// </summary>
public Task()
{
//Code Task:[*{Finish=true;Audit=;}@003]
//Audit Task:[王伟晔{Finish=false;}@002]
//Task Script:idField赋Guid;(s)Id是Guid,除去横杠,全部大写
}
/// <summary>
/// 标识
/// </summary>
public string Id { get; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public string Finished { get; set; }
/// <summary>
///
/// </summary>
public string Aduit { get; set; }
/// <summary>
///
/// </summary>
public string Excute { get; set; }
/// <summary>
///
/// </summary>
public DateTime LastFinishDate { get; set; }
public static Task NewTask<T>() where T:Task
{
//Code Task:[*{Finish=false;Audit=;}@005]
//Audit Task:[王伟晔{Finish=false;}@002]
//Task Script:重写ToString():输出标准格式
return default(T);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
//Code Task:[*{Finish=false;Audit=;}@004]
//Audit Task:[王伟晔{Finish=false;}@002]
//Task Script:重写ToString():输出标准格式
return base.ToString();
}
}
程序员可以通过搜索关键字"Task:[CIO{Finish=false;"找到属于自己的任务,而且还可以导航。管理人员可以通过"Finish=ture;Audit=;"找到已经完成,但未审核地内容,或者找到需要自己审核的代码;项目经理还可以根据这些内容获得每人的工作量。
优点小结:
- 容易检查任务的完成状况;
- 清晰传达任务和关键内容;
- 抓大放小控制主干逻辑;
- 方便工作量的统计和监控。
- 免费,无额外的插件
现在诚邀各位参与讨论,希望各位多提改进建议。