These guidelines I believe makes a programmer, developer, software engineer and solution architect a professional, and below are the promises I make as a professional.
> I will leave my code testable
If for some reason I am not able to write my own unit tests, i will design my modules and functions in a way that makes it easier to write tests for my legacy code.
> I will improve code
When i review code, I’ll try to make it better. I will improve it and make it understandable in a human readable format, meaning that I’ll refactor large methods to make them easier to follow, give meaningful names to variables making them easier to read and i will remove code that is commented out to stop code rot, SVN (SubVersion) or other code repository solutions handles remembering old code for me.
> I will use design patterns
They are build on best practices from many years of software engineering experience, helping developers to build maintainable solution´s understandable by more than just the mall group currently working on the solution. I will learn and use them!
> I will build what is needed today
Building my solutions based on today´s requirements, not on what might be useful tomorrow. It is today´s business cases i am trying to solve, not one that might arise tomorrow.
> I will welcome change
Never fear changing requirements from a client or solution. My solutions will be built in a way so that they also can handle the changes in requirement´s. And I will have trust in my solution to have the necessary test coverage to give me the confidence that changes won´t break my functionality.
> I will continue to learn
Uncle Bob (Robert C. Martin) said it very clear in his keynote at NDC 2009; “What would you think of your doctor if he or she stopped learning about new treatments and Illnesses. A good doctor?” As a professional programmer/developer/architect – Should i stop learning about technology, patterns, languages etc??. NO! As a professional I will dedicate at least 5 hrs/week to learning about things somewhat outside my technological comfort zone.








