First things first – learning software design and development fundamental principles

Many software developers has this conception of rapid change of what is happening nowadays in software development world. Software languages, technologies, frameworks are changing so fast and you cannot cope with it. You can not be on the wave with it. Sounds familiar? I feel your pain, my friend.

What is underneath this permanent changes? Underneath every software development language, technology, framework implementation is fundamental software design and development principles. Many times, fundamental principles are here for decades. Many times, so called new things have very much old and only little, if at all, new in them.

For example, MVC architectural pattern is implemented in many software frameworks which are used extensively nowadays. For surprise or not, Trygve Reenskaug introduced MVC into Smalltalk-76 in the 1970s. So, firstly it was implemented 45 years ago. Up to day, all pattern implementations share same fundamental principles defined by Trygve Reenskaug.

Another example, relational databases are still widely used in enterprise software applications. Edgar F. Codd defined fundamental principles of relational databases in 1970s, 45 years ago. All the implementations (Mircosoft SQL Server, Oracle, MySQL)  in its core  implement almost the design principles defined by Edgar F. Codd. Different implementations, yet same fundamental principles.

When I’m learning new software development language, technology or framework I begin with looking for fundamental principles behind its implementation. Why I do it? Many of them share same fundamental implementation principles, when you learning principles, you learn them all at once.

Top experts in any software development field knows its interest area fundamental principles, this means, they not only know how it is working, but why it was design the way it is. What core solution provided for recurring situation. Again, they learn fundamental principles. Also, this explains why they are experts on the first hand.

With practise you can also adapt thinking through fundamental principles view. Nice part of it, learning this way can benefit you not only in software development area, it can benefit any area in your life where you apply this thinking.

Firstly, look for finding and learning fundamental principles in anything you want to learn and when learn thing itself. This is how you understand more, learn more, become expert.

Leave a Reply

Your email address will not be published. Required fields are marked *