6 programming project mistakes you should avoid

January 28, 2010 – 6:45 pm Tags:

During my adventures in programming, I’ve been involved in many projects. Luckily, despite having made some mistakes, they’ve gone quite well. Here are a few of them, with tips on how to avoid making them yourself.

No version control

This is a pretty bad one! I’m glad I learned to use SVN at an early age… :)

Always use version control in your projects. Be it Git, SVN or even CVS, as long as you use something. It’ll help you avoid a thousand problems!

Here’s some of my posts about Git.

No plan

It may feel like just having a general idea (eg. “Hey, let’s make a forum!”) is alright, but it isn’t.

With no plan or roadmap, your project may easily derail into more and more new features, never actually getting anything finished.

Always try to create some kind of a plan that includes the features you want. Make it a Word document, or even better, put it in a tool like Trac or JIRA where you can easily track what you are working on. Not only will this give you a clearer image of what needs to be done, it can be useful to see what you have already accomplished so far.

No schedule

You may have a plan, but do you have a schedule?

Scheduling is as important as having a plan in the first place. Without a schedule, the project may easily keep going endlessly, with very little progress as nobody cares as there are no deadlines.

I have to admit that even now there’s a project I’m working on, without a proper schedule, which has been going on way longer than it should. I plan to fix that, though!

No release strategy

What’s a release strategy? This may not be the correct term, as I just made this up, but I think it’s quite descriptive: It includes how often you want to do releases and the steps involved in making a release.

The most basic requirement is to have a build/deployment script. A single command you, or anyone in your team, can run to completely build and deploy your application. This is important because a minor mistake can cause problems.

How often have you forgot to upload a file to the server when deploying? I bet the number is bigger than zero. Now think how many steps there is even in a simple deployment.. Sending files, setting up the database, maybe installing a default user…

How often you do releases can be important too. For example, in Scrum you develop in sprints and in the end of each sprint is a natural point to make a release with the features chosen for the sprint.

Tools such as Ant can be used to create build and deployment scripts.

Developmestruction

Not having a separate development and production environment is a recipe for disaster, especially if your application is being used in the real world at the same time as development is happening.

I’m a guilty of doing this, but luckily the applications weren’t being used by more than a handful of internal users.

Always perform development on separate machine(s) than the actual production deployment. This ensures the production system should stay relatively intact (unless your deployment screws up or you introduce more bugs).

Additionally, having a staging environment can be a good idea. This should usually be on similar hardware and software as production, as this will allow you to test-drive your code on a realistic setup before pushing it to production.

Not using Test Driven Development

This may not be the most critical problem, but I think it’s important nevertheless.

By having a good test-suite, you can ensure you don’t introduce regressions and that your code works at least as well as your tests were written.

For some reading on testing, check out unit testing essentials and How to make your code testable in this blog.

Post your tips/mistakes in the comments

If you have any tips/mistakes of your own, please share them in the comments. I’m still learning too, so they would be great additions to this list.

Share this:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • description
  • E-mail this story to a friend!
  • LinkedIn
  • Pownce
  • Reddit
  • StumbleUpon
  • Technorati

RSS feed Subscribe to my RSS feed

  1. 13 Responses to “6 programming project mistakes you should avoid”

  2. 7. Having the business team call the shots in development.

    By jim on Jan 28, 2010

  3. 7+. Much worse: having the marketing team call the shots in development.

    By Ingo on Jan 29, 2010

  4. I personally think it’s lack of communication that can kill your project faster then anything else.

    By Artem Daniliants on Jan 29, 2010

  5. Good points guys, thanks.

    I think business and marketing can call the shots if you are developing something for them. They are also often knowledgeable about the customer’s wishes, so even though they may not be the best experts, I think it’s worthwhile to listen to them.

    Of course it probably depends on your company’s environment how it works for you in the end.

    By Jani Hartikainen on Jan 29, 2010

  6. Great list Jani, I’m guilty of #2.

    DZoned

    By CodeJustin on Jan 31, 2010

  7. Well there are people, who make websites with php and dont use OOP. I have seen such code, its nightmare. And i think every one has to try atleast once some PHP framework. I know people who think its not nesecery becouse you have to learn a lot and its time consuming. But the benefit is huge, if you even choose not to use them you will learn a lot. In my country we dont have schools where you can learn how to develop web apps. So we have a lot of “programmeres” who write their code from top to bottom and dont think about OOP and thay dont read much :) I have spent a lot of money in buying books and a lot of time reading them. The more you read, the more you find out that you dont know that much :D as you thought.

    It kinda is more about how to become a good programmer:

    * read books
    * the faster you will be comfortable with OOP the better
    * look at frameworks and try to use them (dont be scared)
    * read blogs and stay up to date about new technologies and ways things are done.

    I’m guilty of top to bottom code my self :(

    By Gatis Dukurs on Jan 31, 2010

  8. These mistakes are fundamental. There is a critical mismatch here. All the jobs require a “Zend Framework wizard” or a Joomla master or something. No masters would make these beginner mistakes. What I want to know is when shops like these advertise for jobs, what do they say:
    “Inept idiots who don’t know enough to use version control wanted for crappy job?”

    By colleen on Jan 31, 2010

  9. Oh. PS. By all means let marketing call the shots big picture-wise. Just don’t let them start telling you to use Code Igniter rather than Kohana or some implementation stuff like that.

    By colleen on Jan 31, 2010

  10. Understanding the requirements and also writing more reusable code does matter

    By Senthil Kumar B on Feb 1, 2010

  11. add a simple documentation to this list .

    lets be honest , may we have problem to not continue on working project for many reason came from us ( sick , social event , accept anther offer , , , etc )
    leave to others , backups at least simple documentation to continue , not start from scratch . this will give you a good reputation .

    By Hoor Monier on Feb 1, 2010

  12. This list is all over the place. I’m not sure “not using version control” and “not using TDD” belong on the same list, especially one that is only 6 items long.

    By Matt on Feb 1, 2010

  13. Good additions there everyone.

    Matt, you are welcome to suggest things so the list can be better.

    By Jani Hartikainen on Feb 2, 2010

  14. Having greedy investors breathing down your neck for immediate returns.

    By David Kagiri on Feb 9, 2010

Post a Comment