
I am a freelance software developer specializing in Drupal, Zend Framework and PHP.
"[A] computer language is … a novel formal medium for expressing ideas about methodology. [We] believe that the essential material to be addressed by a subject at this level is … the techniques used to control the intellectual complexity of large software systems."
Despite the book being 22 years old, this quote from Structure and Interpretation of Computer Programs has not lost in validity.
It has, to the contrary, become even more important. Software is nowadays an integral part in most businesses, entailing new use cases, demanding improved usability and powerful APIs. The complexity of software systems grows rapidly, facilitated by the availability of better hardware and wider integration of external resources.
One of the key concepts in managing complexity is separation of concerns. While concerns are often ambiguous, I would like to highlight two aspects that aid in their implementation
- Documentation
- Usually it is quite easy to figure out what a piece of code does. However, without documentation it is impossible to figure out what a piece of code should do. If both where the same, all programs would be free of bugs. Documentation describes what a piece of code should do.
- Developer roles
- A database developer has a different view on a persistence layer than someone developing the business logic. Separating the interfaces for these two roles leads to cleaner APIs and to a steeper learning curve.
If you like to know more, have a look around. I hope you enjoy your visit to my site.

Other places where you can find me: