When you look back at a project and you think about what you could have done differently, you should write these down and look at them before you start the next project so you don't do the same again.
In this post I share some of the lessons I've learned in my career when delivering software.
1. Don't over promise and under deliver.
If there is a chance you are going to miss a deadline, you should let your boss or the client know as soon as possible. If they know in advance, they will appreciate the warning and may be able to agree a new deadline. If the deadline can't be moved you may be able to get extra resource to help. This is far easier and less stressful when you know in advance rather than too close to the deadline.
2. Spend more time in the planning phase.
People dive in to writing code too soon on a lot of projects because they are eager to get going. You should make sure you have all of the requirements, functional spec and diagrams completed and signed off before you write any code. Learn more about this in my other post 7 vital steps for delivering a successful software project.
3. Allow more time for testing.
When a project is overrunning, one of the first casualties is usually testing. This is bad because it is harder to fix bugs in a live project than when it is in the development/test environment. Set aside plenty of time for testing and fixing the bugs found in the testing.
4. Keep track of how long things take.
When it comes to quoting for jobs you will struggle to estimate how long it will take unless you have recorded it for similar jobs. One step further would be to track how many pomodoros it takes to complete a task. Learn more about this in my post about The Pomodoro Technique®.
5. Avoid shiny toy syndrome.
When deciding what technology to use for a specific project you need to avoid choosing something just because it is new and you are looking forward to trying it out. Make sure you do your research and use the right tool for the job. If the right tool turns out to be the shiny new tool then great, otherwise you will probably find the quickest and most appropriate one is probably the one you've used many times before.
If you have any lessons you have learned, please add them in the comments.