A Slim Book Every Junior Developer Needs To Read - Apprenticeship Patterns

Posted by Lanzhou on March 27, 2021

A Slim Book Every Junior Developer Needs To Read - Apprenticeship Patterns

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

Apprenticeship Patterns by Dave Hoover & Ade Oshineye

This book is suitable for: those who want to switch careers to software development, IT majors about to enter the workplace, programmers in the internship stage, protege developers, and aspiring developers who want to further improve their skills.

Readers can read this book with a fairly relaxed mind. This book is not a book about how to design or build software. It is a book about designing the beginning of your career as a software developer and help you to become great at what you do. Excluding the Introduction and Conclusion, there are five chapters in the book (“Chapter Two Emptying Cup”, “Chapter Three Walking the Long Road”, “Chapter Four Accurate Self-assessment”, “Chapter 5 Perpetual Learning”, “Chapter 6 Construct your Curriculum”). There are 35 “Patterns” in total, and each Pattern is like a individual card containing “Context” and “Problem”, “Solution”, and “Action” etc. If you are not in a hurry to “finish reading” and return this book to the library like me, then you can treat this book as a reference book on your career development path, and refer to the corresponding “pattern” when you encounter specific problems.

My top ten favorite “Patterns”:

  1. Your first language
    • One of the fundamental ways to improve the experience of learning your first language is to have an actual problem to solve. (e.g. build a website or create a simple console game)
    • By far the best way to learn a language is to work with an expert in it. You can learn a language on your own, but unless you interact with experts, it may take longer to grasp the spirit of the language.
    • For several years, your first language will be the framework against which you learn other languages. The better you know your first language, the easier it will be to learn your next language.
  2. Concrete skills
    • A developer should acquire and possess some specific tools and technologies. (such as JavaScript, basic web design skills, etc.), which will make your team believe that you are able to contribute.
    • Get in a habit of going through your own CV on a regular basis. As you do so, extract the concrete skills into a separate list. (Update the skill list on your LinkedIn profile)
  3. Expose your ignorance
    • “Tomorrow I need to look stupider and feel better about it. This staying quiet and trying to guess what’s going on isn’t working so well.” – Jake Scruggs
    • Write down five things about your work that you don’t understand.
  4. Nurture your passion
    • When you feel exhausted, what you need to do is to nurture your passion for the craft.
    • Work on what you like. Find something at work that interest you, or dedicate some time outside of work to build some Breakable Toys
    • Study the Classics and immerse yourself in great literature of the field when your passion is stifled.
  5. Find mentors
    • When you need help and guidance, try to seek out those who have gone ahead of you and strive to learn from them.
    • Willing to provide mentoring to those who seek it from you, passing along what you have learned from your mentors
  6. Expand your bandwidth
    • Sometimes it is necessary to develop some methods and skills to efficiently acquire, understand, maintain and apply new knowledge.
    • Seek new knowledge and experience from multiple dimensions: such as paying attention to online tutorials, communicating with authors, participating in conferences, etc.
  7. Breakable Toys
    • Design and build a toy system, and use a relatively private space to seek failure. (A safe place to make mistakes)
    • Make the toy system relevant and useful to your apprentice experience (such as a wiki, calendar or address book)
    • Good habit: Every time you learn a new language, use it to create a game.
  8. Record what you learn
    • Use a blog to record the lessons you learned.
    • Tools for maintaining records are also important Breakable Toys (e.g. this Tech blog!)
  9. Share what you learn
    • In the early stages of the apprenticeship, develop the habit of regularly sharing the things that you learned. (use Tech Blog, organise buddy catch-up meetings, etc.)
    • Teaching others is a very powerful learning method. (“When one is teaching, two are learning.”)
  10. Reading List
    • Maintain a “reading list”, keep track of the books you intend to read, and record the books you have read.
    • You can store this list in your blog and keep the file updated.