May 2011 Newsletter
There are no secrets to success. It is the result of preparation, hard work and learning from failure. –Colin L. Powell
Any process that tries to reduce software development to a "no brainer" will eventually produce just that: a product developed by people without brains. –Dave Thomas and Andy Hunt, Cook Until Done
A man always has two reasons for doing anything: a good reason and the real reason. –J. P. Morgan
Neither proofs nor tests can, in practice, provide complete assurance that programs will not fail. –John B. Goodenough and Susan L. Gerhart, Toward a Theory of Test Data Selection
The superior man understands what is right; the inferior man understands what will sell. –Confucius
To forgive is to set a prisoner free and discover that the prisoner was you. –Lewis B. Smedes
Deloitte consulting has released a new report on 10 disruptive technology trends that they expect to have significant impact on the enterprise over the next 18 months. Five of the trends are "re-emergent" type and all of them focus on natural convergence between business and IT.
This is an interesting essay about the inevitable changing role of IT as technology becomes commoditized. The author suggests that IT needs to adapt in how to better support business users.
In this article, the author posits that agile approaches have caught on in almost all areas of business, except management, and that this is a weakness that needs to be addressed. He says that high-level organization missions and visions need to be adaptable to changing market demands and influences.
Although code reuse doesn't get as much discussion as it has in the past, IT management often still looks for how to get more mileage out of code. This author gives some good warnings and advice about one particular trap in this domain: the use of frameworks. He doesn't say that you shouldn't use frameworks, but simply that they don't provide any benefit in terms of code reuse and generally developing your own in-house framework doesn't pay off.
This is a very interesting article that points out while agile methodologies have some great benefits, no methodology will provide success and value unless management is committed to it and to forging the necessary organizational change to succeed—with or without agile.
One of the key principles that underpins agile techniques is doing the minimum possible to succeed and then iterating to enhance and improve. However, since these techniques are new, they can cause unfamiliar cognitive biases that give use false sense of security about the stability and success of our processes.
This article provides some nice perspectives on the important concepts of agile development for those who are just starting out and for those who have been using agile and want to continue to improve. Either way, these are some good points and refreshers about the key elements of agile.
As agile methodologies take deeper root in organizations, it seems that the emphasis on developing skills at effort and task estimation are increasing accordingly. This article explains some of the difficulties that developers have with providing accurate estimates. And some folks advocate abandoning estimation altogether.
Sometimes, technical debt and application architecture/infrastructure enhancements take a back-seat to application functionality enhancements. This author makes some good arguments for why code quality should matter to your customers and how to present the case for moving such work up the priority list.
Lisa Crispin provides some insightful and practical advice on using mind maps as a tool for planning your test strategy and test cases.
This article challenges the notion that agile testing is somehow different from "traditional" testing and that the important adjustment for testers to make, just like anyone else involved in agile methodologies, is to adopt the agile mindset.
This presentation outlines a new software testing approach (methodology) that the author calls hypothesis-based testing. The basic premise behind this is that you define your testing goals/objectives up front and use those to drive your testing activities. Looks like an interesting concept and probably is most valuable as one tool in your testing toolbox.
Automated regression test suites are a valuable tool for avoiding unintended changes to your application. However, if the test sometimes pass and sometimes fail, they don't do anyone any good. Martin Fowler presents remedies for the common causes for non-determinism: lack of isolation, asynchronous behavior, remote services, time, and resource leaks.
Test-driven development (TDD) is one of the great tools of agile development that can really make a difference in both productivity and quality of development. But it's also a difficult concept and technique to grasp. This excellent and extensive video series, supplemented by articles, shows exactly how to do TDD using relevant and not overly simplistic or contrived examples.
I had difficulty deciding whether this item should go here or in the Just For Fun section below… Anyway, if you have had trouble visualizing some of the common sorting algorithms, maybe these videos where they are performed by dancers will help.
As mobile applications become more pervasive, this 8-part guide gives you a good conceptual framework for how to adapt from either desktop application or "conventional" web development. It is essentially platform-agnostic and focuses on concepts rather than technical details.
With all of the hype surrounding NoSQL and the explosion in the number of NoSQL databases, it's difficult to know what's really going on in this space. This 120-page academic paper provides a detailed overview of the technology, the types of NoSQL databases, and gives some examples of application of specific platforms. Or perhaps the future is really a blend of SQL and NoSQL ("CoSQL" and "NewSQL")?
If you are looking for a new job, you want to be well prepared for interviews. One of the things to prepare is to have some good questions to ask the interviewer. This article has some really excellent questions to help get a feel for the organizational culture.
Most people agree that it's not polite to discuss sex and your salary in polite conversation due to the possible angst or embarrassment it could cause. But this often leaves you in the conundrum of not knowing whether you are making what you are worth or how much others at different companies make. This discussion thread runs the gamut about opinions on how to handle this difficult situation.
One of the memes currently making the rounds, mostly based on an essay by entrepreneur Peter Thiel (PayPal co-founder), is that higher education (especially in America) is the latest "industry" to face a bubble. This article (and some follow-on commentaries) says that progress in technology may reduce need to "high-end" jobs and that as a society we need to re-think what education means and how we teach skills important for the 21st century. For example, is the PhD the right approach?
Want to see how you’d match up against the top college programming teams from around the world? These are the problems for the championship round for 2010, which was dominated by teams from China and Russia.
With the stress of work and the protracted recession, it seems like many folks (myself certainly included!) fall back into patterns of complaining, especially without suggesting ideas for improvement or, better yet, being involved in fixing things. This brief article notes that complaining is costly both personally and to your company and gives some great practical advice on how to stop complaining yourself and how to refocus interactions more positively.
The inventor of the spanning tree protocol says that one of the negative side-effects of the rapid pace of technological change is that engineers make things too complex and no longer take the time to think about simple and elegant solutions to problems. She echoes Antoine de Saint-Exupéry's statement about good design: Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
This author says that perpetual bad attitudes by IT professionals is destroying our career prospects because our business customers are starting to lose confidence it IT's ability to support their needs and adapt to business change, such as commoditization of technology. Thus, the idea that jobs are being outsourced becomes a self-fulfilling prophecy.
Everyone needs a little inspiration from time to time. And sometimes you need to be reminded about why you choose a technology career to begin with. This site has brief statements from both famous and just ordinary folks like you and me about what sparked their interest in programming. You can even share your own one-sentence story.
As I get older, I'm starting to notice my memory failing more than I remember (ha ha!). Anyway, most people probably want to improve their memory regardless of their age. This article presents an interesting technique that involves visualizing the list of things to remember as chambers (rooms) in a palace (building).
The annual ComputerWorld salary survey is considered one of the most accurate and thorough. See how your salary compares with others, based on this survey of almost 5000 IT workers, which also shows decreasing job satisfaction.
As consumers gained more comfort with VOIP, SIP trunking revenues increased by 143% in 2010. The consumer market accounts for more than 2/3 of VOIP revenues.
GigaOM says that bandwidth hogs like Netflix on-demand video are the new motivation for telecom carriers to limit bandwidth.
Fitch Ratings estimates that only a small portion of subscribers, mostly in the middle-income category, are likely to abandon wired television/video services, such as cable TV, in favor of so-called over-the-top (OTT) services.
Do you enjoy the awesome Evernote PIM/note-taking utility, but wish that you could use it on operating systems other than Windows? Then Nevernote is just what you need. It's a Java-based, cross-platform clone of Evernote that runs on Linux (32- or 64-bit), Mac OS X, and Windows and is compatible with the Evernote notebook file format.
SnakeTail is tail-like utility for Windows that includes some great features such as regex searching and highlighting, support for Windows Event Log, drag-and-drop of files to be monitored, very low resource (RAM and CPU) usage, MDI for monitoring multiple files, directory monitoring where the latest log file is displayed, and much more.
CodeDesigner is an application architecture modeling tool that supports a wide variety of UML diagrams, including class diagrams, sequence diagrams, and more. It includes code generation tools for C, C++, and Python languages.
ConFavor is short for Context Menu Favorites. It adds up to 10 (unlimited in paid version) "favorite" folders to your context (right-click) menu in Windows to simply copying/moving files, quick access to these folders, and more. You can even add remote machines to your "favorites" and access the "favorites" list in Windows standard Open and Save dialog boxes.
While this interactive shell using C language was an April Fool's Day joke, a similar tool actually exists and may useful to C/C++ developers or those who are learning these languages. IGCC is essentially a REPL for the GCC compiler and allows the user to interactively enter and execute C/C++ programs. Requires GCC (of course!) and Python.
This simply, but unique utility adds some basic text editing functions to any text editor, including venerable Windows Notepad, or word processing application, such as Microsoft Word or OpenOffice Write. Some of the editing functions are removing blank lines, trimming leading or trailing spaces, sorting lines of text alphabetically or numerically, and changing text case. All features are accessed by a simply hotkey.
Even though I personally prefer dogs over cats, this comic makes a good point about agility. :)
Ever get the feeling that software development is sort of like a parallel universe? Perhaps these comparisons between famous Monty Python sketches and programming will help explain this.
One of the developers of the software for the Tron: Legacy special effects recounts the 6-month development process. This is some both interesting and amazing work. The developer even recorded his own use of Unix shell for the movie scenes.
These stunning photos (incredible just by themselves) take the concept of animated GIF to a whole new level. This one reminds of how the Mona Lisa's eyes follow you at every angle.
You might be tempted to think that this is really just some sort of silly April Fool's Day joke, but Commodore is shipping a powerful up-to-date PC in a retro C64 body, complete with the brown keyboard. Check out this review for more details. The starting price is $595, the same as for the original back in 1982.
I don't really play many computer games, but I do enjoy some of the retro classics of my childhood. Check out this HUGE Pac-Man game with many of the "levels" interconnected. Written in jQuery and HTML5.
This is an interesting and inspiring public installation art project, where people were encouraged to write what they wanted to accomplish before they died. The blackboard was erased each day and images captured over a number of weeks.
From one of my favorite off-beat web sites comes what has to be the most awesome case mod ever. This guy spent 18 days machining parts to build a computer case that is a precise replica of Wall-E.