Up to Newsletter Index

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




Quotable Quotes

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


Return to top


Software Development Process and Methodology

Article:  Why won't you DIE? IBM's S/360 and its legacy at 50

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.



Article:  Why do software projects fail?

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.



Article:  The Great Works of Software

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.



Article:  TDD, Straw Men, and Rhetoric

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.



Article:  Don’t know what I want, but I know how to get it (Recommended by Tatiana Goss)

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.



Article:  Extraordinary Teams are Lead by Extraordinary Leaders (Recommended by Tatiana Goss)

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”.



Article:  How Product Ownership works in the Real World

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.



Article:  Management wants to know “Are you done yet?”

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.



Article:  How to keep projects on track

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.



Article:  Productive Developers are Smart and Lazy

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.



Article:  You Don't Read Code, You Explore It

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.



Article:  Code Like a Fighter Pilot, Design Like an Engineer — and Measure What?

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.



Return to top


Software Testing & Quality

Article:  How to Manage Risks During Test Planning Phase

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.



Article: Testing on Android: What Are Your Options?

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.



Return to top



Reference:  Bootstrap TLDR

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.



Reference:  An Intuitive Markdown Cheatsheet

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.



Tutorial:  The Absolute Beginner’s Guide to Node.js

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.



Reference:  10 Features in Java 8 You Haven’t Heard Of

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.



Tutorial:  JavaScript Frameworks: How to Learn Them Quickly

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.



Reference:  HTML Entity Lookup

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.



Reference:  Web Fundamentals: A handbook for best practices

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.



Return to top


Career Development/Miscellaneous

Article:  As IT Pay Rises and Students Pursue the ‘Big Names,’ Mid-Size Firms Work Harder to Hire

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.



Article:  Burnout Comes in Three Varieties

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.



Article:  90% Communication

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.



Article:  More Tech Pros Earning Six Figures Than Ever

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.



Article:  These Tips Will Make Your Software Engineer Resume World Famous

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.



Article:  How Steve Wozniak Wrote BASIC for the Original Apple From Scratch

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.



Article:  HP and Getting Rid of Dr. No

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.



Return to top


Useful Utilities

Postman (Free – Cross-platform/Google Chrome extension – 2.61MB)

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.



Windows Bootable ISO Creator (Free – Windows XP/Vista/7/8 – 1.5MB)

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.



TableTools2 (Free – Cross-platform/Firefox Extension – N/A)

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.



CShell (Free – Windows XP/2003/Vista/2008/7/8.x and .NET 4.5 – 3.8MB)

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 (Free – Cross-platform/Online tools – N/A)

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.



Return to top


Just For Fun

271 Years Before Pantone, an Artist Mixed and Described Every Color Imaginable in an 800-Page Book

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.



Linux Poetry

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.



Corporate Time Equivalents

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.



The Sierpinski triangle page to end most Sierpinski triangle pages

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.



Isaac Asimov's predictions 50 years on

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).



Return to top