Becoming a PHP Professional: The Importance of Others
This article is a partial followup to my previous article about becoming a PHP Professional, but with a focus on mentorship. While this is, in fact, just a personal impression I've cultivated over the years in the industry, I encourage everyone to read it and see how much they agree or disagree with the notions I present.
The buddy system
In "The Missing Link", I briefly touched on finding a mentor, companion or friend to work with. I'd like to expand on that point slightly.
When you work on improving your skills on your own, you'll often find yourself stuck. In fact, the experts frequently find themselves stuck more often than newbies, but it's the speed and skill with which they "unstick" themselves that makes them stand out in the cold, snowy field of identically unimpressive snowflakes.
This intense digestion of a problem is, with beginners, additionally slowed down by the fact that they neither know where to look for solutions, nor in which direction to steer their thoughts. A solo newbie stuck on a never before seen problem often ends up in a limbo not unlike the Stanley Parable, spinning round and round through dull, yet strangely interesting hallways until ending up at the beginning again.
When you have an equally interested and motivated companion beside you – be it your partner, a mentor, a boss, a team member, a cat you simply shout theories at, or just an innocent bystander who can think logically and is unable to run away as you posit your question – the problem is, often quite literally, half as difficult to solve.
Even an imaginary buddy helps at first, if you have no one real nearby. On countless occasions I've found myself explaining a problem to my boss only to come to the solution half way through, simply because I listed the alternatives and roadbumps out loud.
So, if two heads halve the problem's difficulty (or, rather, the time it takes to solve the problem at its original difficulty), ten heads solve it ten times faster, no? Not always.
There's a saying that when you feel like you're the smartest person in a room, you're in the wrong room. This applies to all areas in life, but to disciplines of logic and science especially so. Teamwork doesn't necessarily mean you'll solve an issue faster if you're the only driving force of the team.
It's important to get to know each member of the team well, and get along with everyone – maybe not necessarily on a personal level (though it helps) as much as on a professional level. Being on the same wavelength and frequency as your colleagues makes sure the brainwaves intensify, rather than cancel each other out. A good atmosphere can have a compound effect on problem solving.
If you find yourself in a team, find someone you admire, someone you'd like to be better than. Don't feel rotten because you want to "beat" them – feel inspired. Make them your drive. Learn from them, absorb everything around you, talk to them. Never be ashamed to ask for advice, and never be afraid to ask for help if the person isn't deep in a working cycle.
If the team or some particular member is hostile, if the atmosphere is lacking, if the leader figure knows less than you do and still refuses your suggestions without discussing them with others, you should request a transfer. Such a negative environment not only prevents progress, it reverses it – you'll find yourself slumped behind your desk and reading Reddit more often than expecting a solution to a problem from yourself, simply because you'll feel it isn't worth it. Move away from poison.
Mentoring and being mentored
If you don't have a team, or your team situation is unfixable (nothing is, come on!), it's time to jump even further out of the comfort zone and look for an actual mentor. If you're an introvert and aren't comfortable with talking to strangers, as we developers tend to be, try out the SitePoint Forums, or a quasi-anonymous service like Wizpert first, go through an issue or two and see how it goes. Join us on Google+ to discuss some posts, comment, give feedback or just chat us up for the heck of it.
If you feel like you need more specific mentoring, however, there's an excellent website dedicated to just that: PhpMentoring. The way it works is, mentors willing to share some of their knowledge and apprentices willing to receive it all sign up on the listings page. Basic information is given, like name, location and current skill level. The mentors also specify their areas of expertise, while apprentices single out the aspects they would like to improve or master. In a way, it's not unlike a dating site – you look over some candidates, and if someone is teaching something you want to learn and lives in a relatively similar time zone, or if someone is willing to learn something you're teaching, you get in touch with the person and handle the rest via face-to-face or online communication.
You might be wondering what's in it for the mentors. The mentors get contacts, networking, and the good feeling of helping someone grow. Some of them even use this opportunity to directly train someone for employment in their company, or to include them on a project doing tasks they've outgrown. Apprentices getting paid for the work they're doing for/with the mentors is not an uncommon situation.
Once the mentorship link begins, it's up to the participants to be punctual in their arranged meetings and to regularly communicate and give feedback to each other. It's also important to note that someone being an apprentice doesn't necessarily mean newbie. Someone might be an expert in object oriented programming, but unskilled in test driven development. As such, that person might be both a mentor candidate for OOP, and an apprentice candidate for TDD.
Don't underestimate your peers, or their general significance. If you have no one to look up to, you cannot progress. Without a way to visualize your goals, you cannot strive to achieve them.
Ego inflation and deflation
One of the most dangerous things that can happen to you as a beginning to intermediate developer is ego inflation. It happens for all sorts of reasons, but is usually triggered by a combination of some that follow:
- a successful completion of a complex tutorial
- too kind feedback from a dishonest or sub-par mentor
- getting asked questions by people new on the team
- successfully selling a website
- getting contacted to write a book by a charlatan publisher who uses keyword search to track down candidates
- getting contacted by recruiters
- and more…
When ego inflation occurs, the developer tends to enter a state in which he is absolutely convinced he is right and his way is best. He believes it so zealously, he even convinces his coworkers and clients to adopt his way of thinking. That's when things get dangerous, projects get delayed, and clients get disappointed. Ego inflation is harmful to others around you, because it tends to steer people blindly onto the wrong path, and push colleagues away due to arrogance. Sometimes a more assertive member of the team will put a stop to this, but more often than not, the ego inflated developer will either fizzle out or crash land into deflation either by force or on his own.
Ego deflation is utter discouragement to continue with the work – be it actual work, or self-upgrading. It, too, happens for various reasons, some of which are that the inflated egoist realizes he's wrong and/or is put in his place by a more experienced and assertive developer, or simply after soloing too much for too long and burning out. A deflation can last several months, and during that time an incredible amount of progress is lost.
Others around you – either digitally or in real life – can protect you from both inflation and deflation – a good mentor or colleague will tell you when you're steering wrong, and they'll motivate you when you're in a slump. They'll help you avoid the multi-month cooldown periods and the post-burnout lack of interest that eventually occurs.
Don't forget, like Bill Nye, the Science Guy said:
Everyone you will ever meet knows something you don't
Never underestimate the power of others. Go to conferences and meetups, attend hackathons even if you don't code anything, follow good content, subscribe to newsletters, join forums, talk to people and above all – never underestimate anyone. You can earn valuable nuggets of knowledge by digging around in other people's brains – be they newbie or pro.
If you liked this article, please share it with your friends and colleagues and join the discussion in the comments below. Have you had any mentorship successes? Failures? Let us know!