I have held five jobs in my programming career, two which I hated and three which I loved. In the three jobs I loved, our team had the freedom to make our own decisions about our work. In the two jobs I hated, our work was blocked and quality suffered because decisions came from managers high up in the chain who did not understand our work. I could not tell that these jobs were top-down and bureaucratic until I was in them.
I am now searching for a new job. What questions can I ask during the interview to discover whether the company is top-down and bureaucratic?
Some examples from the jobs I didn't like:
- In the current job, our team wants to add columns to our scrum board for "Blocked" and "In Code Review", but we're not allowed to because we have to follow the company's template.
- I got a task to hide some text from a user if the user doesn't have an "LP Number". When I asked what an LP Number is and what use case we are solving, I was told to just do it. With
git blame, I tracked down other developers who had written code with LP Number and asked them. They had no idea what LP Number was, but had blindly obeyed what they were told to do with it. I stubbornly asked until I was sent up the chain of command to the non-technical person who issued the command. When I finally found out why, I realized it was a deeper issue than just hiding text, which would actually be very easy to fix once and for all. I counted 18 past bug fixes that were all due to this one issue. But non-technical people's commands had resulted in checks for LP Number sprinkled all over the code base by programmers who had no idea why, but did as they were told. Everyone seemed to think it was very strange that I wanted to know these things instead of just blindly obeying.
- In the previous job, we had some rules I couldn't understand. For example, we weren't allowed to query more than one database table at a time. If we needed related data, it was required that we load the entire table into memory and iterate it in the code. I asked in my team and in other teams why we had this rule. No one could tell me except that someone high up in the chain of command had decided everyone must follow it.