Doh – it’s one of those days – I need to rant….
The hard part about being a computer programmer is dealing with people who say “well, can you just explain it to me, it can’t be that hard” when they’re discussing a piece of software or code I’ve written or I’m about to write.
“You don’t need to go into too many details, can’t you just give me the simple description” etc etc.
The thing is, most of the time the person is on what I call the Rumsfeld Scale when it comes to the knowledge they need to ‘get it’.
There are things they know they know, things they know they don’t know – and things they don’t know they don’t know.
I have 35 years of experience as a ‘software developer’ (a term I hate) or ‘computer programmer’ or whatever else you might want to call what I do.
I write program code every single day, often for ten hours a day, frequently for six days a week, usually from 06:30am onwards. I watch a lot of demos, attend webinars, read dozens (maybe 100s) of books a year on the subject, live, eat, sleep, breathe program code. I never stop learning, even now. It’s a vast subject and a moving target. I will die before I master it.
Sometimes I forget to eat when I’m ‘in the flow’. It’s that kind of work, you get lost in it.
I have been employed at every level of the industry from head of R & D, Development Manager, lead programmer, senior developer – you name it, I’ve done the job.
It’s what I wanted to do from the age of 14 years old. I love it.
Then I have to talk to someone who demands I explain some technical aspect of a large-scaled project – and this person can’t even type three simple sentences without making four typos and brutalizing the grammar. They try to get me to precis things because in their world everything is possible and can be mastered with a few days of study and serious thought because they’re “not stupid”.
The trouble is, in the software development world there are many abstract concepts to grasp which affects why one approach is bad and another the right one. Estimating the effort in writing the code in itself is a notoriously hard process (with many books dedicated to just such a task) which is why most people like myself use ‘Agile’ methods.
Me explaining to you why object oriented design, unit tests and design patterns are valuable and have merit requires you to understand some core concepts which take up entire Computer Science semesters at colleges like MIT.
It’s not always like the recipe for a cake – but sometimes it is – you can’t just take a cake recipe and say “add some flour, add some eggs, some other ingredients, mix it up and stick it in the oven and you’ll get a cake out”. Yes, but what sort of flour, how much, how many eggs, what temp for the oven, how long, how do you know when it’s cooked?
Programming, like baking, is a mixture of exacting science and artistic panache – and, like baking, you can’t simply guess how to do it just because you’ve eaten a similar cake.