6

My friend is a junior at a workplace that requires staff to take 100% responsibility for their work. In practice this means no code reviews. Any errors, mistakes or inefficiencies are to be identified yourself.

While staff are encouraged to ask for help when they run into problems, you don't know what you don't know, and my friend is often disciplined by seniors (who are also managers in the company) when their work doesn't fit their expectations at the end of a project. This is the cause of a lot of stress for the junior in question and is destroying any confidence they have in their own work.

While I can see the merits of having a "get it right the first time" culture in a workplace full of senior developers, it seems like a hostile work environment for juniors who genuinely don't know any better.

Can anybody suggest techniques for reviewing and error checking your own work? Or alternatively, strategies for cultivating a healthy "learn by mistakes" review culture in a workplace?

I should add that this is apparently otherwise a friendly and pleasant place to work and the seniors seem entirely reasonable in all other aspects, the junior would like to stay on at the company if possible.

  • Seems your friend is disciplined by seniors... who probably are not your friend's manager or boss, and in no position to discipline... what does your friend's boss say? – DarkCygnus Oct 3 '18 at 22:06
  • 1
    In this company the senior developers are also the managers – Bbbbbbbbbb Oct 3 '18 at 22:09
  • It's a small developer lead company, so while they have one main manager that they report to, that manager is guilty of perpetuating this culture. There isn't anybody higher up to bring the problem too, direct confrontation of the issue is unfortunately the only option. – Bbbbbbbbbb Oct 3 '18 at 22:16
  • 5
    Why did they hire a junior if they dont want juniors? – solarflare Oct 3 '18 at 23:48
  • 1
    @solarflare presumably because they only want to pay for juniors but are expecting the quality of mid- or seniors. That just sounds like an incredibly toxic environment. – delinear Oct 4 '18 at 16:15
18

While there is a lot of good mileage in your friend learning Test Driven Development (TDD), the fact that he/she is being disciplined by multiple managers for falling short in Telepathy skills means that this looks like a toxic workplace. The person that never makes mistakes never makes anything at all.

My advice can only be to make rapid strides towards the exit. There are better, less stressful, places to work.

3

Understand that testing software is part of what being a software developer is

The job of a developer is to produce tested code, not just "code".

It is your responsibility to make sure that code does what it is intended to do and doesn't make any changes it isn't intended to.

Can anybody suggest techniques for reviewing and error checking your own work?

This question is, really, "how do I test software?". That is, obviously, a huge question. At the very least, read and understand what unit, integration, system testing are.

Even if there is a dedicated QA team, they are a second-line check, they are not a replacement for your testing.

For each change, you should come up with some sort of test plan, even informally, and code isn't "done" until it passes. You can look into test-driven development, dependency inversion and mocking; although those specific concepts are often taken to excess, and can lead to terrible code bloat, it is still good to be familiar with them.

strategies for cultivating a healthy "learn by mistakes" review culture

At the time of review, and afterwards, you need to think about why mistakes were made.

Not just, "what did I do wrong in my development" (because everyone makes mistakes), but "why didn't my testing find this fault".

Because when your testing improves, your code improves. And seniors will have more confidence, over time, in the quality of your output.

  • If the OP spends so much time making his tests catch every edge case, the managers are just going to punish him for low code output. Developer testing is important but I don't think it's enough to meet the expectations that the OP has outlined for this ridiculous company. – Clay07g Oct 4 '18 at 15:52
  • We have no way of knowing how unreasonable the seniors are being or how bad the OP’s friend’s code actually is. Everyone is the hero of their own story, and it could look different from the other side of the table. If there really is zero tolerance for errors and zero support, I would agree the OP’s friend should run. – Joe Stevens Oct 4 '18 at 17:34
  • I've never worked on a project where TDD was practical. No one wants to wait for the code or to pay for you to spend hours writing tests. Usually if you propose "I'd like to spend some time writing unit tests that will ensure that this code behaves properly", you're met with "That sounds great, but first we have a long list of new features we'd like you to implement..." – user45623 Oct 6 '18 at 1:47
0

Can anybody suggest techniques for reviewing and error checking your own work? Or alternatively, strategies for cultivating a healthy "learn by mistakes" review culture in a workplace?

First, I must say that I agree with Philip's comment in part; if this unhealthy expectations and disciplining is the standard, perhaps your friend could consider looking for other job with a better work environment. But that should be done as a last resort.

Some strategies that could help here are:

  • Team with other junior devs and peer-review you code. As other junior devs are most likely in a similar position (still learning, prone to do mistakes), helping each other is a good way to go. Not only will it strengthen their relationship and work dynamics, but will also help them deliver higher quality code and learn how to code better.

  • Ask for help earlier, don't wait for the end of the project. As your friend is being disciplined when projects end, it would be a good idea to ask for help earlier, so they have chance to correct mistakes before delivering and learn in the process.

  • Take a break or switch to other task before reviewing it. Sometimes one may become obfuscated or burnt out when working on a project continuously. This, in my experience, sometimes increases the chances that one misses an important detail, or is unable to find some bug. It has helped me greatly to switch to other tasks, or take a break before seeking for bugs, as one can then see it with a fresh mindset.


It's worth noticing that you state the ones disciplining your friend are his Senior coworkers, and not his boss/manager. Chances are that most of them are in no position to be disciplining your friend, as that would be a role the boss should take.

Senior coworkers can suggest or mentor, but they should not discipline unless that is part of their explicit responsibilities. I am noting this because chances are the senior coworkers who are not your friend's boss are trying to scare him off, or try to discourage him in such way for reasons unknown...

  • I am aware. If you read carefully, and not just one part, I said "the senior coworkers who are not your boss are trying to..." – DarkCygnus Oct 4 '18 at 6:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.