May 2014 Newsletter
Quotable Quotes 1
Software Development Process and Methodology 1
Software Testing & Quality 3
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.
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.
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.
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.
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”.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).