Teaching old dogs new frameworks
Out of your comfort zone?
Over the last few months more of my project work has been in web-based technologies. My background is in database and back-end software development so in the past I never really had much opportunity to practise web development. Sure I could create valid HTML and CSS and I could explain what AJAX was and how it worked, but my practical experience was little more than “Hello World” kind of code, which is quickly written and forgotten.
Much of my professional programming life has been centered around SQL and shell scripting both of which are mature and very stable languages. I had reached a level of mastery where I could think in the language and pretty accurately estimate in advance how a solution would ultimately look and how long it would take to build it. My familiarity is such that I haven’t needed to look at language references for a very long time and I had experienced most optimisation tricks so that I was pretty much writing them in from the beginning.
This degree of specialisation in technology is very desirable. It takes years to experience a wide enough range of challenges to force you to practise all the subtleties of your craft. I was extremely comfortable and able to solve pretty much every development task thrown at me.
I started seeing every challenge as being solvable in the same way and my specialisation was predetermining the technology used, design approach and how the system would behave to conform to my language comfort. This is not always a bad thing - at the end of the day you want to build the best system you can with high degrees of certainty. However the downside was the growing gap between my understanding of "my" technology and the increasing lack of understanding about the rest of the software ecology. I unintentionally designed solutions to support my world view exclusively.
I decided to take the plunge and throw myself into a framework (Ruby on Rails) which I had heard a lot about but had mostly dismissed. More importantly was that the emphasis of my effort would be focused more on the front and middle end platforms that are more outside of my comfort zone.
This is not about which language is best. It isn’t even about which platform is best. It’s about evaluating the right tool for the right job. In my reading, as I was learning the new languages and approaches it was difficult to separate the ideology and fan-boyism and letting the technology speak for itself.
More than once I saw the argument that a single development framework was desirable to abstract away the complexity and burden from the developer to have to learn other technologies, for example, SQL.
This is backwards. There are many good reasons to take away complexity and burden from your developers, but it should not involve “protecting” them from understanding underlying technologies and principles.
Writing efficient SQL is a fundamentally different thought process to procedural or functional programming, it’s not difficult, just different. I fear this kind of silver-bullet thinking when applied to technology ultimately punishes the developers in the trenches when the difference between ideals of the framework and actual problems becomes evident.
I cannot deny the power of these frameworks. Once I started to trust the framework and to understand the design decisions behind their choices, it was really quite liberating to break with my personal development traditions and be challenged to see with new eyes. In my specialisation, I had created as many bad habits as I had good, and the new learning enabled me to re-evaluate which was which.
There are many good reasons for corporate development standards and the technology stack is one of the first big questions that needs to be decided, and then supported, vigorously. I wonder how a medium to large business which has already made investment in certain technologies and skills can periodically find points of reflection, where even if they stick with their investment, they can still get the benefits of new approaches and renewal.
I don’t have any answers, the business has to be responsible and shouldn’t flirt with every new technology but maybe there might be room for some experimentation?
Technology does not stand still and we need to periodically let ourselves be exposed to new techniques. In a recent chat with a university lecturer I was informed their undergraduates will be taught Python first, then other languages as needed. It is logical therefore that this grounding in Python will lend itself to certain frameworks, so increasingly the skill pool will tend towards this world view. You may find yourself being moved in this direction either by talent or by acquisition.
Have you recently had a skill refresh? When does specialisation become a weakness?
This author is on Google+