What makes a good Software Engineer?
Posted by Piotr Gabryanczyk on March 25, 2007
I recently came across Cedric Beust’s post about new book “Algorithms“, by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani. It is a good book, but I wanted to write about something else.
Algorithmics vs Design skills
Cedric’s post started a discussion on what is more important, knowledge of algorithms or good software design. One of the comments by Chris Johnston says:
“…When I was taking my CompSci degree, the first thing the prof said to us in my first comp sci course was that we were not there to study programming; we where there to study algorithms…”
I have seen this approach at my uni as well. For some time I was even proud of it. This made me feel better then “the rest of the crowd” who learn VB and think they are qualified. Unfortunately it turned out in “real live” that my algorithmic knowledge hasn’t been used much. And thing I was lacking a lot was good design principles, which I was never taught at uni as my professors where so focused on making me a scientist rather then good software engineer. In the world of complex software systems it is often much more important to create APIs and programs which are simple to understand and modify or maintain.
Please do not think that I underestimate algorithmic skills. I believe it is essential that developers have strong algorithmic background, but you can never forget that it is not the only thing which makes a good developer.