Sometimes we get questions (not really, but we'd like to pretend we do), questions like this one:
"Hey, Mister! If I want to create awesome web sites like you do, what tools shoud I get?"
This is a very good question, and of course an answer will be provided.
Well, little one, you see, for us to create awesome web sites, we need awesome tools. I will explain what tools I use, and why they are so awesome.
The first tool, and by far the most important one, is my Mac. While technically you don't need a Mac, in reality you really want to use one. I feel that Mac OS X makes me much more productive and creative than other operating systems, and I just plain enjoy it. And that matters. It actually matters a lot. If you don't like your computer (and chances are pretty high that you don't if you're using Windows), you won't like coding on it. Honest. Also, some software here is Mac only.
The second tool that I will talk about is your Web browser. You need this if you want to do web development. Now, on the Mac, a WebKit based browser, like Safari or OmniWeb is an excellent choice. Safari also has some nice debugging features, and if you download WebKit nightlies you also get this nifty JavaScript debugger called Drosera. You also want to use Mozilla Firefox, and especially the Firebug extension. This is great for debugging JavaScripts, and especially AJAX. It will save you from a lot of grief.
The third tool I wanted to bring to your attention is Symfony. Symfony is an open-source PHP web framework. You may have heard lots of talk about Ruby on Rails. We don't use that, we use Symfony, which is conceptually similar, but uses PHP, not Ruby. Symfony allows us to work much faster, and makes it easier to write good code. By using this design pattern called Model-View-Controller, we separate the code and make our classes better. And speaking of the Model. We don't use Propel, which is the default object-relational mapping framework in Symfony. We use Doctrine instead. As for web servers and databases and such, for developement we use the built in web server in Mac OS X, and SQLite.
The fourth tool you'll need is a good text editor. I use TextMate, I hear there are some other editors that are good too, but I prefer TextMate. There's also a set of snippets for TextMate that is made especially for Symfony. Cool, huh? TextMate is also awesome, but not required, when coding in Cocoa. An area which is very important to me, is the color scheme for TextMate. I do realize that some people might not agree with me regarding the high priority of this, but I don't care. It's important. The most important aspect is that it's a dark background, and light text colors. Right now I use SpaceCadet, but I also consider Sunburst and Twilight to be acceptable. Johan does not agree with me on this. He uses Mac Classic. To this I have only one thing to say. A dagger! A dagger through my heart!
The fifth tool that we use is Subversion. Partly because versioning is awesome, partly because it is a great way to share code between developers. Believe me, lock-edit-unlock sucks for editing code. Especially when the locking model is that you tell the other guy "I'm gonna edit this file now". And it really is a good thing to be able to go back to earlier revisions, just in case you screw something up royally. Do yourself a favor and use a versioning system. If you're more than a single person, do yourselves an even bigger favor and use a versioning system to share code. It might be a bit complicated to learn how to use it (especially if you, like us use the command line clients), but it's worth it.
So, with these five tools, can anyone create awesome web sites? Not really, no. The tools isn't what does the job, you do. Just because you might have the same bike as Lance Armstrong doesn't mean that you'll win the Tour de France. Sure the tools matter, and the better you get, the better tools you will want to use, but what you really need is experience, and the only way to get that is by doing stuff. You'll also need to be interested, otherwise you will probably give up at the first road block. And do yourself a favor, learn how to ask people for help. There's an excellent guide to this, although this is written for Cocoa, and getting answers in an IRC channel, the principles apply everywhere. If you learn how to ask questions this way, you have a much better chance of getting answers. Oh, and learn that you should only ask after having studied the documentation.
Well, this is it for this time. Perhaps you'll see more of this, where I talk about tools for developing in Cocoa (a big hint there is Xcode :) ) or Johan talking about the tools he uses. Who knows.
