Coders at Work: Reflections on the Craft of Programming, written by Peter Seibel is a recommended book for software developers at Mobnia, and as I picked it up recently I discovered just why this book is a must read for anyone considering a career in software engineering.
In the book fifteen spirits (extraordinary people) were interviewed. The first part of this review is going to cover the first four profiles. The book constantly recommends software development best practices from the interviewed, and interestingly a number of these practices are common to all of them.
Jamie Zawinski popularly known as Jwz. He is an early Netscape developer. He has contributed significantly in other projects like XEmacs and Mozilla. He currently maintains XScreenSaver and runs a nightclub in San Francisco.
When asked how he learned coding, he replied that he had been repeating many of the code he found on magazines in their TRS-80 computer at school. Books also played a big role at the beginning stages for him, he read a lot of them. The period he worked at Lucid, a company focused on implementing Lisp software and making development environment for it, helped make him a better programmer. They had a concentration of very smart programmers at Lucid. Till date he still uses Emacs as his coding environment. He warns programmers to be conscious of the second system syndrome. For him, it is never a good idea to rewrite a system. One is proud and happier if he can ship products. Bearing in mind that you are not in the company to write code but to ship products; if you don't ship your competitors will eat your cake. He recommends the book Structure and Interpretation of Computer Programs, but has a very low opinion of the book Design Patterns. As regards the perfect approach to learning programming today, he is unsure.
Brad Fitzpatrick is best known as the creator of LiveJournal and is the author of a variety of free software projects such as memcached, PubSubHubbub, OpenID and Perkeep. Youngest among all the people interviewed.
Similar to Jwz, he started his programming journey with books and then played around with computers. His interest for Perl was sparked when he played with CGIs, printed few lines to Netscape Navigator browser. He got excited and never turned back. Jwz had already said that what matters is to ship products not write code. His company bears witness to that, because it happened that they wanted to build a photo hosting-service but Flickr beat them to it. Theirs was over-designed and it never saw the light of the day. Before he starts coding anything he will write notes on how the system will work.
He maintains that the importance of knowing the whole stack cannot be overemphasized, even if you don't operate with it. It pays off to have knowledge of low level computer programming.
His college was combined with running LiveJournal, which for him made school bearable. School without working would have been terribly boring for him, as he already knew most of the things they were teaching. The key advice he gives to self-taught programmers is to do something a little bit harder each time. Reading very good code equally helps in learning. He recommends two books: The Art of Programming and Higher Order Perl. Just like Jwz he uses Emacs as his development environment. He insists that programmers should develop good communication skill. Even though he began coding at a very young age, he doesn't think it is solely a young person's game.
He claims that with the advance in memory and cpu, hardware generally, programmers no longer care much about efficiency as they would in the past. For him code reading could be used for mentoring and also to ensure high quality code. A lot of bugs would be removed if developers invited others to read their code. His philosophy for code maintenance is that the company should choose a duration for a cycle. Such that after the sixth cycle the code should be just be cleaned up. For example if a company has monthly cycle for maintenance of a product, after six months they should go in and do just clean up on the code. He highly recommends The Art of Programming.
For programming environment he would use any freeware text editor. It's been one of the common things with all the people we have seen.
When asked what he thinks about the present level of most code, he said that he is simply looking for a good way to express "horrible mess". The quality of software can not match the progress we see in hardware.
He noticed that many more people write code with high level of abstraction than was usual in those days. Things have changed, if you going to run applications that are spread in servers everywhere in the world, surely the old way will not work. Though the skill to work at low level programming is still needed. He truly believes that languages are generally getting better, in fact one could say that we are in sort of second golden age.
His approach to projects is build a lot of prototypes before the actual project. He loves to read other people's code, which is one thing that has been fairly constant with all the people we have seen. He recommends: The Art of Programming. Most of the people we have so far recommend this book.
Collection of books recommended by all of them: