Perfectionism is a disease
I was a perfectionist once. I am not anymore. I’ve learned that in business there is no such thing as perfectly done or perfect timing. There’s no 100% correct, 100% reliable or 100% available. At the beginning of my career I did not realise this. I thought, that the result of a program is a predictable outcome. That’s it. Unfortunately the reality lies quite far from that. Deadlines are tight, business wants things done by tomorrow, the budget is not infinitely elastic.
What’s good enough
I don’t know. There’s a fine line between too much and too little. It takes a lot of time, experience and hard work to figure out what’s good enough. The situation also depends on the company, on it’s budget and timelines. It also depends on the stage of the project. At the beginning the quick-and-dirty road is the most optimal one. When you don’t know if your product is going to take off, your best bet is to provide minmal value to the customer with the least effort. If you work for a growing company that’s fighting to retain a market position, probably stabilizing and securing the software is the priority. The important thing is - use what fits best for the situation.
Don’t blame yourself for the bad code you’ve written
You shouldn’t blame yourself for the bad code that you’ve written in the past. It was your necessary path to become a better programmer. It is very likely that it was also company’s trade-off to write code fast instead of well (I will ignore here companies that are not aware of the cost of badly written software, they deserve a separate post).
For your company good enough is also good enough
When you work for a company, you as an individual are only partially responsible for its success. You will never entirely have the whole picture of the company’s vision, operations and strategy. This will result in you doing your tasks a little bit differently than anticipated from everyone else. The golden rule here is as well - good enough is good enough. A company operates on the assumption that you will perform at 80% of the ideal person’s capabilities (the owner or the expert). That statement is even more valid for small companies. The employee will never perform a task as well as the owner. Owners cannot expect from employees to perform as well as they. Otherwise they would spend most of their time training instead of growing business. This has been described very thoroughly by Peter Drucker in “The Essential Drucker”. I recommend it to anyone that wants to go beyond just Software Development and learn something about management.
But my lesson here is very simple - don’t be perfectionist. Don’t overthink. Cut yourself some slack and focus on delivering instead of doing things perfectly. Learn along the way and try to reflect on the mistakes that you’ve done. If you reflect on them, next time you’ll do better. And that’s the essence of the software development.