May 2014 Newsletter
Quotable Quotes 1
Software Development Process and Methodology 1
Software Testing & Quality 3
Tutorials/References 4
Career Development/Miscellaneous 5
Useful Utilities 6
Just For Fun 6
The more we learn about the world, and the deeper our learning, the more conscious, specific, and articulate will be our knowledge of what we do not know; our knowledge of our ignorance. –Karl Popper
The single biggest problem in communication is the illusion that it has taken place. –George Bernard Shaw
Management is efficiency in climbing the ladder of success; leadership determines whether the ladder is leaning against the right wall. –Stephen Covey
I have learned people will forget what you said. People will forget what you did, but people will never forget how you make them feel. –Maya Angelou
Computers were simpler then. We had only 0's. We'd read papers discussing computers with 1's and 0's, which opened our eyes and made us yearn. We prayed for 1's to come to Oxford. Finally, we got them and everything was greatly changed. Still, computing with just 0's was an awful lot easier. –Stan Kelly-Bootle, on being the first recipient of a graduate degree in computer science
With the pace of technological change, most of us would expect the
lifespan of any code that we develop to be no more than 5-10 years. So, when you consider that IBM
S/360 is 50 years old and still supporting many organizations, there are some
lessons to learn about how organizations become so dependent on these tools,
even when it’s difficult to maintain and support them.
http://www.theregister.co.uk/2014/04/07/ibm_s_360_50_anniversary/
If you’ve worked in software development for very long, you’ve probably
been involved in a project that didn’t go so well. But the fundamental question is why did the
project fail? In this article, the
author suggests three main types of problems:
management, engineering (development), and culture. He goes on to explore each and provide
recommendations for avoiding them.
This author poses the question about whether or not it makes sense to
build a canon of the greatest accomplishments in software development. While the article is somewhat philosophical,
it does raise some interesting questions about how we would (or could) measure
the “greatness” of software.
https://medium.com/message/705b87339971
It seems that periodically, in the software development world, little
skirmishes come about about some topic. Recently, it’s been the subject of
test-driven development (TDD) based on an essay
from the creator of Ruby on Rails that “TDD is dead”. (You can read a very good digest of the
debate here.) While there are many responses to him
(including this one
from Uncle Bob Martin), I chose to feature this one, because it emphasizes
a couple of salient points: theory and
practice are often quite different and no methodology or technique should be
adopted without assessing its suitability to your particular situation.
https://www.destroyallsoftware.com/blog/2014/tdd-straw-men-and-rhetoric
While I never quite expected there to be much of an intersection between
the Sex Pistols and agile development, this guy found one. This article makes a very important
distinction between iterative development and incremental development and how
that difference is critical when communicating with stakeholders.
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
If you’ve read this newsletter for very long, you know that I’m
passionate about leadership over management and how the two are quite
different. In this article, the author
gives great examples of how leaders guide their team versus how managers do by
doing a comparison between “average bosses” and “extraordinary bosses”.
http://agilescout.com/extraordinary-teams-lead-extraordinary-leaders/
One of the most important, yet frequently overlooked, roles in agile
development is the product
owner (PO). While certainly not all
of the “official” roles in agile are necessary (I’ve seen it work just fine
without a scrum master), product owner is NOT one of them. This author emphasizes that strong,
engaged product owners are critical to success and he suggests that one PO
is not sufficient for most projects.
http://swreflections.blogspot.com/2014/05/how-product-ownership-works-in-real.html
This project manager waxes a bit philosophical on the question “What is
the point of project managers?” He
emphasizes that the main job of the PM is communication.
http://www.projectsherpa.com/blog/management-wants-to-know-are-you-done-yet/
Project failure is all too common in software development. This pundit offer some suggestions for how to
avoid big surprises when projects run in to trouble: Require realistic project plans; use agile
project management; listen to the messenger; don't shoot him; and review
projects periodically.
http://www.computerworld.com/s/article/9247612/Bart_Perkins_How_to_keep_projects_on_track
When I first saw the title of this article, I expected that the author
would use “lazy” in the same sense as Larry Wall’s famous
comment: We will encourage you to develop the three great virtues of a
programmer: laziness,
impatience, and hubris. Instead,
he makes a great analogy with lazy-loading by
emphasizing that writing code is the one of the last activities in a good
development process.
http://accelerateddevelopment.blogspot.com/2014/04/productive-developers-are-be-smart-and.html
On almost any project, one of the first things you have to do as a
developer is understand the “lay of the land” of the code base. Or, perhaps, you want to look at a good code base
for tips and best practices. Either way,
you have to go about internalizing the structure and “flavor” of the code (in
which case, you might want to check out Source Navigator!). This article provides some excellent ideas
for how to do this by thinking of yourself as an explorer of uncharted
territory.
http://prog21.dadgum.com/194.html
This excellent article discusses what ‘agility’ actually means and how we
can effectively determine whether we are improving our process or not. Of course, there are no simple answers, but
he emphasizes that one of the key aspects of agility is responding to
uncertainty, as much as reducing cycle time.
http://agile.dzone.com/articles/agile-fighter-jets
At its most basic, software testing is about managing and mitigating risk. We do testing to understand how the application (and the larger system and business process) function, so that we can make informed decisions about its fitness and readiness for use. This article looks at how risk management should be factored into the planning phase, such as by prioritizing tests.
http://www.softwaretestinghelp.com/risk-management-during-test-planning-risk-based-testing/
Most testers know that the days of strictly desktop-based application testing are long gone. So how do you branch out with mobile testing, especially for Android platform? This article discusses how mobile testing differs from “traditional” testing and recommends some tools to help you get started on the Android platform.
http://code.tutsplus.com/articles/testing-on-android-what-are-your-options--cms-20399
The Twitter Bootstrap is an excellent front-end framework (especially for people like me without a lot of UX skills!). But it is so comprehensive, it can overwhelming to remember the various selectors. This site presents all of the selectors on one page with examples to provide a quick reference.
http://anvoz.github.io/bootstrap-tldr/
Markdown is the way of the future for structured text editing. But when you first get started with Markdown, whether it’s for wikis or other uses, it can be difficult to understand the syntax and who it’s translated into the corresponding formats. This nice reference allows you to click on an intuitive toolbar to see the Markdown syntax and how it will appear when rendered.
http://chibicode.com/markdown-toolbar-cheatsheet/
Even if you don’t have an immediate need to develop with the Node.js platform, it’s certainly worthwhile to have a basic understanding of the concepts. This comprehensive tutorial gives a step-by-step explanation of how to get started and shows you have to develop a simple web server and parser on Node.js. Finally, it explains the concepts around NPM, the Node.js package manager.
http://blog.codeship.io/2014/05/07/nodejs-beginners-guide.html
While lambdas are the big new feature in Java 8, there are plenty of other goodies in the box. Here are some of the features that you may not be familiar with, but which certainly deserve some attention.
http://www.takipiblog.com/2014/04/30/10-features-in-java-8-you-havent-heard-of/
With the proliferation of JavaScript MV* (MVC, MVVM, MVP, etc.) frameworks, it can be daunting to move from “plain” JavaScript to a framework (or choose a framework) or to a new framework. This excellent tutorial provides tips for how to quickly get up to speed on a framework by looking a few standard patterns, such as routing, data binding, templates/views, models, and more. For each topic, the author provides detailed code samples from three popular frameworks: AngularJS, Backbone.JS, and Ember.js.
http://www.funnyant.com/javascript-frameworks/
With the sheer number of HTML entities for characters, it’s impossible to remember them all. This cool online tool allows you to search for the correct entity based on similarity to regular characters. For example, if you can’t remember that the left arrow entity is ← just put in a “less than” symbol.
http://entity-lookup.leftlogic.com/
This is Google’s new guide to web design best practices for building sites that work effectively on a variety of devices (think “responsive”). It includes topics such as layout; use of images, audio, and video; and form design.
https://developers.google.com/web/fundamentals/
With average salaries for new information technology graduates this year expected to be nearly $60,000 per year, this makes it difficult for small- and medium-size companies to attract top talent. This article discusses what one company is doing to compete with the big companies, like Google, Facebook, and others.
Feeling frustrated with your job? Before you do anything rash or decide what to do to get out of the funk, check out this article to see which kind of burnout you have: overload, boredom, or worn-out.
After working on dozens of projects and teams in my career, I can attest to the validity of this developer’s contention that actual work on development projects is really only 10% of the effort and the other is 90%. It seems hard to overstate the importance and value of clear, concise, and correctly-targeted communication to ensure project success.
http://planetary.io/notes/communication
In yet another sign of the improving economy and employment outlooks for technology workers, for both employees and contractors, a greater proportion of workers have crossed the $100k threshold. For employees, almost 1/3 now make at least $100k, up from under 1/4 in 2010, and over half of contractors are at this level.
http://news.dice.com/2014/04/21/tech-pros-earning-six-figures-ever/
Of course, there is still plenty of debate about whether or not resumes are still relevant in today’s world. Nevertheless, it certainly doesn’t hurt to have one and, if you do, it should be good. Here were some suggestions to make your resume stand out from the crowd both on paper and online.
http://www.doesnotcompute.biz/5-dos-and-donts-to-make-your-software-engineer-resume-world-famous
In conjunction with the 50th birthday of the BASIC programming language, Woz shares how he created Apple Integer BASIC interpreter from scratch and got it to run on 4kB of RAM.
http://gizmodo.com/how-steve-wozniak-wrote-basic-for-the-original-apple-fr-1570573636
Here’s an interesting take on how HP is trying to re-make their corporate culture (and, in many cases, attempting to go back to the roots of the founders!). One of the key elements in this process is marginalizing the chronic naysayers.
http://www.itbusinessedge.com/blogs/unfiltered-opinion/hp-and-getting-rid-of-dr.-no.html
If you do any web service development or testing, Postman is an excellent Google Chrome extension for creating and sending HTTP requests. It supports all of the HTTP verbs (GET, PUT, POST, etc.). You can structure the data in a variety of different ways, including JSON and XML. And it shows the history of the requests and responses.
This is a simple, wizard-based utility that allows you to create a bootable image file (ISO format) from your Windows installation media. You can burn the ISO to CD ROM or use other tools, such as Rufus, to make a bootable USB drive from the image. Very handy for those situations where you run into trouble booting your PC and need to rescue some files from it.
http://www.cozli.com/software/wbi-creator
Have you ever run across a data table while browser the Internet and wished you could sort or filter the data? TableTools2 does that and a whole lot more, including searching (similar to Excel’s search behavior), copying data with or without formatting, and even summarization and statistics on numeric data.
http://www.mingyi.org/TableTools2/
Would you like to write Windows scripts in C# or just want to test a simple code snippet without loading Visual Studio? Then CShell is your ticket to productivity. It’s a simple, yet powerful IDE and REPL for C# that features immediate execution without compilation, code completion for normal C# and C# scripts, support for LINQ, and more.
Runnable is a new code search engine that allows you to compile and run the results directly in your browser. Basically, it’s a REPL with code snippet storage for a variety of programming languages and platform stacks, including Java, Django, PHP, jQuery, Node.js, Bash, CodeIgniter, MySQL, and many more.
Most designers are familiar with the “bible” of color references: the Pantone color guide. Regardless, you’ll be amazed at this 17th-century book in which the author mixed and documented hundreds of different colors.
http://www.thisiscolossal.com/2014/05/color-book/
I’m not sure who dreamt up this idea, but it works much better than you might expect. This is an entire site dedicated to poetry inspired by and based on code from the Linux kernel. And you might even learn a thing or two about how the heart of Linux works.
I imagine that developers and testers will appreciate this humorous look at what people really mean when they give estimates about how long something will take at work.
http://www.mcsweeneys.net/articles/corporate-time-equivalents
First, a warning: This page is huge (lots of data) and could easily crash your browser. Now, with that out of the way, if you enjoy math and algorithms, definitely check out this site about the famous Sierpinski triangle fractal.
http://www.oftenpaper.net/sierpinski.htm
Forget 1984. You must check out these extremely prescient (love that word!) ideas that Isaac Asimov had about what our world would be like 50 years ago in conjunction with the New York World’s Fair (which also featured the debut of the Ford Mustang).
http://www.bbc.com/news/technology-27069716