When I first started programming (started with Turbo Pascal and then Visual Basic), I realy enjoyed programming. It was a whole new world opening up for me. Whenever I needed a piece of software to make my life easier, I just sat down in front of the computer and started programming like crazy. VB was a sequential programming language where you could reuse functions by the use of modules, etc. It was fun to use and you could have a finished application within a few hours.
Then came the new hype, Object Oriented programming. The new hype, a new sherif in town. Offcourse when I started at college, we saw Java. I have to admit I had to get used to the idea of OO programming after being a sequental programmer for years. We also had a class where we learned how to analise our projects and manage them in a professional way. Put that class together with Java, and you had a few hours of sleep (if people even bothered coming to class). It was just so boring, I couldn’t see myself as a programmer. Having to analise everything into detail, and using unit tests to test your application, or even develop by the TDD method (Test Driven Development, witch means writing tests first, program later).
For my internship, I chose for the company AMI Semiconductor (now known as ON Semiconductor). I had to develop some Testing tools for the Test Methodology Departement. After 4 months of intership, I still didn’t feel like developing. I didn’t have to analise everything (they where very loose on that mather), but Java just didn’t got my mojo running.
Then for some twisted reason, I stumbled into the world of web development. Using PHP, but mostly Ruby (On Rails), I wouldn’t change for anything else. I’m allready working for 8 months as an Information Architect, and I’m starting to realize, that the things they thought us about analising and unit testing wasn’t to let us fall asleep. Lately, I’m starting to realize that it is realy nessessary to have a good analisis before you start a project, and having some Unit tests wouldn’t be that bad.
I have finished a few projects at my day job as an Information Architect, and there are a few things that I would have done differently. One of them would be to have a clearer view of the project. Not everything was analised, witch has become a real pain in the ass now. The client keeps on asking stuff that realy requires huge changes to the system. And after a few months, I realy want to put this project behind me. Second thing is to take some time to create tests. I start to believe they could realy help me keeping my code clean and bugfree. Offcourse, that’s not only up to me. Some projects have a tight deadline, and a small budget, so the first things that get cut are analising time and time for unit testing (creating proper tests can take time, so they say…).
I still haven’t created a single test. But I have a new project comming up, witch I’m going to develop for Netronix (my own company) . And I can assure you, I will analise everything properly, not loosing the target of sight and even start to develop unit tests. This way,the project just can’t go bad and get sore. I don’t think I’m going to go for TDD (Test Driven Development), becouse I know I don’t have the discipline yet for doing that. But maybe in the future, when I get more experience, I’ll give it a shot.
So how about you other developers, do you take time to create unit tests and analise everything enough so you don’t lose focus on the goal? Maybe you guys can give me some pointers on how to write Unit Tests. I allready read some books, but having some practical advise would help me more out, then some theoretical rules. My next personal project will be written on the Rails framework (sorry Symfony guys, but I think Rails will fit my needs better this time), so some Rails tips would even be better.
So when I can finish my project in success with a strong bataljon of unit test, I maybe can convince my boss to start creating unit tests for all our projects…well, I guess I’ll have to wait and see