Hi,<p>I'm currently working as a developer for a small (< 20 people) software company in Western Europe. We develop individual applications for big customers and have a few, not very successful products. I've been here for about two years. Most of the software has been badly cobbled together by inexperienced, overambitious people who have left shortly before I came in. We further developed the software. One project we are currently cleaning up heavily. Another is a hellish mess, and we need to reimplement it. There are almost no proper processes to deal with all the quality management in development. We get better at testing and quality management, but we're still far away from it.<p>We have issues with customers, where manuals contain wrong information (this is definitely on us). Customer employees misunderstand simple instructions to a point how I don't understand why these people have the title of systems administrator.<p>Most stuff that is more complex or requires experience gets stuck with me. Most other developers here are either very inexperienced or have worked here very long and are caught up in bad habits. These bad habits have been developed inside the very "incestuous" company culture. Trainees showed trainees how to develop software. Nobody thought very much ahead. In the end, you got a lot of badly written software. Most have no experience in ways outside the ones somebody showed them years ago. Most seem to have a hard time to get to the thought: "This is a working way to do it, but could there be a better way?"<p>It's a lot to deal with. I, too, make mistakes - as does everybody. But it's hard to manage development infrastructure, proper installation procedures and manuals, giving feedback and providing knowledge. (Not to toot my own horn.) Our bosses are relatively negligent about this. They hope for the best and seem to believe everything will work out for the best. But they're always willing to listen to suggestions and making things better.<p>My point/question is: How do you people deal with stuff like:
Annoyed customers, because you made mistakes (but they did too)
Internal workflows that lead to mistakes, that lead to annoyed customers, that berate us.
Ensuring quality when delivering updates to customers.
Enforcing testing, code styles, further and constant education for developers etc.
How do I ensure we have proper installation guides for the customers?
How do I ensure our software has been tested properly when we made changes? (We have some integration and unit testing already, but it's far from complete)<p>Any feedback is welcome