For years I’ve been on the business side of technology.
Software was a black box of objects passing parameters and data to other objects. Conceptually it’s pretty easy to describe those relationships and feel comfortable throwing around names of API commands, discussing the merits of frameworks, and explaining how objects inter-related and the testing paradigms that proved them reliable. If you didn’t probe you might think I had detailed knowledge of the inner workings of these things.
I’m learning to code and discovering it’s not as easy as the concepts led me to believe.
Even for my simple purposes, a data driven niche media web application, I’ve had to learn 4 languages. And by learn I mean that if they were spoken languages I’d usually get coffee when I thought I asked for it – not that I could carry on a conversation. Add to that 1 framework that I know will make things easier and more scalable in the long run – but assumes you’re conversational already so speaks too fast and uses words you don’t understand. And before any of that stuff could work I had to install and configure 3 services for the development environment.
Each component interacts and has dependencies so you can’t produce anything without a rudimentary understanding these relationships. And I just know that in the future I find that elegance and performance comes from deep understanding.
Still it’s possible for me to attempt this because of the great resources and community that develop around each language, framework and component. I’ve used text and video tutorials, scoured forums and programmer blogs for answers to questions, and downloaded tools if they look to be useful. Slowly I’m beginning to make progress.
Of course I could have saved myself the effort and had someone who’s already fluent speak for me – but what fun would that be. It’s not just that I get to decide what this application does (assuming it progresses to the point it does something) its that software fluency gives me an increasing appreciation and understanding of how the services I see everyday operate, and how complex they really are.
Oh! And to all those programmers that I antagonized by asking “how hard can it be” when some business pressure meant a 90 degree turn in code – I apologize. I now know software happens at the level of details not concepts.