Tuesday, 2 May 2017

Teaching Python



I've been teaching Python Mastery, an advanced Python course, working on US East Coast time (teaching from 3pm to 11pm UK time) to nineteen HP engineers across three different time zones.

I do so enjoy teaching advanced Python. Once I get into the swing of it, which has happened today, I actually feel like an expert. I don't say that to blow my own trumpet, everyone has topics on which they are an expert, but it is such a nice feeling.

There is a Victorian saying of which I'm fond. I'm afraid it's expressed in a sexist way, because Victorians, but it's universally applicable.
"A true gentleman knows something about everything and everything about something."
For me the something about which I know everything (give or take) is the Python programming language. It's fun to feel like I know what I'm talking about, to be able to handle almost any question that is likely to be asked, and to be talking about it to people who want to hear.

The trouble with software engineering as a job (and the challenge - both the frustration and the reason it is worth doing) is that you are rarely dealing with just the programming language. Any task of engineering involves building or working on systems that interoperate and communicate with other systems, and those systems themselves are likely to be comprised of tens of thousands or even millions of lines of code.

Even if you fully understand your code and your system (unlikely of itself), it runs on a modern operating system which is a huge and bewildering beast, it talks on a network, talks to a database (yet another huge and bewildering beast - and if it's not huge and bewildering then it likely isn't any good), a message queue and so on and so forth.

So just as your system communicates and interoperates with other systems specialised for tasks it can't do itself, in order to work on a system *you* need to be able to communicate and interoperate with other people who have specialised knowledge that you don't have. Trying to be an island is a fool's errand.

And in case you hadn't guessed, despite considering myself an expert in quite an important area of the programming I love to do, in the job I've just started with Red Hat I'm still at the "bewildered by the mountain of knowledge I don't have" stage. I'm working on a large system, that itself works with and is comprised of many large systems. And it will be a while before that feeling of blank incomprehension fades.

Fortunately I've started enough new programming jobs to know that the feeling always fades. It happens gradually, and then one day, a few months in and without even noticing it has happened, you start a task and realise you know how to do it. That's such a good feeling.


"There's a bit of the divine in all of us. The bit of God in me is the core of who I am. The God in me is the best of who I am and who I'm meant to be." -- Morgan Freeman, The Story of God

No comments:

Post a Comment