I am running a boot-strapped startup with another technical co-founder and we are making revenue (not profitable yet) and things are extremely tight. We are both experienced programmers and my co-founder has experience working at one of the world's largest software companies. We both make a lot of effort to continually learn and follow as many best practices when coding (mostly .Net / webapp / SaaS). Its something we feel is really important to the long term health and growth of the company.
For instance we work hard to:
- Use BDD / TDD / Unit Test where appropriate
- Separate application logic from ui logic
- Follow best practices in stuff like Code Complete
- Follow a lot of agile / extreme programming guidelines
Obviously as we are a startup so we cut corners occasionally and no-one is perfect so we continue to learn and strive towards writing better code.
The main issue is right now we have an employee who is doing pretty much all of our css/js/html for our front facing websites (we have a graphic designer). He's been with us for about 6 months and we've spoken and tried to teach him good practices but he doesn't seem to care or want to learn.
His background is a IT/scripting where it was all about "getting it done". The positives with him are he is very cheap and does get stuff done although good luck if anyone else ever needs to work on it or we need to make any changes that aren't trivial. The stuff he is working on is all our front facing stuff that we will need to continue to improve / refine for the next few years.
We have a policy that anyone can order technical books and everyone has a Safari Books account. I budgeted a lot of time recently for him to work through an MVC 3 book as we were porting our website over from basic Asp.Net. The book promoted all the best practices and I made him do the tutorials. He hasn't followed pretty much anything from the book with our website port and I've been too busy to enforce / go over stuff.
In the short-term this is good as it frees up the co-founder and I to do a lot more specialized complicated back end coding which would cost a lot per hour ($80+) to contract out but in the long term its really going to come back to bite us.
I guess my question is should we:
- Keep working on trying to make him improve (code reviews etc) and if he doesn't improve fire him if he can't learn how to code well.
- Keep working on trying to make him improve (code reviews etc) and if he doesn't improve keep him on but don't spend any more time teaching him.
- Try to get more money from somewhere to hire someone who produces better code and not bother spending our time trying to teach someone who doesn't / might not be capable of learning.
- Don't worry about it get things hacked together as soon as possible and try to become profitable / make money and then worry about it when we are making $1,000,000+ rev a year (random number)
- Any other suggestions?
Cliff Notes
Have a super cheap employee who does all js/css/html but produces working but crappy / unmaintainable code. Seems like he doesn't want to learn. Suck it up as its so cheap and it works? Put lots of time into improving him? Find the money from somewhere to get someone better?