Friday, September 12, 2008

Software Requirement Keep Changing? Frustrated Software Engineer?

  1. So client requirement keep changing? They don't have right process? Designer has not done their work properly? Client does not know what he wants? Making my life miserable? How many times I will move one text box and it's Label to left, right, left right?Like me, it's true that many software engineer bemoan the fact that software requirement keep changing.

    But we choose this profession to develop software, make people life easier, remove some of complexity from their life, and this changing requirement facilitates this goal.So requirement changing is not really the problem. The problem is that I am not in habit of accommodating change, that I and my process are not agile. I have written piece of code that is not agile, that it requires lot of changes to accommodate changes.

"Life is 10 percent what happened to you and 90 percent how you respond to it''

So how should I write peace of code that is agile in nature? Minimizing dependency between layers of code? Shoud I write my code in such a way that elements shuffle require just configuration change in some file? If database schema changes, it does not affect others? Or it just requires little changes? What should be my attitude to be effective in modern java development?

Be Disciplined:


By discipline, I don’t mean that coming office in sharp 8:45 AM before your manager comes and go after your managers leave office.
By discipline I mean follows basic rule of software development for each line of code you have delivered. Simply basic rule is to write unit test for code before actually writing the code, and then code particular requirement, run your unit test cases, and your code should do exactly what it supposed to do. And follow this basic principle for each line of code you have written. .

Think of code as Design, Not a product:

Code is not a product that is going to solve particular client or business requirement but think it as great, marvelous civil construction on virtual world. Then how should I beautify the piece of code I have written?

I believe basic rule is:

  • Each line of code should be covered by proper comments.
  • Each layer of your application code should be decoupled as much as possible i.e. minimizing dependency.
  • Following standard design patterns, principle for avoiding common software problems.
  • be agile, be adaptative, be fast, but don’t loose design principles and guidelines.

No comments: