Samstag, 20. Oktober 2012

Living on the edge

Everyday development for a company usually involves using stable libraries which are in use for some time. Companies have (valid) requests to only use software which is reliable, without major bugs and well documented. So even when you can introduce a new library/tool, you'll most likely be able to work with it pretty flawless.

When you are on your own, coding away for fun or some weekend project, you can dive into bleeding edge technology, using alpha/beta software like crazy and get away with it. Why you ask? Because it's fun and you'll get a better developer.

Using unstable software is hard

Software which is currently in development has it's flaws. Some are obvious (like a missing feature) and some are well hidden (like the nasty little bugs you'll encounter). Prepare yourself to fill bug reports and fix bugs yourself because you won't be able to wait for bugfixes by the core developers if you want to move on with your project. You must be prepared to lose some time you could have saved using the latest stable release.

Here's an example of jQuery: As soon as jQuery 1.8.0pre was released, I replaced the latest jQuery stable, just to encounter that my symfony assetic:dump command would not work anymore. 1 hour later I was able to extract the code which caused the problem and do a bug report. I had to first see what exactly was causing the bug (it was the yui compressor) and then get it to give me some clue about the problem. I then dived into the jQuery code to see what was causing the problem. Turns out that yui compressor thinks "throws" is a reserved keyword while it is not. So when jQuery is using throws as a variable, it works in your browser but will crash yui compressor.

Diving into the code

The above is something I really like about using software which is not stable yet. You have to dive into the code because either there is a bug or the documentation does not help. And you learn a lot while doing this. You learn about the language in question, about the software itself and about how other people solve particular problems.

Don't fall off the cliff

There are a few pitfalls one should be aware of:
  • If you don't want to lose time, don't do it
  • If you are pretty new to the software in question, you'll lose even more time (mosty because beside learning about the new system you have to work around the bugs and flaws)
  • If it's closed source, you may end up with a broken system you cannot fix on your own

Keine Kommentare:

Kommentar veröffentlichen