Important things learned

Here is a list of the things I have learned in my past projects.

Use Unicode (utf8) all the way

Be sure that every part of your architecture uses unicode and do this from the beginning. Converting data from one encoding to another is a nightmare. I learned this the hard way with Skeletonz. Having everything in Unicode basically means that you can support foreign charsets without any work.

Think about performance all the time

Thinking about performance in the beginning and constantly while adding features is very important. A while ago I was building a feed reader where we didn't think about performance and this had a fatal effect: the project died, because a rewrite was too expensive. One of the fatal mistakes was that we stored feeds in text files (as XML) and not in a database -> This worked great for the first hundreds of feeds, but at some point working with XML got too expensive.

Do lots of projects and lots of rewrites

The best way to get better is to do lots of projects and do lots of rewrites. I have personally rewritten Skeletonz three times and I still haven't got a "perfect" architecture, but I am better now than I was back then.

Be passionate, but not fanatic

Nothing beats passion and there's nothing worse than working with people that lack it. That said, don't be fanatic either, different people have different views and choices.

Learn from other people

Working on Plurk and being on a team has been a big eye opener and I have learned lots of things in different fields, for example:

  • How to use Python's new packaging system
  • How to scale a database using sharding
  • How to market a product
  • How to design UI so it looks good while being usable

Store date and time in UTC

UTC is the way to go along with a user's timezone. UTC makes it possible to change a user's timezone and to do interesting calculations.

Don't unit test, but test all the time

I personally don't unit test and this strategy has worked great. A thing I do thought is to test all the time. I find unit testing very hard to do in a web environment, because it's a complex architecture. That said, I must admit that I haven't tried to unit test that much and I may change my mind in the future.

Use logging

Logging is a really great feature, especially if unexpected errors are delivered on email.

Support IE, Safari, FF from the beginning

Browser bugs are much easier to fix while the application is small, so be sure to support all the browsers from the beginning. Also take into account that some browsers have memory leaks (wink IE ;)).

Code · Interesting · Life · Tips 23. May 2008
© Amir Salihefendic. Powered by Skeletonz.