Starting your apprenticeship on the right foot

Codeidoscope
7 min readAug 3, 2018

--

In an era where children are now heavily tested at school and employees have become increasingly disposable, it is difficult to find a “craft” to stick to and build upon when everyone else is trying their hardest to know just enough of everything and not one drop more to please employers, without having the time to truly specialise in anything.

Gone are the times when a master could dedicate time to showing you how things are done, and give you the space and time to learn how to use the tools at your disposal. These days, companies don’t always have the time to train you properly, and you’re expected to learn on the job or in your own time. Fighting knowledge hydras and putting out myriads of problem fires, there is no time to sit down and practice. No time to think about problems in more depth, no time to try out different solutions, no time to make mistakes that would have little consequences but would help you learn and progress, no time to become more adept in your chosen field.

Today, the quest for mastery is an elusive one as we grow used to being spoon-fed information, content, data, knowledge, ideas, concepts, and anything you might want to add to that list. Schools teach us to perform well in tests, companies want us to help them make more money and the media targets us with content catering to short attention spans and drama-lovers. There is little space for imagination and creativity or improvement for the sake of improvement. Everything must have a short or mid-term purpose, else it becomes a waste of time and — more crucially — money.

In the world of development (the computer kind), mastery becomes ambiguous and evasive as technology changes rapidly and developers are expected to keep up, lest they fall too far behind to be of any use anymore. The priority is to “move fast and break things”, and to “make it work, then make it better”, but with strained resources and little time, it is easy to make things work and run out of time or money to make them better.

It’s easy to learn things as we need them, implementing them on the spot without taking the time to then develop that new skill and finding ourselves holding sprinkles of information that we then try to hold together without any knowledge icing.

As a result, an apprenticeship is now mostly something that people create for themselves. Mastery is a personal objective, one that — once achieved — may not be obvious to the rest of the world. It is not a necessity for anyone else but the person starting the journey.

An apprenticeship is a long-term commitment to learning and developing a chosen skill over a lifetime. Learning a language, playing an instrument, gardening, or in my case, development! After a couple of decades of education, a string of unrelated jobs and numerous self-improvement books, I have a better idea of how I want to approach honing my skills so that I can make the most of the six months I am going to spend focusing on doing just that, and I wanted to share some of my thoughts on the matter.

Take care of yourself

To me, this is perhaps the most important aspect of learning. I’m used to having my homework critiqued, having to pass exams with arbitrary marking schemes that I couldn’t crack, being told that without the best grades, I wouldn’t get anywhere in life. As a result I became a perfectionistic procrastinator, avoiding work for as long as I could in order to avoid the pain of failing. I could never be happy with my work, had too high expectations of myself, and whatever I did was never good enough.

I eventually realised that this constant negative stream made me fearful of trying new things, it made me feel guilty whenever I was not “working” or doing something I perceived to be productive, and I was ashamed of what I saw as poor results and the discrepancy between where I was and where I thought I could be.

The solution to that was to be kind to myself. Not in a self-indulgent “oh woe is me” way, eating my way through tubs of ice-cream when something didn’t go my way. Rather, in developing more self-compassion, which I did by practicing gratitude and remembering the bigger picture. Every day, I would write a list of three things I was grateful for (getting a seat on the tube, eating the last chocolate yoghurt, having found an awesome book to read), and I would force myself to reframe my negative thoughts in a kinder manner.

I wasn’t a terrible person because I spent longer than I wanted to playing video games. I made a mistake at work, but it was fixable, I didn’t get fired and nothing happened — I was fine, and I wasn’t the lesser person I used to think I was because I didn’t do everything perfectly the first time round. People make mistakes every day, and accepting it is part and parcel of life.

Dropping the perfectionist mask is another useful process to go through. I don’t expect everything to be perfect anymore, I’ve learnt to accept that doing something well enough was infinitely better than not starting something because I needed to wait for the right time, else it wouldn’t be perfect. Associated with this is the concept of the growth mindset which made me realise that I should relish making mistakes, as they highlighted areas I needed to work on, and I could use them as a stepping stone to strengthening my skills. A key element of the process was dissociating who I was as a person from my work. I am not my work, being bad at my job because I haven’t learnt enough yet does not make me a lazy, boring, incompetent human being. It makes me someone who needs to learn. I am still the person that likes to cook for my friends, that wants to explore the world and loves to win pub quizzes. The two are not mutually exclusive.

Finally, know yourself and your limits, so that you can avoid burnout. It’s ok not to be able to code for 10h straight because you’re tired, or you’ve hit a wall, or you want to do something else. It’s ok if it takes you multiple try to get something right, or if you need different people explaining the same idea to you. You do you, boo.

Leave your ego at the door

To embark on a successful apprenticeship, I believe you need to give your ego the boot. Aim to be the least knowledgeable person in the room, as you stand to gain the most from absorbing others’ knowledge. If you sometimes get short-tempered because you’re trying to discuss a problem with someone and you feel they know less than you, take a step back, breathe deeply and try to reframe your question to make sure there are no miscommunications. You’ll often gather unrelated tidbits of information that could be useful in a different context.

It does not matter that someone is discussing something you already know. At worst, you will get a fresh perspective on the issue at hand. Sharpen your listening skills and increase your patience, you will get far more out of people this way.

Of all the ways your ego can stop you from improving, not asking questions is the biggest one. Ask as many questions as you dare and you cannot be a fool who “didn’t know”. If something does not make sense, if you’re not clear on what someone said, if you’re unsure of what you’re supposed to be doing — just ask. People may give you dirty looks or make comments when you ask questions, but it’ll be far less painful than completing the wrong piece of work, or misinterpreting instructions that would result in more time wasted and more people frustrated.

Approach the situation with fresh eyes

No matter what you know, you can always learn more and know more. Forget what you think you know, and try to approach a situation with a new outlook. Try new things, without the expectations that they need to be finished — this is a time for you to experiment and see what works for you. Start a programme in that new language you’ve always wanted to learn but never had the time to. Listen to a podcast about programming instead of your usual radio channel. Pair-programme with someone who is working on a completely different project. These will all give you new perspectives. The more data you get, after all, and the better you can connect bits and pieces, so do go data-hunting!

Do your research. Be it on what you’re trying to learn, or on adjacent topics. The more you expand your horizon, the easier it will be to connect the information and knowledge that you will gain along the way. Read or watch as much as you can on as many things as you can, open yourself to new ideas and tools, if only to see what’s out there that could pique your interest.

Use what you learn. This is crucial, as you will not remember what you don’t refresh on a regular basis. How’s that French vocabulary you learnt when you were 12? Try to find ways to practice what you learned, so you can better apply it to more situations, instead of confining it to the one problem you were trying to solve. Find katas to work on, little projects to start with, examples of implementations on Github. Just like foreign languages, it’s this practice that will get those memorisation muscles to flex and retain the information.

The reading list

That’s about the extent of the knowledge I feel I can impart for now! Here is a reading list of resources that have helped me and that I would warmly recommend to anyone wanting to understand themselves better, and wanting to push themselves further:

Self-help and psychology

  • Mindset — Carol Dweck
  • Self-Compassion — Kristin Neff
  • Willpower — Kelly McGonigal
  • The Power of Habit — Charles Duhigg
  • Learned Optimism — Martin Seligman

Apprenticeship and mastery

  • Mastery — Robert Greene
  • Mastery — George Leonard
  • Apprenticeship Patterns — David H. Hoover and Adewale Oshineye (Safari link)

Within the context of development

  • Pragmatic Thinking and Learning — Andy Hunt (Safari link)
  • New Programmer’s Survival Manual — Joshua D. Carter (Safari link)
  • The Passionate Programmer — Chad Fowler (Safari link)

--

--