I have been in software development for over two decades. I have worked in multiple industries and multiple size companies ranging from 25 people to large fortune 50 companies. Over my career there are two of the worst mistakes I have seen companies make:
- Having your developers do double duty as business analysts
- Having someone who was never a developer over developers
Having Your Developers Double Duty as Business Analysts
Would you hire your accountant to fix your car just because he/she might be able to change his/her oil? No! This is essentially what companies do when they have developers also acting as business analysts or subject matter experts. Developers have enough to remember regarding their craft. You can't expect them to learn the business also. That is way too much information to fit inside a normal brain. Developers also do not need to know the business down to tiniest level of detail like a CEO made need to know. Developers should be given a problem and told to solve it with software. That's it. Any specific background information they need should be given to them. Let them ask the questions and have someone go get them the answers. This is usually a job of a business analyst. This helps the developer focus on creating the best solution using code. Every software development team should have a business analyst or a SME.
Having Someone Who Was Never A Developer Over Developers
I have worked at too many companies that did this. Usually it is someone with project management experience but zero development experience. How can you expect someone with no development experience to understand what developers go through? Someone who has never had a code problem and it literally took two days to figure out that a semi-colon was missing. Someone who has never Googled for two days trying to figure out a solution to a coding problem. Developers must have someone over them that have experienced the trials of being a developer. It's not an easy job. People expect you to do the impossible at times and turn water into wine while still meeting the project deadline. Also developers are unique people with unique tendencies and interests. They are not your typical help-desk or infrastructure IT worker. Developers need people over them who understands them. That is usually someone who was them at one point in their career.
Now that I have said all of that, the problem still remains that most developers do not want anything to do with management. I get it, believe me I do, but someone has to rescue the developers from people that have no clue of the #devlife.
Developers need people over them that:
- They can go to and bounce coding solutions off.
- Can actually do a code review.
- Understands hours DO NOT equal productivity.
- Understands they are not average users.
- Understands the majority of them do not want to talk with people.
- Understands they like what they do and want to do a good job.
- Understands money does not equal job satisfaction
I'm a firm believer in separation of concerns. I believe the only concern a developer needs to have is how to solve a particular given problem using code. If your company is guilty of any of the two things above I would actually consider changing companies. I hate to say that but my experience tells me you can't be in a good situation.