Joe Armstrong : A Guide for the Perplexed
|Recently I came across a goto talk by Joe Armstrong where he talks about the complexities in learning modern computer science. He suggested few things a software engineers can do to improve their craft. You can find the video here and the presentation here. In this post, I will try add some context to few things present in his list.
two great papers to read
A plea for lean software by Niklaus Wirth
The Emperor’s old clothes by Tony Hoare
I read both the papers only after watching the video.
The plea for lean software is written in 1995 (25 years back). I guess we can safely replace KB’s with MB’s and MB’s with GB’s wherever Nikalus makes a comparison.
The paper talks about different reasons for software bloating, such as lack of design (or bad design), feature bloat, time pressure, lack of incentive to design a system with reduced resource needs. Nikalus developed an OS named Oberon with his colleagues to show that complex systems can be built in short span (relatively) with out bloat.
Based on his experience with development of Oberon, He draws some conclusions.
It is not necessary that large number of people are required for developing complex systems, The communication cost will increase with the size of the team
Strongly typed languages allows better systems design, reduce development time and produces extensible systems. Seems there is no empirical evidence to prove/disprove this point , check out this post by by Dan Luu for more on this subject.
The second paper, The emperor’s old clothes is even older. it was written in 1980 by Tony Hoare (He is the inventor of QUICKSORT and null!). In this paper Tony Hoare talks about his personal experience with large scale software projects, lessons learned etc.
Three great books to read
Algorithms + Data Structures = Programs by Niklaus Wirth
The Mythical Man-Month by Frederick Brooks
How to Win Friends and Influence People by Dale Carnegie
I think every one involved with software engineering should read the mythical man month. The third book has nothing to do with programming, but talks in general how to build a personal network. It is a short read, definitely worth reading.
If you are interested in reading more books on programming, look at this collection created by Jeff Atwood, For general book suggestions take a look at this collection created by Patrick Collison.
Well written. Can’t agree more