Over the past year, my company has been growing fast, and we had to recruit another programmer. I am a younger programmer, I have always worked alone, well-read but never been in a team.
I prefer an agile coding style and SOLID principles.
My colleague, however, despite having worked as a programmer for ~10 years longer than me, has no interest in code standards whatsoever, and it's causing major issues in our line-of-business applications. Our main CRM application (which was built over a number of years and contracted to the company my colleague used to work for), which my colleague was originally brought in to fix, now suffers database crashes several times a day, and the team of people using it are losing lots of productivity.
- My colleague considers unit testing a waste of time
- 4000-line long classes, never using interfaces, and procedural style are the norm for them
- Through my colleague's successive attempts to "speed up" the CRM and solve database issues, the CRM now uses 3 different ORMs throughout.
- My colleague prefers to roll their own, unconventional approach to common problems. For instance, our CRM loses customer data without trace due to a home-grown caching layer built with stored procedures and temporary tables.
- Projects set up by this colleague have the bin and obj folders in version control
Because we're stretched thin across multiple projects, and I haven't seen alot of what they've written, my colleague has had free reign to write bad code without checks. My boss asked me to ask this question because there need to be some unit tests and code quality checks in place, the business is severely hemorrhaging money from bad code.
We need to know, having never managed a software team before:
- Is writing faulty code like this 'normal'?
- What do software teams usually have in place to stop bad code being committed like this?
- I'm looking for techniques that are maybe specific to a two-person team, where one person is unwilling to follow code standards