I am a professional software developer. A practical theoretic on the subject of software development. I have worked for different companies in the various industry. My role was either as their internal IT or in a consulting capacity.
My main interest is to understand how to design, architect and maintain a particular software system. I’ve looked into understanding patterns and practices of good software design and their applications to see what works and what did not. I am a follower of Eric Evan’s Domain Driven Design, and agile methodology and their manifesto. I focus
on proper encapsulation and has grown to understood the downside and recognizing symptoms of improper usage of tiered layers architecture.
I believe that software, in essence, must be seen as a living being (organic) rather than an object (engineering). This is because, over time, a software must grow and change to meet their demand, and just like any creature, it must evolve accordingly to the environment. Failing to do so will results in poor software maintenance and hindered the progress of the company itself.
It is our responsibility as a software developer that we must focus to balance these activities in order to maintain a reasonable software design. I believe that creating a software architecture is really more like urban planning. Whilst we should always identify and create the foundation, we must and always allow room for growth. It is also important to allow time to look and review the foundation itself.