We refactor code all the time. We extract methods, rename variables, eliminate duplication, and improve structure without changing behavior. The same principles apply to our careers. Refactoring yourself means taking an honest look at your skills, identifying areas for improvement, and making intentional changes to grow.
Titles Are Meaningless
Your job title does not define your skill level. One company’s junior developer is another company’s mid-level developer. As you advance, the difference between an Architect and a Staff Engineer blurs.
Titles exist so companies can categorize employees for hierarchy and reporting. They are loose guides for pay at best. Your skills and experience are what matter.
Instead of fixating on your title, focus on your actual skill level. Be honest with yourself about where you are. That is the starting point for growth.
Your Brain Lies to You
Two psychological effects distort how you perceive your abilities. Understanding them is critical for honest self-assessment.
The Dunning-Kruger Effect
This bias causes people to overestimate their ability when they are actually not very good at something. It happens because they do not understand their own deficiencies.
We have all met the developer who claims expertise in high-availability architecture but whose only experience was asking their shared hosting provider for a larger package. They genuinely believe they can handle the same problems elsewhere because they do not know what they do not know.
Imposter Syndrome
This is the opposite bias. People with Imposter Syndrome believe they lack useful skills when they are more than capable. It happens when someone picks up a new tool, hits a roadblock, and concludes they are not as good as they thought.
If others can make this work, why cannot I? The answer is usually that they have been doing it longer, not that they are inherently more skilled.
Both biases affect everyone in tech at different times. Awareness is the first step to counteracting them.
The Apprentice
Apprentices are entry-level craftspeople. They learn the trade through hands-on work, paired with a trained professional. The expectation is to learn and grow.
The defining characteristic of an apprentice is the need to learn. They ask questions constantly, need direction, and must be shown how to navigate problems. Their key skill is learning, not problem-solving or code quality.
An apprentice developer should get clear, concise tickets with well-defined goals. They need access to senior developers who can answer questions. Pair programming and insightful code reviews accelerate their growth.
How to grow as an apprentice: Absorb everything you can about your core competency. If you work with WordPress, learn best practices. Join a local user group. Read Laracasts if you use Laravel. Follow the local PHP community. Your job is to learn.
The Journeyman
Journeymen are competent enough to do a day’s work and charge for it. They have the skills needed to work but are not yet considered masters. They still require oversight, but they handle more complex tasks with less supervision.
For developers, this means questions shift from basic mechanics to intent. Instead of “Does this go in a controller?” the questions become “What is the expected output?” or “Does this require new restrictions?”
Journeymen recognize patterns. They have touched enough projects to equate a new problem to an older one and infer solutions. They develop familiarity where boilerplate becomes second nature.
A WordPress journeyman forms preferences for structuring plugins based on past work. They know what is easy to find versus what is easier to remember. They learn alongside the work, finding new ways to apply existing skills.
How to grow as a journeyman: Take ownership of more complex features. Volunteer for the hard tickets. Start mentoring apprentices. Teaching reinforces your own understanding and reveals gaps you did not know existed. Begin contributing to technical discussions and offering architectural opinions.
The Master Craftsman
Master craftsmen have reached the highest level. Few question their technical ability. Instead, people seek them out for guidance. Masters spend increasing amounts of time on non-programming tasks because others utilize their knowledge.
Programming tasks become larger in scope but less frequent. Masters fall into one of four archetypes described in Will Larson’s Staff Engineer:
The Tech Lead — Leads a team, works with managers on business needs, delegates work, keeps the team moving.
The Architect — Designs and maintains critical systems. Makes key decisions across many areas of a project.
The Solver — Tackles complex problems. Jumps from project to project as needed, or dives deep into a single hard problem.
The Right Hand — Helps executives by adding leadership bandwidth. Takes on part of their load with additional authority.
Masters act as organizational glue. They prepare slide decks, attend more meetings, and work across the organization. These soft skills become as important as technical skills.
How to grow as a master: Develop organizational and people skills deliberately. Learn to communicate technical concepts to non-technical stakeholders. Mentor other masters. Write about your experiences. The hardest problems at this level are not technical—they are human.
Some Things Never Change
No matter where you are in your career, you will always be learning. Apprentices, journeymen, and masters all spend significant time acquiring new skills, both technical and soft.
The mentoring loop never ends. You start as a mentee, become a mentor, and eventually mentor other mentors. You constantly add tools to your toolbox.
To grow, you must overcome bias and self-doubt. Decide whether you need to work on technical skills, increase experience, or improve people skills. Transitions will not be quick. You may spend much of your career at the journeyman level. That is fine.
A Framework for Self-Refactoring
Just like code, personal growth follows a repeatable process.
Step 1: Audit your current state. List your technical skills, your soft skills, and your experience. Be honest. Ask your manager, your peers, and your reports for feedback. The gap between how you see yourself and how others see you is your growth opportunity.
Step 2: Identify the debt. What habits are slowing you down? Are you avoiding test-driven development? Do you skip documentation? Do you say yes to everything when you should delegate? Are you over-engineering solutions? These are your personal code smells.
Step 3: Prioritize one change. You cannot fix everything at once. Pick the single change that will have the most impact. Maybe it is learning proper dependency injection. Maybe it is writing tests before code. Maybe it is learning to say no to scope creep.
Step 4: Refactor incrementally. Apply the change to one project, one week, one interaction at a time. Track your progress. Adjust your approach based on results.
Step 5: Commit and ship. Make the behavior permanent. Integrate it into your routine the same way you integrate a design pattern into your codebase. Eventually, it becomes invisible—you just do it.
Practical Steps for Today
Join a PHP user group or community. The PHP community has groups all over the world, many meeting online. Surround yourself with developers at different skill levels.
Write a blog post. Teaching clarifies your own understanding. It also makes your knowledge visible, which creates opportunities.
Do a code review. Reviewing someone else’s code teaches you as much as writing your own. You will see patterns you recognize and learn new ones.
Submit to a conference talk CFP. Speaking is terrifying until you do it. The preparation alone will accelerate your growth dramatically.
Find a mentor. Someone who has been where you want to go can provide guidance that books and courses cannot.
Be a mentor. Teaching someone else forces you to articulate what you know, revealing gaps and solidifying expertise.
Keep Your Personal Goals in Mind
Your career is yours. Not your employer’s, not your manager’s, not your family’s definition of success. Your goals.
Find the areas where you can grow. Find a good mentor either at work or in the wider PHP community. Do what works for you to meet those goals.
Be happy as your career grows.