July 2013 Newsletter
Knowledge can be communicated, but not wisdom. One can find it, live it, be fortified by it, do wonders through it, but one cannot communicate and teach it. –Hermann Hesse
All models are wrong but some are deadly. One does not judge a model on whether it is wrong, rather how costly the error, period. –Nassim Taleb
Est natura hominum novitatis avida. (Human nature is fond of novelty.) –Pliny the Elder
They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety. –Benjamin Franklin
This article references an interesting video about developing the
programs for the Apollo lunar missions.
In that era, memory actually added physical weight to the device. The author provides an analogy to coding
today contributing “psychological weight” in the form of each line of code
needing to be maintained in the long run.
http://www.johndcook.com/blog/2013/06/10/the-weight-of-code/
User stories are certainly an effective method for capturing and
communicating business requirements, when done correctly. Here are handful of
frequent mistakes to watch out for to ensure you develop the best possible
stories.
http://www.romanpichler.com/blog/user-stories/5-common-user-story-mistakes/
A Google product/project management veteran gives 10 rules (in the form
of anti-patterns!) for how to work successful with the technical people on a
team. His list is both relevant and
practical and includes salient examples.
https://www.kennethnorton.com/essays/how-to-work-with-software-engineers.html
Ten years after Nicholas Carr’s provocative statement that IT Doesn’t Matter,
this author takes a look at how business can differentiate themselves in light
of the realization of the predicted democratization of technology tools, due to
the cloud, mobile systems, and the like.
http://blogs.hbr.org/cs/2013/06/it_doesnt_matter_but_information_does.html
Using an interesting analogy to gravity from physics, this development
expert explains why it’s better to reduce the size of your project instead of
adding resources or reducing churn (requirements and scope change).
http://peternixey.com/post/54026285667/beware-your-projects-schwarzschild-radius
One of the core principles of lean
development practices is to eliminate
waste, which is typically defined as anything that can’t be used. This article talks about ideas for removing
“hidden factory” processes, which are things that people do, but that are
unseen (and, therefore, unaccounted for!) by management, so that your team can
deliver more measurable business
value.
While some agile development experts have started recommending not using story
points in the estimation process (here
and here,
for example), this author makes that keen observation that story points should
really be a normalized estimate of the combination of expected effort,
complexity, and the amount of unknowns around the story. Furthermore, he recommends the practice of
establishing a concrete measure of the smallest story (what 1 or 2 points actually
means), so that relatively sizing makes sense.
http://devopsnet.com/2013/06/19/whats-the-point-in-points-agile-estimating-with-dinosaurs-and-bees/
As software complexity and size increases, the ability for each developer to understand the application becomes more difficult. Although most organizations emphasize “quality” (TDD, unit tests, etc.) of code, this author suggests that we are measuring the wrong things and we need to look at the bigger picture in terms of business value.
http://architects.dzone.com/articles/does-code-quality-really-help
How would explain or measure software quality? This article doesn’t actually prescribe how to do it, but it offers some great suggestions about dimensions of quality that you may want to consider for your particular situation.
http://tmxcredit.com/tech-blog/in-search-of-software-quality/
What if, instead of pushing developers to deliver faster, your development methodology enabled (perhaps even required!) workers to stop the process as soon as a quality problem was found? This presentation discusses how worker empowerment improved both quality and productivity.
http://blog.smartbear.com/software-quality/empower-developers-to-build-quality-in/
When writing Java code (and, more precisely, when designing your object structure!), it’s easy to forget about the option of using composition instead of inheritance. This article gives some excellent advice about how to decide which is appropriate for a given situation.
With the popularity of mobile, but the importance of traditional platforms, responsive design is vitally important. But getting started with responsive design isn’t always easy. This site provides a plethora of patterns, tools, and best practices for responsive design.
http://bradfrost.github.io/this-is-responsive/patterns.html
Lambda expressions, sometimes called anonymous functions or closures, are an important programming language feature for modern programming. This three-part tutorial introduces the concept and explains how to use lambda expressions in Java.
http://www.oraclejavamagazine-digital.com/javamagazine_open/20121112#pg35
http://www.oraclejavamagazine-digital.com/javamagazine_open/20130304#pg40
http://www.oraclejavamagazine-digital.com/javamagazine_open/20130506#pg48
JavaScript is a quirky little programming language. This article shows some of the more common and a few esoteric odd behaviors of JavaScript related to arrays.
http://blog.mikota.cz/2013/06/fun-with-javascript-arrays.html
Application APIs are essentially a requirement for any internal or external application built today. Likewise, REST is the de facto approach for services today. This article provides a thorough, step-by-step tutorial on building Java REST web services with Jersey. The author shows all of the steps to build a simple service, including the data access portions.
http://techmytalk.wordpress.com/2013/06/22/restful-webservices-with-jersey/
Warren Buffett, Peter Drucker, Charles Dickens, and others give some tips on maintaining control of your most important resource, time, by learning to say “No”.
http://www.fastcompany.com/3009536/leadership-now/why-productive-people-have-empty-schedules
The fundamental objective of software development is to simplify a complex process and improve productivity and throughput of the users of the system. However, sometimes programmers forget to “sharpen the saw” themselves. Here are 10 practical tips to improve your productivity.
http://www.javacodegeeks.com/2013/06/10-productivity-tips-for-software-developers.html
Even though Google admits that they aren’t valuable in the hiring process, many companies use puzzles and “live-coding” in the candidate evaluation process. This developer notes that hiring should focus on other skills, such as organization, how the individual works with the team, and the like.
http://prog21.dadgum.com/177.html
What skills do you need to cultivate as a programmer to move beyond the basics of writing code? This author provides some relevant and salient concepts that every developer needs to understand, regardless of background or preferred programming language.
http://mjfisher.net/articles/levelling_up_as_a_developer/
This author explores the application of the eastern principle known as hara hachi bu, which (roughly) means “Eat until you are 80% full”, to our work lives. He points out how not running full throttle all the time helps prevent burn out and keeps some reserve for dealing with crises when they arise.
https://medium.com/this-happened-to-me/b38636e0b699
While IT job growth is better than employment growth in general, it’s still not as good as many experts would like. BLS statistics show that IT unemployment is 3.5%, more than 4% below the national average, and a Dice survey says that 3/4 of employers plan to hire IT workers in the second half of 2013.
http://www.eweek.com/it-management/it-jobs-growth-sure-and-steady-but-modest/
This article explains why the traditional, extrinsic motivation techniques don’t work and then posits that the best motivators in today’s workplace are autonomy, mastery and purpose.
Most productivity improvement systems are organized around the concept of focusing attention on ONLY the most important thing. Productivity maven Jason Fried says that, to sustain motivation and accomplish more, we should focus on two things: the next most important thing and the next most interesting thing.
http://37signals.com/svn/posts/3534-two-is
A new book about the history of the modern office, entitled, appropriately, Cubed, says that non-hierarchical organizations (“self-organizing”, if you prefer) are becoming more common, especially in “creative” disciplines, including programming. But there are still some problems, such as performance measurement, that need to be worked out.
http://nymag.com/news/features/bossless-jobs-2013-6/index1.html#print
Certainly, most of us in technology careers did not go into this occupation with the expectation of becoming millionaires. Most likely we wanted to be financially stable. Nevertheless, in certain areas, you could make nearly twice the national average salary as a programmer.
What does improv comedy have in common with programming? You might think not much, but read this article to see how some improv principles can be applied to team dynamics, especially in practicing servant-leadership as a technical leader on your projects.
https://blog.engineyard.com/2013/how-improvisational-theater-can-improve-team-collaboration
Based on a new report from the Brookings Institution, over half of current workers in STEM do not have a college degree. This article indicates that traditional measures of prerequisite skills for technology jobs no longer make sense in this world of MOOCs and ubiquitous Internet access.
Chances are that many (most?) readers of this newsletter are introverts. This person, who is now a college dean, says that one of the key traits of introverts, being a good listener, gives them a strong foundation for becoming leaders. He goes on to explain how introverts can adapt to their working environment to be successful.
http://blog.tutorspree.com/post/52801371505/how-an-introvert-learned-to-be-a-leader
An economist says that technology is doing away with jobs faster than new ones are created. This appears to be a sustained phenomenon and doesn’t bode well for the future of employment. And, according to George Lucas and Steven Spielberg, even Hollywood is not immune from the effects.
http://www.technologyreview.com/featuredstory/515926/how-technology-is-destroying-jobs/
Richard Bennett explains that with the economic recovery, the technical broadband infrastructure in the US has moved us from 15th in the world up to 8th. However, the largest impediment to broadband growth is lack of subscribers for a variety of reasons, including lack of competition resulting in artificially high prices.
http://www.nytimes.com/2013/06/16/opinion/sunday/no-country-for-slow-broadband.html?_r=0
Do huge numbers without much context (perhaps US GDP of $15 trillion) make your head spin? This cool little extension for Google Chrome helps you to better understand numbers that come up in web pages you visit. It automatically provides inline references, plus you can do a search from the browser toolbar. For a comprehensive review of this tool, check here.
http://www.dictionaryofnumbers.com/
CuteMarkEd is an open-source, cross-platform (Linux and Windows) Markdown editor with a great feature set include side-by-side “live” preview of editing, support for math expressions and code syntax highlighting, definition and application of custom styles, exporting output to PDF, and more.
http://cloose.github.io/CuteMarkEd/
Cito is an open-source toolkit that allows programming in a new language called Ć, which is a sub-set of C#. Code in Ć can be translated into a variety of target languages, including C, Java, C#, JavaScript, and ActionScript, via cito for native compiliation.
The jQuery library is the de facto standard for client-side JavaScript programming these days. But as jQuery has evolved, it has also grown and can become unwieldy at times (although now you can download just the parts you need/want). Instead of jQuery, if you mainly use it for DOM manipulation, you might want to check out DOMquery. It’s a small (just 7kB minified) library, built using Common.js, that includes the typical DOM element, class, and CSS functions, along with some simple event handling.
https://github.com/azer/domquery
PuTTY Tray is an enhanced version of the classic PuTTY SSH/Telnet client with some excellent features such as ability to minimize to the system tray, configurable window transparency, saving session configuration settings to files, automatic URL hyperlinks, always on top, and more. Moreover, it comes in a single file (separate 32-bit and 64-bit versions) so you can run it from anywhere.
https://puttytray.goeswhere.com/
At some time or another, you’ve probably dreamt of being a ninja. But what would your name be? The Internet comes to rescue with this cute site that will generate your ninja name. Just call me sensei Chikirin Zumo Tokuari.
http://commoninja.com/seimaineim/
ScummVM is a mature, open-source engine for running dozens of popular retro computer games. Originally written in C++, this guy has ported it to HTML5 and online demo includes a half-dozen popular LucasArts games.
http://clb.demon.fi/html5scummvm/
This simple, but fascinating Flash-based site displays the current (local) time with the background displayed using the time value converted to the corresponding hexadecimal color value. The display is also available as a screen saver for Windows, Mac OS X, and Android.
http://www.thecolourclock.co.uk/
Down on how callous and cold the world seems sometimes? Check out this heartwarming video where a magician switches a $1 bill in the hand of homeless people into a $100 bill.
http://mashable.com/2013/06/12/magician-100-dollars/