Monday, September 2, 2013

How the Personal Software Process (PSP) can bring consciousness and discipline to Computer Science and IT Professionals
Marlene Sánchez – IT Architect
September 2nd, 2013

A couple of months ago, I posted an article regarding the importance of the Documenting Discipline on IT projects in which I provided some recommendations to support the practice. Specifically, I proposed the utilization the PSP (Personal Software Process) to educate IT professionals on that discipline; however this recommendation initiated an interesting and polemic discussion among my colleagues about how this can be possible.
So given the previous fact,  in the following post I will provide a supported argument regarding how PSP (Personal Software Process) can change the mindset of Computer Science and IT professionals to make them more disciplined, committed and responsible on the work they are performing. I want to support my recommendation not only to promote the discipline of documentation but also to improve IT professional´s daily work.

Personal Software Process (PSP): Definition and background

The creator of this process, Watts Humphrey defined PSP1 as a self-improvement process that help software engineers to control, manage and improve the way they work. Humprey created this process to address common problems that companies face when they are creating software products, for instance: creation of poor quality software, delay on delivery time, over budget, and excessive repair of software products.

During his research, Humprey discovered that software engineers apply intuitive software processes when they are constructing software artifacts which works fine for simple and non-complex systems. However, when a software product is complex, the productivity of an engineer or team is jeopardized, since intuitive processes (given their non-repetitive nature) add more complexity and errors to the development effort. For instance, If I as a developer have applied intuitively a software process that includes steps A,B and G and a colleague next to me that is working on the same project and module uses his own process that includes step A, C, D and E,  to produce a similar product, there is no way in which we can compare our productivity or expect to deliver a product with the same quality and on similar timing. In this regard, it could be that I have considered using a list of common errors with their correspondent solution which could diminish code time in contrast with my colleague, who uses to reanalyze an error every time it is presented. So, the truth is that, without standardization, consciousness and metric comparison among colleagues and yourself, It´s not possible to know which process makes the professional more productive and in this specific point is where PSP enters the picture.


Personal Software Process (PSP) in Action

In practice, PSP is implemented by phases and on each phase the IT professional creates consciousness of what he/she is doing right or wrong on the performed activities and how he/she can improve. How this happens? Well, It´s similar to learn to play violin since you need to actually see yourself on a mirror every day in order to observe your body movement and technique to identify what you can correct. The same occurs with PSP, however the mirror in PSP are the output metrics that the process generates for the professional. 

In resume, PSP has three levels of maturity: 1) PSP0 and PSP0.1 that introduce initial process disciplines and measurements 2) PSP1 and PSP1.1 that introduce detailed information of estimation and planning and 3) PSP2 and PSP2.1 that introduce quality management and design. In practice, new metrics are included by level and each superior level implies more maturity and better process ‘outcomes (e.g. products without bugs and on time)

So after this basic explanation of PSP, let me exemplify its application with a real example:

Suppose you are a programmer that wanted to construct a module for credit card validation using PSP0. In this scenario, your inputs to the process should be: 1) functional description of what is needed, 2) required measure forms: Plan Summary, Time Recording Log and Defect Recording Log, 3) Defect Type Standards and 4) a watch (digital or analog) for time recording.
Now, PSP0 establishes three macro phases that are mandatory in the process: Planning, Development, and Postmortem. In the Planning phase professionals must estimate the time to perform their activities and must document estimated numbers on the Plan Summary Form. On the Development phase professionals must use their preferred software methodology (e.g Waterfall, RUP, agile, etc) to implement the program and must document the real time spent on each of the performed activities (e.g. design/implementation/compile/test) on the Time Recording Log (including interruption time), as well as defects encountered on the Defect Record Log. Finally on the Postmortem phase professionals must complete the project plan Summary with the actual time and defects encountered during the development process and analyze the final metrics. Why is this valuable for a developer? Well, after completing the process it is proved that programmers are able to identify:
  •          Problems in their estimation efforts that derive on delay on activities
  •      In which part of the process they inject more errors
  •      Which problems take more time to solve and why
  •     Flaws in part of the process that derive on error injection. For instance, lack of documentation activities in the process

So thank to PSP, professionals can visualize and manage specific opportunity areas in future iterations and be able to compare metrics against other colleagues and themselves. The discovering of root causes of problems is eased and new strategies can be applied iteratively. In this regard, continuous improvement becomes a personal challenge for them and they are committed to that idea. 

PSP for all Professionals

Finally, after visualize PSP0 in Action, you must be thinking that PSP can be used only on software development activities, however this not true since all kinds of processes can be measured and improved based on previous iterations metrics. For instance, if you are an IT support professional, you can analyze your support process and assess your performance to become more productive, so it is important to be open and embrace a continuous improvement methodology, no matter which kind of IT specialist you are.   

Conclusion

In conclusion, the Personal Software Process (PSP) is the first step for Computer Science and IT professionals to become more disciplined, committed and conscious about their daily work. It is a fact as well that the process can bring improvements to your personal performance and to the company you work for. Indeed, the process will help you to identify if your current processes are the best ones, or if documentation generated in your projects is a root cause of failure. So, be ready to embrace a continuous improvement methodology, you will not be sorry.

References
                                                                          
[1] Humphrey Watts, “PSP A Self-Improvement Process for Software Engineers”, SEI Series in Software Engineering, Addison Wesley, 2005


No comments:

Post a Comment