Coders At Work and Interview Candidates

I recently bought and read Coders At Work mainly for this reason; Jeff Atwood wrote this on his site:

I also realized Coders at Work can potentially serve as a job interview filter. If the next programmer you interview can't identify at least one of the programmers interviewed in Coders at Work and tell you roughly what they're famous for ... I'd say that's an immediate no-hire.

After reading the book I totally disagree with this. Most of the people in this book are old, very old. They started on PDP systems and wrote in Fortran. Most have peaked in writing C and have not gone any further. They also mainly write in emacs and use gdb as their debuggers.

They are largely academics and use functional languages. Those that are still working in modern industry are in hallowed positions where they aren't under the same project pressures that coding monkeys are. For instance one of those interviewed is at google but hasn't been checked out on a language and so can't commit code there.

This is so far removed from the modern engineering experience it is not funny. The day to day things I have to deal with are producing quality code while satisfying all the managerial demands for documentation, meetings, etc while juggling an arbitrary project deadline, demoralized resources because software is a system of perpetual crunch and leaves no light at the end of the tunnel.

The things I am really interested in is how to achieve quality code within these pressures. Because they are constant. Anything in a language and its inherent architecture that aids me in producing a quality product and easy to manage codebase and architecture within all the restrictions of a modern software shop is a bonus. I don't have the architectural freedom of academia, nor do I have the openness of timelines. I am constantly under pressure to produce things by an arbitrary date.

Engineering is never powerful enough to influence that date or make it real. Management always wants a date and often makes one up on their own. I can understand their need. They have to marshal resources other than engineering such as physical production, marketing, so forth. When engineering does give a date it is usually wrong anyway due to scope creep and how pitiful we are at estimating tasks with any degree of accuracy.

The best book I have read is Martin Fowler's Refactoring. The very next day I could apply some of those techniques and have higher quality code. In engineering terms it offered instant gratification. Refactoring is a pure engineering book. Coders At Work in comparison is an interview book about historical celebrities in the engineering field.

To me, in the past ten years or so the biggest improvements in productivity have been:

Not managing memory. I take this totally for granted in languages like Java, C# and Python.

Eclipse adding import statements with a click (please do that soon Visual Studio. Also add automated compile please ...)

Google. If I get a stack trace now, I know I am not alone, someone else on the internets has had the same problem and I google the stack trace explicitly and within minutes of browsing have the answer. When the internet was less stable and connections at businesses commonly went down, we would joke that we can't debug without an internet connection to a search engine.

Refactoring tools in eclipse. It used to be if you refactored something you would go through clean compile after clean compile. The tools make it a five second job.

I used to use emacs until about four years ago. Since eclipse matured to the level of Visual Studio it has become a fantastic tool. It is nice and stable and has a great array of tools and perspectives. It is a wonderful piece of software.

Many of the engineering advances of the last five years have gone straight into eclipse as well. For me it is not unusual to be flicking between perspectives in the one project doing multiple ant builds, junit tests, etc etc as a mini continuous integration before the code is checked in to the repository.

If someone didn't know the history of computing and the celebrities in the field then that is ok to me. For a constantly under-pressure code slinger working anonymously cube farm to an arbitrary project deadline date, it is more important to me that they have read 'Refactoring' and understand the tools to achieve it in eclipse. I wouldn't disqualify a candidate because they didn't know who created Javascript, or who is fighting over the current standards at ECMA and so forth.

Generics in Java

From the Coders at Work book discussing why generics were added in Java with Joshua Bloch:

My mental model was "Hey, collections are almost all homogenous - a list of strings, a map from String to Integer, or whatever. Yet by default they are heterogenous: they're all collections of objects and you have to cast on the way out and that's nonsense."

Wouldn't it be much better if I could tell the system that this is a map from string to intergers and it would do the casting for me and it would catch it at compile time when I tried to do something wrong!

Bloch notes that many of the additions to Java 5 were just automating in the compiler what was being done manually before by coders in the source files. The addition of generics drastically changed Java code. Before there were casts all over the place in for loops. Now type safety is taken for granted.

To be truthful, it was rarely that a ClassCastException got past development or QA and became a runtime production issue. The casting was not really a quality issue. It did make programs look messy and generics have improved there in my opinion.

Visually, the use of generics has changed Java code drastically. You never see a loop, collection or map happen without them now. Personally I think they were a positive addition.

Most Popular on South Sea Republic

The articles that have been viewed the most:

Most Popular Restaurants in Phoenix

Phoenix Eats Out is the restaurant review site for Phoenix, Scottsdale and Old Town Scottsdale which lists the modernist and contemporary restaurants, taverns and bars in the greater Phoenix area. This is the list of the most popular restaurants pages from phoenixeatsout.com that have been viewed the most; My personal favourite restaurants in Phoenix are AZ88, Postinos, Bomberos with Grazie, Humble Pie, Orange Table, The Vig, Fez and others coming close behind. View the complete list with the photo-journalistic style images on phoenixeatsout.com

Most Popular Hikes in Arizona

Arizona is an outdoor state and has lots of hiking in the city and around the state. Phoenix is unusual for most cities in having several large mountains in the center of the city with great hiking. Anyone who comes to Phoenix has to do the Echo Canyon trail on Camelback and the Summit Hike on Squaw Peak or Piesta Peak. The views of the city, suburbs and surrounding mountains are wonderful from Camelback and Piesta Peak. For more experienced hikers there is the McDowell Mountains in North Scottsdale that has several difficult and strenuous hikes in Tom's Thumb and Bell Pass. Alternatively, you can hike the highest mountain in Arizona. At 12,600 feet Humphrey's Peak is a long and difficult hike.

Alternate Australian Constitutions

Between 2004 and 2009 this site, southsearepublic.org, was a constitutional blog based on scoop which focused on Australian and global constitutional issues. One of the strongest aspects of it was the development of constitutions by those involved in the blog. These constitutions are the outcome: The constitutions were built using principles from Montesquieu's separation of powers, the enlightnment's universal political rights and the ancient Athenian technology of sortition and choice by lot.

Archives For South Sea Republic

South Sea Republic started in 2004 as an Australian constitutional blog in 2004 based on scoop software. It was an immigrative outgrowth of Kuro5hin. The archives for each year since then; The articles are ordered by views.

Who Is Cam Riley

Cam Riley I am an Australian living in the United States as a permanent resident. I am a software developer by trade and mostly work in Java and jump between middleware and front end. I originally worked in the New York area of the United States in telecommunications before moving to Washington DC and working in a mix of telecommunications, energy and ITS. I started my own software company before heading out to Arizona and working with Shutterfly. Since then I have joined a startup in the Phoenix area and am thoroughly enjoying myself.

I do a lot of photography which I post on this website, but also on flickr. I have a photo-journalistic website which lists the modernist and contemporary restaurants in phoenix. I have a site on the Australian Flying Corps [AFC] which has been around since the 1990s and which I unfortunately lost the .org URL to during a life event; however, it is under the www.australianflyingcorps.com URL now. The AFC website has gone through several iterations since the 90s and the two most recent are Australian Flying Corps Archives(2004-2002) and Australian Flying Corps Archives(2002-1999) which are good places to start.

Websites Worth Reading

Websites of friends, colleagues and of interest;