Sunday, August 26, 2012

The Best Basic Software Engineering tools

Over the years I have come to the following Basic tools configuration for my software development work, which I think is the best configuration for a software engineer as of today. This is also a kind of advice for people new to software engineering. All this is my personal opinion and I hope someone out there will find this useful. If you really are a good developer you should already know all this by now, and probably this post may not be very useful for you. Also I am not going to give any reasons or justification for what I say below.

The OS


OS X is the best OS for software development as of today and that should be your no 1 OS choice. If you don't have a Mac then Linux should be your second choice. If you are using a Mac then the 13" Mac Book Pro should be your ideal choice. You should prefer a larger size if you do more of design than coding. If you are using Linux go for the 32 bit version, the 64 bit version causes some problems if you are a developer (I experienced this myself). You should also use a SSD because it will speed up your work right from boot onwards. My 13" MacBook Pro boots in 15 seconds flat with an SSD, which is faster than a 13" MacBook Air.

Developing software on windows is like trying to compete with one arm tied behind your back.

The Editor


Sublime Text 2. Period.
Unless you are an Emacs guru!

Version Control


Git. Period.
Make Sure you read the Git Book.
Your remote repository should be Github.
If you want a private and free remote repository use Bitbucket.

Books to read


Effective Programming: More Than Writing Code (As of today the kindle edition is free).
The Regular Expressions Cookbook.
From Nand to Tetris.

Languages to know


Any Lisp like Language. Here is a quote from Eric Raymond.
"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot." - Eric Raymond

And if you want an easy Lisp like language, learn LispyScript. (I am the author).

JavaScript is getting mainstream by the day. It is now popular on the server side too. Thanks to node.js.

Python of course.

And one of the C's, (C, C++, Objective C).