December 2013 Newsletter
A peasant and a philosopher may be equally satisfied, but not equally happy. Happiness consists in the multiplicity of agreeable consciousness. –Samuel Johnson
Experience is the name every one gives to their mistakes. –Oscar Wilde
An investment in knowledge always pays the best return. –Benjamin Franklin
To meet the great tasks that are before us, we require all our intelligence, and we must be sound and wholesome in mind. We must proceed in order. The price of anger is failure. –Elwood Hendricks
If I’d been born in my grandfather’s time, I’d have made my grandfather’s mistakes. –Frank Herbert
Interestingly, the US Department of Defense (DOD), which is one of the
biggest spenders (assuming that the government isn’t shut down!) on software has come into the fold of agile development. They have released new procurement
guidelines calling for incremental releases of functionality and early
prototyping among other things.
http://nakedalm.com/dod-has-made-it-illegal-to-do-waterfall/
One factor that can subtly affect the progress of a team is how, once a
decision is reached, the team incorporates the outcome and moves on. Some teams struggle with decision-making itself,
especially when a consensus approach is used, but the action (or lack thereof!)
after making the decision can be just as critical.
http://www.infoq.com/news/2013/10/decision-taking-Agile
This article gives a great overview of the key skills of a technical lead
(as compared to project manager, development manager, scrum master or the like)
on development project. The author
emphasizes the necessity of balancing technical ability and “soft skills”.
https://medium.com/tech-talk/b193a544e771
While it’s certainly dismaying that this article essential resigns us to
the fact that poor project management and cost overruns are a normal part of IT
projects, perhaps more telling is that this appears in the mainstream
press.
http://www.bbc.co.uk/news/business-24962989
In many instances the agile principles have moved well beyond IT
development projects and into line of business activities. This presentation discusses how these
concepts apply in the more general context and how they relate to IT.
http://www.mendix.com/think-tank/7-principles-agile-enterprises/
While I don’t necessarily agree with the premise of this pundit’s claim
that 2-week agile sprints result in more “pressure” time for times on an annual
basis, it does make sense that we may be unintentionally moving toward
“hyper-vigilance” as the norm. Likewise,
the author notes that many teams seem to be missing the agile principle of sustainable
pace. Some interesting commentary and perspective
on this view can be found here.
Many (most?) of us have probably had the misfortune of working on a
poorly performing team. But what factors
separate good teams from bad? While this
list certainly isn’t the be-all, end-all in this debate, by applying the 7 deadly sins to development teams, it
certainly gives some good ideas for things to avoid to make your team the best
that it can be.
http://thehumanfactor.co/7-sins-of-doomed-teams/
Hardly a year goes by without pundits saying that Java’s demise is
imminent (if it hasn’t already been buried).
As we’ve mentioned in this newsletter before, even if the Java language
is on the decline the JVM is stronger than
ever with languages like Scala, Clojure, and
others. This article references some of
the reasons not to count Java out just yet.
http://www.drdobbs.com/jvm/if-java-is-dying-it-sure-looks-awfully-h/240162390/
By now, most of us have heard about the numerous troubles with the new healthcare.gov web site. Some pundits have concluded that requiring registration is the main cause of the problems. As with many such troubled software projects, it’s a story of the confluence of many factors and signs of the problems showed themselves early but were largely ignored. This project can serve as a cautionary tale about not paying attention to project warning signs and dealing with them up front.
This guide is still work in progress, but it provides an excellent contextual look at testing as a whole and more specifically about the role of developers in the testing process. The author includes good definitions of terms and then covers concepts in chapters like “A Case for Testing” and “Do we need QA?”, before jumping into the details about practices.
http://jasonpolites.github.io/tao-of-testing/
While probably not a revolutionary idea to regular readers of this newsletter, this article provides some great points about how important organizational culture is to success and how the quality of output is typically a direct reflection of the culture.
http://blog.smartbear.com/software-quality/product-quality-and-work-culture/
Shakespeare said, “What's in a name? That which we call a rose by any other name would smell as sweet.” Along those lines, this is an interesting discussion about the various terminology that we use to describe problems occurring in software.
http://moron4hire.tumblr.com/post/65439303421/glitches-vs-bugs-vs-defects
Nowadays, it seems that have an online code repository, on GitHub or BitBucket or similar site, is nearly as important as having a good resume (but doesn’t replace it!), when you are looking for a new position. This excellent two-part series helps you get started with GitHub, even if you have no experience with Git (or even other version control tools).
http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1
http://readwrite.com/2013/10/02/github-for-beginners-part-2
As we all know, the pace of change on the Web is accelerating. This interesting interactive visualization shows how server-side technologies and browser and other client-side technologies have changed since Tim Berners-Lee put the first page on the Internet in 1991.
http://www.evolutionoftheweb.com/
Most of us probably won’t use Haskell (or any of the other numerous esoteric functional languages) on a regular basis in our careers. However, Haskell is often touted as (one of) the most “pure” of the functional languages and, therefore, serves as a model for learning functional programming principles. This guide will serve as a good roadmap for the experienced developer who wants the challenge of learning Haskell.
http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/
As we often note in this newsletter, the main value of the Java platform is not necessarily the Java language itself (which has been showing some resurgence of late), but the JVM and how a completely different programming paradigm can be implemented to run on it. This comprehensive tutorial examines some of the popular JVM languages and how they fit into the overall ecosystem.
http://zeroturnaround.com/rebellabs/the-adventurous-developers-guide-to-jvm-languages/
Many of us use “to do” lists to keep track of things that need to get done. But what if you learned that they don’t work?! This author says that you should just use your calendar instead and block out time to accomplish tasks. This approach seems to be supported by the complexity, especially around lack of context, of many of the “to do” list applications.
http://blogs.hbr.org/2012/01/to-do-lists-dont-work/
This salary survey of 140 organizations for 69 IT job functions from over 400 US metro areas, plus some US BLS statistics, indicates that IT workers can expect a modest salary increase of 3% in 2014, after 5 years of nearly no increase.
http://www.computereconomics.com/article.cfm?id=1899
New research from a variety of quarters shows that more frequent and longer mental breaks have a variety of benefits, including increased productivity, improving attention, solidifying memories and fostering creativity.
http://www.scientificamerican.com/article.cfm?id=mental-downtime
Despite the mounting evidence that productivity goes down in open offices, they continue to grow in use, probably due to cost savings. In fact, some new research shows that open-plan offices are the least productive. Here is another article that discusses the problems and gives some suggestions for how best to deal with working in this environment.
http://www.businessweek.com/articles/2013-10-10/why-we-cant-get-anything-done-in-an-open-plan-office
Whether we like (or even recognize it!) or not, soft skills play a major role in our success as developers (and persons, in general). While I don’t necessarily agree with all the premises of this article, the author presents an interesting idea for how to think about our value to our organization in the form of an equation: Value = (Style ^ 2) * Substance – Expectation. The thing that I liked most about this is that he includes expectation as an important factor, which can even result in negative value!
http://simpleprogrammer.com/2013/11/18/become-valuable-software-developer/
While there may not be a lot in this article that you haven’t heard before about the negative results of working excessive hours, it presents many of these ideas a relevant, direct, and cogent manner. Moreover, the author discusses the points in terms of the costs, economic/financial, personal, and more, of this problem.
http://wearemammoth.com/2013/11/long-hours
This annual survey of over 3000 developers and development managers shows that after 4+ years, salaries are finally starting to show some improvement across the spectrum of factors.
http://www.drdobbs.com/architecture-and-design/2013-developer-salary-survey/240163580
Work got you down? It might not be the work itself, but rather your boss, or, more precisely, your interactions with the boss. A Danish study of over 4500 public employees shows that feeling that you are treated unfairly is more typically the cause of workplace-induced depression than a heavy workload.
http://sciencenordic.com/boss-not-workload-causes-workplace-depression
As we mentioned last month, coding in interviews for programming and development jobs is now the rule more than exception. If you haven’t been looking for work in while, this is probably new to you. This article gives some nice, practical tips for keeping your cool and succeeding in the coding exercise.
http://www.interviewcake.com/tips-and-tricks
Of course, money isn’t everything when it comes to a job, but it certainly is a major factor. Glassdoor has released their annual report of top-paying companies for developers/programmers. Topping the list is Juniper Networks. A couple of interesting items to note are that Yahoo pays better than Google and Wal-mart bests Facebook!
http://www.glassdoor.com/blog/25-highest-paying-companies-software-engineers-2013-glassdoor-report/
Despite the frequent failure of municipal broadband efforts, Los Angeles will soon requests bids to build fiber to all homes, businesses, and government entities within the city limits. They expect the cost to be $3 - $5 billion and be borne by the selected francisee.
It has been interesting to watch Microsoft embrace open-source technologies, especially with its development tools platforms. This tool brings full integration in Visual Studio 2012 (it’s already bundled in 2013 version!) with Git version control. The integration is clean and very simple to use.
http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c
Most people know that keeping your hands on the keyboard makes you more productive. Strangely, the one place that this is most difficult to do is in the web browser. Ferro is a Google Chrome extension that allows you to easily interact with Chrome itself using the keyboard. Supported actions include opening history or bookmarks, displaying installed add-ons, and more.
Wiretap is a free, open-source JavaScript library which acts as a proxy for all HTTP requests in your application to any external web service, so that you can debug problems interacting with that API. It color-codes responses, so that you can quickly identify whether the problem is on your side on not. Likewise, it supports tunneling so you can debug via localhost.
One of the best features of modern Linux distributions is their package management utilities, such as apt-get, yum, yast, etc. Even after almost 20 years of “modern” Windows, it still doesn’t have a similar mechanism to install common applications. Scoop.sh is one attempt to remedy that. Just install the utility and you can install a wide variety of applications from the command prompt very simply.
q is a simply Python script that allows you to query tabular text data, such as CSV files, using SQL. If you’ve ever gotten a data extract in plain text format and had to jump through a bunch of hoops to get the data so that you could query it, q comes to the rescue.
I’m sure it sounds strange, but I’m a bit of a conspiracy theorist at heart. Here’s a POSITIVE conspiracy theory for your consideration! This guy examines the premise that all of the Pixar feature films are part of a single universe with an overarching metanarrative that ties them together. Not sure if it’s true, but very interesting nevertheless.
http://jonnegroni.com/2013/07/11/the-pixar-theory/
Perhaps you read Beowulf in high school or college literature and, if so, you probably had to memorize the first line. Well, according to a British researcher, the initial interjection (usually translated as “Listen!”) is wrong and it changes the meaning of the entire line. Who would have thought?!
http://www.manchester.ac.uk/aboutus/news/display/?id=11000
I freely admit that I’m a sucker for these retro games. To me, Castle Wolfenstein is one of the greatest games of all time. To show you how far technology has come in the past 35 years, now you can play it in your browser in a JavaScript emulator!
I’m sure that most readers of this newsletter can appreciate this comic. Even more than the obvious, this really shows how programming is still very much a human endeavor and, therefore, subject to all of the foibles (and flashes of brilliance!) of us people.
http://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer
Even though Thanksgiving is the next holiday, who doesn’t enjoy Easter eggs an applications or web sites? Here’s an overview of some of the gems hiding inside of Google. Funny that they don’t include my favorite: Tilt.