9780596518387
pattern_list.html

Appendix A. Pattern List

  • A Different Road: You have discovered that the direction you want to go is different from the path toward software craftsmanship.

  • Be the Worst: Your learning has decelerated as you’ve quickly surpassed everyone around you.

  • Breakable Toys: You work in an environment that does not allow for failure, yet you need a safe place to learn.

  • Concrete Skills: You want to work on a great development team, yet you have very little practical experience.

  • Confront Your Ignorance: You have discovered wide gaps in your knowledge, and your work requires that you understand these topics.

  • Craft over Art: You need to deliver a solution for your customer, and you can choose from a simpler, proven solution or take the opportunity to create something novel and fantastic.

  • Create Feedback Loops: You can’t tell if you’re suffering from “unconscious incompetence.”

  • Dig Deeper: You have only superficial knowledge of many tools, technologies, and techniques and keep hitting roadblocks as you try to tackle tougher problems.

  • Draw Your Own Map: None of the career paths that your employer provides is a fit for you.

  • Expand Your Bandwidth: Your understanding of software development is narrow and focused only on the low-level details of what you’ve worked on in your day job.

  • Expose Your Ignorance: You have discovered wide gaps in your knowledge and are afraid that people will think that you don’t know what you’re doing.

  • Familiar Tools: You are finding it difficult to estimate your work because your toolset and technology stack are changing so rapidly.

  • Find Mentors: You find that you’re spending a lot of time reinventing wheels and hitting roadblocks, but you aren’t sure where to turn for guidance.

  • Kindred Spirits: You find yourself stranded without mentors and in an atmosphere that seems at odds with your aspirations.

  • Learn How You Fail: Your learning skills have enhanced your successes, but your failures and weaknesses remain.

  • Nurture Your Passion: You work in an environment that stifles your passion for the craft.

  • Practice, Practice, Practice: The performance of your daily programming activities does not give you room to learn by making mistakes.

  • Read Constantly: There seems to be an endless stream of deeper and more fundamental concepts that are eluding you despite your quickly acquired proficiency.

  • Reading List: The number of books you need to read is increasing faster than you can read them.

  • Record What You Learn: You learn the same lessons again and again, but they never seem to stick.

  • Reflect as You Work: As the number of years and projects you have under your belt increases, you find yourself awaiting the epiphany that will magically make you “experienced.”

  • Retreat into Competence: You feel overwhelmed as you are faced with the vast reaches of your ignorance.

  • Rubbing Elbows: You have the feeling that there are superior techniques and approaches to the craft that are eluding you.

  • Share What You Learn: You are frustrated that the people around you are not learning as quickly as you are.

  • Stay in the Trenches: You have been offered a promotion into a role that will pull you away from programming.

  • Study the Classics: The experienced people around you are constantly referencing concepts from books that they assume you have read.

  • Sustainable Motivations: You find yourself working in the frustrating world of ambiguously specified projects for customers with shifting and conflicting demands.

  • Sweep the Floor: You are an inexperienced developer and need to earn your team’s trust.

  • The Deep End: You’re beginning to fear that your career is not resting on a plateau, but is in fact stuck in a rut.

  • The Long Road: You aspire to become a master software craftsman, yet your aspiration conflicts with what people expect from you.

  • The White Belt: You are struggling to learn, because the experience you have seems to have somehow made it harder to acquire new skills.

  • Unleash Your Enthusiasm: You find yourself holding back your excitement and curiosity about software development in order to fit in with your team.

  • Use the Source: How do you find out if your work is any good given that those around you may not have the ability to tell good code from bad?

  • Use Your Title: When you introduce yourself in a professional setting, you feel you have to apologize or explain away the difference between your skill level and your job description.

  • Your First Language: You are familiar with a few languages, but lack fluency in any of them.

Site last updated on: July 14, 2011 at 02:05:32 PM PDT