Wednesday, January 9, 2013


Quality Improvement: a 4th grader’s lesson

“Everything we need for today’s marketplace we learned as kids”
-Huntsman(in his book, “Winners Never Cheat”).


           
            Truly, who would have thought that the lessons we had way back when we were elementary ‘pupils’ will be useful today and even in our careers. Analytical and solving problem skills are important to a ‘komsai’ student like me, and so to other professional developers out there. Thus, it gives an advantage to those who have trained these skills during their elementary years. This leads me to the idea that software quality in software development is also similar on to how we usually solve math word problems back in 4th or 5th grade.

             Quality is a vague word and when asked about its definition, one gets a variety of answers. In the following section, I will introduce some ways on improving quality in terms of software development, which is quite similar to solving word math problems. 

1. Understand the Problem
           
        What does the client need? 
       A must thing a developer must do in every  software development process. In order  
       to produce a good quality software, understanding the problem is the key. When  
       one has a full understanding of the problem --  why it  exists, what are its needs---, 
       higher are chances that the  team will be able to produce a program that will address 
       the needs of the clients, is reliable, and has higher customer satisfaction.

2. Identify the Knowns and Unknowns
            The ‘knowns’ refer to the ‘given’ information in a math problem, while the unknowns(usually denoted as x) are those information which the problem is asking.

        Research and gather sufficient information about the stakeholders.
        In software development, there is a tendency for software developers to only look    
        for the things that the client wants and needs. Little do most people know that    
        identifying the ‘knowns’ will be a great advantage to the development. These  
       ‘knowns’ may vary but mostly include having a knowledge on the client’s  background 
        information, their assets, resources, policies and laws. Having a great deal of    
       understanding of these kind of things will give us information on how to   go about  
        the development process.



3. Translate the Problem into Mathematical Language
         List down requirements and other specifications.
         This means translating the client’s needs into system requirements, and writing     
          down specific details on each of the requirements.
          
         Design and Architecture.
         Make a complete and thorough design on the flow of the program. This will serve as   
         a guide on how the actual making(coding) will go about and what appropriate  
         algorithms, programming language, and data  structures to use.
          
          Plot down schedule.    
          This will aid on keeping the team on track with the project deadlines and goals.
                       
4. Solve the Problem
This is basically decoding the Requirements into software through coding.
         The fewer the lines, the better?
         Not necessarily. Software quality is not determined by  number of  LOCs(Lines of 
         Code) of a program. It is not best to measure quality through LOCs, but 
         certainly there are other better means to do it.
         
         Use FPA(Function Point Analysis), instead of LOC
         It is better in determining whether or not a program needs to be improved                 
         since it counts the number of function points in a program, rather than LOCs.
           
           
5. Check your answers
          Review Code a million times!     
          Most developers tend to forget this part after finishing #4 but it saves a lot in terms  
          of time, effort, and costs. Code reviewing will help determine bugs and defects   
          early before even deployment of the software.

          Let others also do a review on your code.      
          Sometimes, we tend to be so   familiar of our code that we can’t notice errors like 
          missing semicolons, etc. It is important that you also let others (your seniors) to   
          review your code so that they can give suggestions on better ways on improving  
          it(like a better data structure to use).

These are just among the many things that can help in improving quality. Most importantly is how interesting it is that these things were already taught to us back when we were 4th and 5th graders. (Nah, not necessarily these things, just exaggerating)

This is list out of the learnings I had as a computer science student and back when I was in elementary. Hope it helps!

No comments:

Post a Comment