Recently I had a somehwat "heated" discussion with a couple friends who owned software development firms focussing on custom Microsoft .NET development. The topic of the discussion was the quality of code being developed by the team of software developers. I strongly believe that no matter how non-technical the client is, the code quality should not be sacrificed even if the project deadline is at stake.
But one of my friends honestly admitted that they had short-circuited the code numerous times so that clients can start using the software even if its not "upto-the-mark". He said as long as it works, everything is all right and the client is also happy. After all its not psosible for clients to look into the code regularly and perform any kind of code reviews. Besides, it is extremely hard to find really good programmers, and it does not make sense to lose opportnities just because your team is not extremely talented. There are many software projects out there and someone needs to do them!
I asked him how they get business, and he said they have a jazzy website which is highly search engine friendly. And they invest a lot in PPC campaigns and SEO marketing. So they get 80% of their business from the internet itself. Out of the 80% leads, 90% of the clients are non-technical. They don't care how you do it as long as you complete the project on time and within the budget. So it is perfectly acceptable to use any short circuit methods and even bad code is ethical if it works!
I argued that bad code is always costly in the long run, both for us as developers and clients as stake holders. Fixing bugs in messy or poorly written code is very cumbersome and can open a whole another can of worms. So if time or money is the main concern, why not factor it in the inital project plan itself. One can create architectural templates to make sure that the code follows certain guidelines, also there are a variety of tools available that can check code and perform automated code reviews. One can also start a peer code review practice within the team which can take only 30 min a day and is immensely beneficial improving the overall quality of the code besides helping the developers learn and acquire good programming skills!
So .NET custom software development is a big industry and a lot of companies out there are competing for projects from all over the world. What differentiates mediocre from the experienced is the years of experience in architecting and planning scalable and robust solutions, willingness to write better code, and motivation to keep following the right path even under pressure to write bad code. There is no excuse for sacrificing code quality and robustness at any cost.