Monday, May 8, 2017

On lessons in learning from a 6 year old...

I've been developing software for what sometimes feels like a lifetime. I mean, it's almost a quarter of a century, so for some, it is indeed a lifetime. To the hip youngsters who have only ever known the internet world, mobile devices and touch interfaces, I'm a dinosaur. However, as someone once said somewhere: "what other people think about you is none of your business". The thing that has been occupying my thoughts more recently, is what I think about myself.

In my first professional role, I was lucky enough to have an old-skool rock star programmer as a mentor - let's call him Jim for the sake of argument, and because I will need to refer to him again as this piece progresses. He was the sort of guy that would knock up an optimised to the hilt, bespoke data storage, indexing and querying library (a database in essence) over a weekend because:

  1. It was needed to ship the product and pay the wages  and
  2. Everyone else said it couldn't be done.

In my first couple of weeks, It became clear to me that my previous hobby programming was partially useful, but that I didn't know Jack about how to do things properly.  I was out of my depth, out of my comfort zone, with a huge amount to learn and I loved it. I'd spend 12 hours a day in the office because my partner was commuting on the train to London and I had to drop and collect her from the station which was only minutes from my office.

I spent a lot of time reading programming books, thumbing through technical reference manuals and writing little programs to try things out.  At the time, the combined knowledge of mankind was not online and even if it were, we didn't have a connection capable of accessing it.  Yes, it's really hard to imagine a world without StackOverflow and a copy and paste solution to 90% of your problems - but that's how things were back in the day.  Self respecting developers (or programmers as we used to be called) building apps on Windows, would all have a well thumbed copy of Petzold and K&R on their desktops.  It took 200 lines of nonsense to get "Hello World" on screen, and moves were afoot to make it harder by throwing C++ into the mix...

You could lose hours or sometimes days trying to make something actually work as expected, but when you finally did, that nugget of knowledge would stay with you for life - you'd earned it with blood sweat and tears.

After a couple of years of 12 hour days, I thought I was getting pretty good at this programming stuff. I was respected among my peers, and my mentor would keep stretching the bounds of what I though I was capable of by gently hoiking me out of my comfort zone every time I looked like I had 'mastered' something.  However, when there was a particularly nasty bug that no one could explain or troubleshoot, then Jim would come along, fire up a kernel mode debugger and gently chastise you with a good dose of education. I felt there was nothing this guy couldn't implement, debug or resolve.

Jim departed a little while later in a move that will make a great upcoming post on the madness of man management.

After nearly 4 years in a fast paced, hard driven  professional role, I was convinced that I was pretty good at what I did. I was still not quite a Jim, but I had reached the point in my organisation where I believed that my team and I were capable of delivering any requirement we were asked for, and the technical buck stopped at my desk. I spent less time looking through those books and winhelp files - I didn't need them nearly as much. I'd used almost all 500 functions in the windows SDK and could easily fill in the 11 parameters required by StretchBlt without skipping a beat. I had got comfortable again, I was starting to get an unreasonable opinion of my own abilities, and I hadn't learned anything new in a months.

Luckily for me, the financial instability of the company, coupled with an out of the blue head-hunting call, landed me in a new role with a small startup in a different business area and with a couple of developers that did some things in interesting ways - a learning opportunity. And so the cycle completed and began once more...

Many years later, I can look back at several points in my career where I have reached a plateau - a point where change was required to keep things fresh and to continue the learning process. Sometimes I have actively made that change, and sometimes - for my own reasons, I have deliberately resisted it. I've met new people who have challenged my thinking and in some cases, downright proven me wrong. Those are the people that one should actively seek out.

Longevity in this business has allowed me to gain a certain amount of both experience and wisdom. However, I think that the most interesting attributes that come with being a dinosaur, are humility and introspection.  I now fully appreciate the following:

  1. That cocky 20-something me didn't really know sh1t - about work or life or anything.
  2. When it all seems a little too easy, there's good reason for it - the challenge is no longer there and you need to find it elsewhere.
  3. Your detailed & specific knowledge of a technology is of limited value and has an increasingly limited shelf life.
  4. The really useful knowledge is gained through the experience of tackling a wide range of problems and being able to see technology agnostic solutions, patterns and approaches and recognising how, when and why to apply them elsewhere.
  5. At 45, I'm more of a student now than I was 20 years ago. 

Us dinosaurs still have a lot to offer. The physiology of the younger brain means that the young whipper snappers have the ability to learn a new skill at the drop of a hat, and an untainted mind easily persuaded to trust in bullish optimism. The older guys see the development world more through the perspective of concepts, patterns and inter-connected systems thinking. Their historical experiences ground them with oodles of realism. They each have their place, and a team with both contains two mentors and two students.

Last week, my 6 year old son started educating me on  'fixed and growth mind sets' - including giving me examples. I was impressed by being put in my place by a mini-me, and I tucked this information away, ready to play it straight back to him the next time he tells me he can't do something.

Tonight I sat through Kung Fu Panda 3 with both kids. It's not the best movie I've watched recently, but just as Spiderman had that "with great power comes great responsibility" line (which I must admit to using in several situations over the years, though mostly, tongue in cheek), my philosophical take away from KFP3 was this little gem:

"If you only do what you can, you will never be more than you are now."

Seemed somewhat appropriate.

No comments: