Apprenticeships is inward and focusing on learning to learn
Journeyman focus on connections between practitioners and disseminate information
Masters acquire, use and share superior skills
Emptying the Cup
First Language: use one someone who can help you knows. join community.
White Belt: Set previous knowledge aside when approaching new situations. Try different programming paradigms and tackling with new idioms.
Unleash your Enthusiasm: Apprenticeships add value by bringing excitement. Be mindful of the environment.
Concrete Skills: Knowledge is not same as concrete skills.
Expose Your Ignorance: Reassure your stakeholders in your ability to learn. Don’t concede to unspoken pressures and tell them what they want to hear. Ask questions. Take most direct route.
Confront Your Ignorance: Fill gap in way most effective for you. Must make trade-off between proficiency and deepness. Balance between learning and practicality, don’t put your learning ahead of team.
The Deep End: Growth happens when you do scary things. Offset risks by having a mentor. Also your responsibility to create feedback loops to catch any problems early.
Retreat into Competence: Take a step back and do something you know how to do to regain composure. Only use as a short-term fix.
Walking the Long Road
The Long Road: life-long learning
Craft over Art: Focus on needs of others. What you build can be beautiful, but it MUST be useful.
Sustainable Motivations: A desire for mastery should motivate you. Don’t get handcuffed by money.
Nurture Your Passion: Find something at work that interests you. Work on breakable projects. Go to user groups. Study classics.
Draw Your Own Map: Create ambitious next step. Not up to your employer to give you a hand up. Don’t let company restrict your path.
Use Your Title: Don’t let your title distract you. Use to gauge your company not yourself.
Stay in the Trenches: If you don’t practice, mastery will fade. Think about other ways your company can reward you.
A Different Road: You may find another path. Don’t be afraid to embrace it.
Be the Worst: Make sure to not stay the worst. To counter selfishness, sweep the floor. As journeyman, you should be looking to give back.
Find Mentors: Low risk, huge payoff.
Kindred Spirits: Need some camaraderie. Find community where you can let your guard down.
Rubbing Elbows: Find ways to work with another developer side by side. Pair programming is good way. Expose yourself to the habits of skilled people.
Sweep the Floor: Volunteer for simple, glamorous, but necessary, tasks. Show you can do the basic tasks well. Focus on areas with less risk. On each project, you are starting from square one.
Expand Your Bandwidth: Drink from the firehouse and absorb everything about something. Know when to focus back on development.
Practice, Practice, Practice: Have a separate place you can practice without fear of failure. Code Katas. Need feedback to know if you are doing things the best way.
Breakable Toys: Work some something w/ less scope and safe if fails. Build projects for the sake of learning.
Use the Source: Read other people’s code.
Reflect As You Work: Extract maximum educational value out of your experiences. Create a tangible map. Assess your practices and if they are the best.
Record What You Learn: Helps you retain knowledge.
Share What You Learn: Teaching is powerful learning tool for the person doing the teaching.
Create Feedback Loops: You cannot measure yourself objectively. Solicit feedback early and often. Useful feedback is data that can be acted upon. Hard to get people to tell you if you are doing something wrong. Learn to identify when you made a mistake.
Learn How You Fail: Understand what led to the failure. Decide whether to accept these limitations or work on them. Learn about your own problem solving process and how you think.
Construct Your Curriculum
Reading List: Keep a priority queue. If you don’t know where to start, try broader first.
Read Constantly: Immerse yourself.
Study the Classics: Don’t take too far and ignore the practical though.
Dig Deeper: Make sure you understand why something works. Go to the source. Acquire as much specialized knowledge as necessary, without losing perspective about relative importance of different aspects of software development.
Familiar Tools: Must learn to let go as they become obsolete.
Masters should be pestered to explain themselves or all their tacit knowledge can die with them