My next post was going to be a more technical post, but this topic has been relevant to me over the past few weeks. And as I have this blog, I thought it may make a good opportunity to share my thoughts.
Now a developers responsibilities may vary greatly depending on where you work, the size of the company and your seniority. I’ll take a general approach, but also target out some specifics.
First and foremost you are responsible for your work quality. What you send to QA is a representation of you and the effort you exerted. Did you unit test to minimize errors? Did you test edge cases which debugging? Did you browser check cosmetics? These are things, I hope, a QA department will notice and cause your ticket to fail. So why waste time going backwards and forwards from QA when you could have spent that little extra time?
“But there wasn’t enough time”
That’s the general excuse I hear, and this brings me onto your next responsibility. Communication. When time constraints are tight and deadlines are looming, the first thing I see go out the window (from junior and senior developers alike) is testing. Unit testing, developer testing, sometimes testing it builds. Quality dips, corners are cut, and you start a game of ticket pong with QA.
To solve this, all you needed to do is communicate. This is particularly true for junior developers. Communicating the fact the item will take longer than expected can feel like you have failed. But honestly, no senior developer or manager I have ever worked with will think that. You’ve underestimated, missed something, or were blocked by something unforeseen. It happens to everyone, the best thing to do is communicate the issue and help resolve it. Delivering quality is always the goal, and once quality is brought into the equation everything else becomes secondary.
As you get into a more senior role, you will gain a responsibility of enforcing rules. Coding standards are important and you cannot let excuses of “Not enough time” or “I copied the from elsewhere” fly. Any code added has to abide by the current standards your company enforces. This involves making sure other senior developers are also enforcing the same rules. If one person fails something for not being unit tested properly and another person doesn’t, the code base will suffer and people will never learn how to improve.
Senior roles also have to lead (maybe not directly or officially) .This is a bit of an odd concept to some, but you’re in a role where you are above others in a hierarchy of ability. Naturally you are looked to for guidance and help by more junior developers. You have to support them, show them how to do things properly and assist them pushing back on legitimate issues like scope creep, unreasonable deadlines or code quality.
We are all also responsible for our own mistakes. Mitigating factors can come into play, but on the whole they are excuses. You cannot blame QA for missing something during testing that ended up on production. You wrote it, you also missed it, you’re also responsible. The ability to hold up your hand and admit your mistake separates developers at all levels. Admitting you’re fully or partly to blame will help resolve the issue quicker and, in my opinion, it shows a great level of maturity. Witch hunts will not help anything, it will waste time, and goes against your last responsibility.
Working as a team is a responsibility many ignore. You may not like your co-workers. You may think they’re incompetent. But you’re stuck with them, so make the most of it. You have the same goals, work on the same projects, and work on the same code base. If they are the person described above, who put a bug onto production, help them fix it. Do not leave them to deal with it as they caused it. Yes they are responsible for the quality of their code. Yes they are responsible for the bug, and yes they are responsible for fixing it. But you have the responsibility to the project. Which means helping them, and helping them learn.
I hope this helps some of you see where you can improve, or where you can help others improve. Knowing your responsibilities is important and will help you grow in the software industry.