In this time of frameworks and development tools, we rarely start from scratch. There is always some prescribed structure in place when we start a new project.
But, when there isn’t, we realise how much that structure leads us.
I have been tasked with writing a tool that does not immediately fit into the normal structure of a website.
Because of this, I had two choices, I could either force it into the stricture of a rails project, or I could step away from that crutch and work with a more lightweight and homegrown structure. I decided upon the latter.
I soon realised how much I had relied upon the imposed structure of rails to guide me in my design. All of a sudden I floundered in a confusing desert of freedom. I was free to design the structure of the app in any way I wanted, but which way? It was a horrible realisation. I had not in fact over the last 3 years got any better at designing software (as I felt smugly that I had). I had just been relying on the design skills of others to shape my efforts.
Don’t get me wrong, I think I have gotten better at software design over the last three years, but the improvement has not been at the level of software architecture and overall design, it has been at structuring the medium to lower level parts of the code.
Stepping away from rails had shown me that I still have lots to learn, but that I possibly have much less opportunity to actually do that learning.
This also highlights that if I (an experienced, 20 year veteran of software design and implementation) can feel lost in the desert, how much more bewildering must it be for people with less experience.