We at Branded3 are always looking for ways to keep our skills sharp. Anyone who works in software development (regardless of the languages, frameworks or target platforms) will tell you just how easy it is to fall behind. If you are out of the development world for as little as six months, you can fall behind and be left in the dust – it is imperative to remain up to date with what’s going on.
Recently, we had an email discussion which revolved around the development team recommending their favourite resources (books, blogs, post-it notes, beer mats, envelopes and everything inbetween) that are related to our chosen profession of caffeine-fuelled hex wrangling. It turns out that when you ask a bunch of developers what their favourite resources are, you get quite a long list – I’ve tried to present a much shorter list here, for easy digestion.
Because each member of the development team (which I call “Team Awesome”) came to Branded3 from slightly different development backgrounds, we each have different experiences and tastes, we have quite the salad bowl of a development team. Because we all come from different backgrounds, we each have different ways of keeping ahead of the curve. Some of us spend hours reading through reference books; some catch up with a quick blog post; some watch, take part in, or provide tutorials; a few of the folks here actually give talks, and a few listen to podcasts.
“Outside of a dog, a book is a man’s best friend. Inside of a dog it’s too dark to read.” – Groucho Marx
While books on programming techniques and languages can, very quickly, become dated (when new versions of languages, frameworks or APIs are released), the ones that we’ve presented here are classics and they contain great advice for all programmers.
Based on his experience of working at Microsoft, Boeing and many other major software houses, Code Complete contains practical advice for all developers, from requirements generation up to supporting a shipped product. Not to mention that it’s one of the most widely recommended software development books of all time.
Another book based on real world experience, Frederick Brooks brings his experience of managing the development of IBM’s OS/360. The basic tenet of the book is that there is no sure-fire way of managing a development project (regardless of its size) that will work every time, only rules of thumb.
Brooks does present many ways of managing development, including several that he had actually used during the development of OS/360. “Brooks’ Law” (Adding more developers to a project late into its life cycles will actually slow down development”) is also based on the information presented in this book.
An excellent explanation on how the design of something can, and will, imply exactly how the thing should be used. This means that a badly designed object is to be blamed when a user has problems using it. Definitely worth reading for those who are interested in designing great software.
Jeff Atwood co-created Stack Exchange (the biggest collection of question and answer sites in the known universe), created discourse (the world’s first flat forum), and designed a custom keyboard specifically for programmers. “Effective Programming…” is full of no-nonsense information for all developers, presented in a very straightforward manner. This is definitely one for developers who are looking for ways to increase their workflow regardless of language, framework or target platform.
John Latham introduces both object oriented and Java specific concepts in a way which is interesting and engaging. The information is presented in a way that will allow readers to transplant them to any language or framework easily, meaning that it is a perfect book for a complete beginner to Java, or programming in general. It is also used to provide the basic structure for Object Oriented Programming with Java 1 and 2, the class that John Latham gives to first year Manchester University Computer Science students.
“When I started blogging, it was a dinosaur blog. It was me and a handful of tyrannosaurs. We’d be writing blog entries like, ‘The tyrannosaurus is getting grumpy.'” – Neil Gaiman
Blogs are a great way to keep up to date with what’s going on in the world of software development.
Another entry for Jeff Atwood: Jeff’s weekly discussions on modern software development are quite informative (especially his famous FizzBuzz and Please Don’t Learn to Code articles). Plus, his articles are rather short and to the point, making them perfect for coffee breaks or commutes. Definitely worth reading.
We all use Google’s search engine on a daily basis, a large percentage of the population use a Google-backed operating system (either Android or Chromium), and even more folks have Google Mail accounts. The Google blog brings all of the aspects of these things together in one place and contains news on everything that Google do (much like this blog does with Branded3).
“You are what you share.” – C.W. Leadbeater
Social Networks are a great place to share ideas and information (just don’t let your boss catch you looking at cat pictures on Facebook). While not always as up to date as blogs, social networks are a great place to find information dumps. Experts and novices alike come together to share their knowledge, which makes them useful for learning something new or keeping your skills sharp.
While a lot of folks may not think of GitHub as being a social network, it actually is. Instead of sharing information dumps, the users show off their skills in the content that they provide. There are GitHub repositories for just about everything (including a dialect of the C language based on Arnold Schwarzenegger quotes)
Specifically, we’re referring to Stackoverflow and the programmers section, but there are stack exchange sections for everyone. It’s the biggest collection of question and answer pages in the world, and definitely worth searching through for topics that you are interested in.
LinkedIn is not just a social media network, but can be used as a way to field questions to experts. It’s not as immediately useful as Stack Exchange, but shouldn’t be counted out as there are many groups dedicated to specific languages, frameworks and tools. It’s definitely worth taking a look at for the amount of expert knowledge and networking that can be achieved based on sharing your expert knowledge.
“The one exclusive sign of thorough knowledge is the power of teaching.” – Aristotle
PluralSight is a tutorials sight that can be described as: most excellent. It has video tutorials in most of the widely used programming languages and frameworks, with easy to follow notes and examples. It is a great place to start when looking for a tutorial on how to use a new technology.
Tuts+ has a great tutorial section, where a wide range of programming courses are available, it comes at a subscription but is a very useful resource complete with easy to understand videos to help you on your way to coding ninja status.
While very few of the “books” on wikibooks are complete, they can be a great starting point for initial research into a new language, framework or tool. Most of the “books” are arranged into small chunks, making them easy to read during a coffee break or short commute.
“If I have seen further than others, it is by standing upon the shoulders of giants.” – Sir Isaac Newton
Whilst programming is a visual medium, discussion on programming can take any format. 40-60 minute discussions on programming can be quite helpful for folks who are looking to fill their daily commute with something entertaining and related to their job (or field of study).
Patrick Wheeler and Jason Gauci talk listeners through a different programming language, framework or technique every two weeks. They go into detail about the history and where the language/framework of choice is used the most. Each episode is 40 minutes to 1 hour long (just long enough for most commutes), and is really informative.
If you’ve found the above useful too or have any other resources to add, feel free to leave them in the comments below or get in touch!