This is something I touched on briefly in my last post, ‘Coming of age as a php developer’, but it is something I would like to extend on.
What do people expect from a developer?
Every one has a different view of what to expect from a developer. Me, personally, I expect to be able to approach another developer and gain knowledge from them as well as be able to ask questions or suggest a possible solution to a problem without being treated like I suggested setting up a production server and allowing everyone to use
root as the login user.
Something I enjoyed at both my first (as a junior) and third (as a developer) role, was the ability to discuss and extend on ideas and sometimes get something we can build.
Ok, so what is a professional developer?
Work with the community. When it fails, don’t get disgusted at the failure; get involved and help solve the problem. Cal Evans (@calevans)
What Cal Evans says above is so true, but I believe this is not just for communities, but for businesses too. Recently, I have realised that I come across in a way that makes it look like I want my own way all the time. This is not true in any form. The way I work is I see a problem or an inefficiency and want to improve it, for both me and the business. At the current and previous place of work I successfully got Redmine implemented for the business.
At the current place it replaced Trello.
Don’t get me wrong the original tools did the job, but I had experience with Redmine and so showed it to who it concerned and it was accepted both times. There is a feel good factor about having something accepted. But then there is the other side to this. The part where ideas get thrown to the ground like you are stupid and then trampled on. This hurts, and I am ok to admit that, but it is not the rejection that hurts.
An idea is organic, no matter how crap or small it seems, if you roll with it and discuss the pros and cons the chances are the person who was the creator of the idea will see the flaw, if there is one or be able to explain further in their thoughts for the idea. It is the lack of discussion that hurts. Repeat this a fair few times, in a short period and I will curl up like a hedgehog and not ask questions or give help towards problem solving.
This is not a professional environment to work in for both the team and the business. This is not how a professional developer should act. I have started a quest to become a professional in my line of work, but my job history says different. I recently spoke to Cal Evans in regards to my concerns at PHP South Coast 2015, it was short but gave me what I needed; advice from someone with experience with managing. I don’t think he will know how much that helped me, but I have come to learn a fair bit more about my self, so cheers Cal.
What is a professional?
Professional (as stated in Wikipedia):
A professional is a member of a profession or any person who earns their living from a specified activity.
In then states:
In narrow usage, not all expertise is considered a profession. Although sometimes incorrectly referred to as professions, occupations such as skilled construction and maintenance work are more generally thought of as trades or crafts. The completion of an apprenticeship is generally associated with skilled labour, or trades such as carpenter, electrician, mason, painter, plumber and other similar occupations. A related distinction would be that a professional does mainly mental work, as opposed to engaging in physical work.
So, where does that leave us? Well, we do mental work, so we have the right to use the term “professional”, but we are also a skilled trade?
We can agree that we can be professional developers. But in my mind, that does not give us (or anyone else) the right to use the term “professional”. There is one [major] part that defines what a professional is.
I spoke to others about their interpretations on the term “professional” and the best response on the question was the following:
If someone calls themselves a professional, I expect them to be able to help me in a confident and pleasant manor with the knowledge required to complete the task in hand.
Now, stay with me on this…
With the description previously stated of what a professional is, I would go as far as saying that this does not give us the right to go telling people that you are a “professional developer” just on the basis that you get paid for you mental skill. I know, who am I to tell you what you can and can not tell people, but please, keep reading.
Until recently, I considered a “professional” to suggest someone was a well presented person who was well regarded in their team and / or industry.
Previous discussions about what a professional is with both friends and work colleges rendered the realisation that anyone can be a professional in their line of work (providing it was mental based).
Or does it?
Context: Elitism and its effects…
My first role as a junior was great, but I quickly learnt about elitism and its effects. The manager and what I would have considered my line manager were great at what they did. There were two other members of the team that were great at what they did. The four of them helped me a lot as a junior. They spoke to me on a level that helped me learn, see why things were done certain ways and why other ways were bad.
There were however two others in the team that I did not get on with. Not for the lack of trying, but one person (person a) seemed to have a problem with me from day one, the other person (person b) found that he could pick my code apart and laugh about it with person a. This knocked my confidence and made me start to doubt myself whilst I aspired to be a developer. After a while, it started to affect me personally (not that I noticed, but my wife did).
So, I decided to look around for a new job. This was my worst mistake and best mistake so far. Worst, because the guy was terrible to work for (yeah I know everyone hates there bosses, but two weeks after my wife falling pregnant after eight months of trying he turned round and informed me he was looking into taking me to Russia for three months to get his big idea pushed forward by outsourcing it) and the role was not what was advertised. Best; it helped me choose what path I wanted. It pushed me to read up on more stuff, allowed me to try learning Symfony2 with no other developers to help me and so which helped me land my third job.
The third job was great, it was close to home and felt like I was in a proper team again. I didn’t feel like a junior. The things I learnt off the guy who I sat next to were great. He introduced me into Domain Driven Design, good OOP practices, good general practices and so on. He started the ball rolling to get me to where I am today, and for that I owe him a lot. However, the reason for leaving was once again due to a lack of professionalism from team members. I started to feel like it was becoming personal again. I want to say this is an age thing, but it seems it is an issue with a persons attitude and self importance. Again, the wife noticed a change in me, as did I this time round and decided to speak to my manager. I could not fault him for what he tried to do, but I had left it to long and the damage was already done. So, back to job searching.
In the past however many years of being a developer and starting the quest to become a professional developer I have learnt a fair bit. I am not talking about the technical parts but the meaning of professionalism. I have been lucky that all but one, I have managed to secure a job for all that I have applied for. This is not to be confused with arrogance, far from it, it is a realisation that I can not be coming across as a bad person and that I have the relevant skill sets and working attitude.
Ok, stop rambling. What is a professional developer?
I think there is more to being a “professional” developer than just being paid for what you do. You need the experience, knowledge and the attitude.
To act in a professional manner, one must treat others with the same level of respect as they require to be treated with.
A professional can be a junior developer, developer, senior developer, manager, project manager, product manager or what ever other title there is, but must act in a way that they be treated or treat others the same; like a human. People get things wrong, make mistakes, suggest ideas not fully thought out or ideas about something they do not have a full understanding of, but this does not give rights to take the piss, show the other person up in front of others or even patronise/embarrass them in front of others.
Someone who treats people like they are assets to the team. Someone who allows others to teach them. Someone who pushes others comfort zones and allows others to push their comfort zones. Doesn’t look at someone else’s code and sniggers, or shows it to someone like a funny cat picture. Leaves arrogance and twat like traits on the other side of the office door and lets people know that if they have a problem, that they can talk to them or ask for help.
One of the biggest traits I enjoy having is a mentor like approach. Am I the best developer, no. In every role I have had, I have treated the end user as a VIP as they are potentially using what I am building, so why treat every user like they are stupid and know nothing? They will know more as they use it every day, they know the business process. I have treated team mates with the up most respect and listened and learned from them. If I think I have a different approach that might work (note that I did not say better) I will put the suggestion forward and maybe work towards a solution that works best for the team or the business.
Being a professional is not just about knowledge for the trade, it is also about awareness of your teams mental health. In most cases, we are at work more than we are with our loved ones. People have issues at home you may not be aware of; and even though I believe in leaving your personal problems at the door, this is not always possible. People go through breakups, divorce, child custody battles, money problems, confidence problems, mental health issues and so on. So think about that the next time you laugh at someone in your team, or take the piss that they spell something wrong, do a task in an odd or over the top way.
A professional is getting off the childish playground and standing up to people as well as treating others with respect and acceptable behaviour, asking how your team mate next to you is doing, recognising when someone is having a bad day and asking if they need help. If they are the same sex as you, don’t belittle them, if they are the opposite sex, don’t make inappropriate comments, and yes I am [mainly] on about the comments that are shitty and chauvinistic.
Above all, create an atmosphere that people in your team can enjoy and people outside of your team want to visit for help about something, or just a chat.