So you want to be a software engineer…

Good article in the ACM Queue magazine on what it takes to be a software engineer.

Three pieces of sound advice…

The first one is to read other people’s code:

In software there are plenty of classics to read, and there are books about these classics. For networking, one of my main areas of interest, there is the FreeBSD operating system and its TCP/IP networking stack. In the database world there is MySQL, and for Web servers, Apache. These code bases are classics, and they are open source so they make excellent systems to study.

Reading other people’s code has either been a source of inspiration or a source of perspiration. The former happens when the code is well written and well documented. The latter happens when the code is badly written and/or contains no documentation whatsoever. I know that good code is supposed to be self documenting, but I don’t buy that for a second. It can be really hard to keep track of all the moving parts when reading new code, so good documentation is always a great help.

When I do maintenance on poorly written/documented code, I will usually add documentation as a I am reading it to keep track of what is going on, then I will clean-up the code.

The next one is to get others to read your code:

The next step is to get others to look at your code. Unless you are that one-tenth-of-one-percent genius who can do all this right the first time – and I think that .1 percent is being generous – you need people to mentor you and review your work. Again, open source can help here.

This one is always really painful, but I have always benefited when others have read my code. It can be hard on the ego though.

The final one is to learn to work with others:

…and learn to work with others, as that is one of the great skills not taught in any computer science department.

Very true… enough said…

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: