September 2011 Newsletter
There is a great difference between worry and concern. A worried person sees a problem, and a concerned person solves a problem. –Harold Stephens
The truth only irritates those it enlightens, but does not convert. –Pasquier Quesnel
The most imaginative people are the most credulous, for them everything is possible. –Alexander Chase
I like bats much better than bureaucrats. I live in the Managerial Age, in a world of "Admin." The greatest evil is not now done in those sordid "dens of crime" that Dickens loved to paint. It is not done even in concentration camps and labour camps. In those we see its final result. But it is conceived and ordered (moved, seconded, carried, and minuted) in clean, carpeted, warmed, and well-lighted offices, by quiet men with white collars and cut fingernails and smooth-shaven cheeks who do not need to raise their voice. Hence, naturally enough, my symbol for Hell is something like the bureaucracy of a police state or the offices of a thoroughly nasty business concern. –C. S. Lewis
When words are scarce they are seldom spent in vain. –Shakespeare
Imperfect action is better than no action. –Giovanna Garcia
We say we waste time, but that is impossible. We waste ourselves. –Alice Bloch
Engaged employees understand that they don't just work for a company; they are the company. –Richard Kern
The shortest path to exceeding expectations doesn't generally pass through meeting expectations. –Ward Cunningham
Everyone who considers themselves a leader in business should read and understand Dr. Deming's work. This excellent overview of Deming's famous "14 Points for Management" shows how the principles are universal and can be applied to software development.
As with any knowledge domain, over time, some programming skills, such as assembly language programming or programming hardware directly, fall largely by the wayside. However, even as technology changes at such a quick pace, some skills can't be completely ignored.
In this comprehensive article, the author states that REST is not really service-oriented in the strict sense, but that it doesn't really matter, because REST has basically won the "war" over web services.
This recent essay by Marc Andreessen about how software (and algorithms) have fundamentally changed almost all aspects of life has sparked a good deal of controversy in a variety of circles. Read the original essay and some of the various responses.
This brief list summarizes quite a few of the common problems that you are likely to encounter in an agile implementation. The interesting aspect of this list is that it is from a proponent of the agile approach rather than a detractor.
The fathers of the Scrum methodology have released an update to their document that provides the basic concepts of the technique. This document is a great reference for anyone who practices Scrum. One of the more significant (or, at least, notable) changes is the preference for ordering of the backlog, instead of prioritization.
Like it or not, most organizations work in teams and you will be involved in "design by committee" at some point. Here are some great tips for how to stay on track in this situation and, especially, how to avoid over-engineering.
Use of mind mapping as a technique for exploring ideas has really taken off in the past couple of years. This academic paper discusses using the technique for eliciting and gathering user requirements for applications, including in the context of user stories and use cases.
IT is changing (just like the rest of the business). Our old ways of thinking about IT (centralized command and control, etc.) just don't work. Here are some realities that IT must face in order to be successful.
Bruce Eckel gives a nice perspective on how programming is like writing (or perhaps simply is writing) and how, just like writing, to improve, we must continually practice and read others' "writing" to learn the art and craft, as well as learning how to write better. He also notes the importance of clear communication when working with our stakeholders.
This author says that zero defects is a noble, but unrealistic goal in practical software development. He goes on to explain why you need to be wise about choosing which defects to fix in your applications.
You've probably heard that expertise in any domain takes 10000 hours of practice. Well, most of us don't have that much time to build our software testing skills. This article gives some good guidance on how to enhance your testing abilities.
Software testing can seem mysterious for those who don't have any background or experience with it. This list tries to debunk a few of the typical myths or misconceptions about testing.
Good testers have a particular mindset. Not one of wanting to destroy an application, but an inquisitive nature and one of always asking "What if…?" This excellent video teaches you how to think about testing to improve your skills.
Even with the constant sounding of the imminent death knell for software testing, this article shows some of the unique and new challenges that testing faces with the intersection of agile techniques, cloud computing, and mobile development.
REST web services are becoming the de facto standard for APIs for web-based applications. This tutorial shows you how to create a REST web service for your Java application using the popular Jersey toolkit JAX-RS reference implementation.
If I could only recommend a single book that every programmer should read, it would have to be The Pragmatic Programmer. This nice one-page reference summarizes the tips and checklists from the book. Print this out and hang it on your wall!
Certainly, to be a successful web developer, you don't have to know how browsers work to render your pages. However, to fully take advantage of the many nuances of the various popular browsers, it helps to understand just what they do under the covers. This excellent, comprehensive tutorial explains how the Gecko (Firefox) and Webkit (Safari and Chrome) rendering engines work, especially with respect to CSS3 and HTML5.
This fall (09/26/2011 – 12/16/2011) you can take the same Introduction to Artificial Intelligence class that students at Stanford do for free and entirely online. It is taught by Peter Norvig, research director at Google and robotics expert Sebastian Thrun, named one of Fast Company's most creative people.
This short presentation hammers home some of the key principles of agile development by matching them with some of the concepts for success in everyone's favorite game, Tetris.
Even if you don't need full-blown functional programming, this excellent tutorial shows you how the use of lambdas (a.k.a., closures or anonymous functions) in C# can help you with your regular development. The author builds an entire generic Tree class using TDD principles to demonstrate the concept.
Meetings seem to be a two-edged sword: both the necessary lifeblood of business and a drain on time and productivity. This article provides links to some great resources to make meetings shorter and more productive. One of the key takeaways from this article is that the meeting planner needs to clearly indicate the type of meeting: information exchange, design-making, etc.
"Open concept" office spaces are standard for agile teams. However, according to some new research, lack of private (or at least semi-private) work space results in up to 15% loss of productivity due to distraction and context switching.
On D-Day, General Patton sent this letter to his son, who was a cadet at West Point at the time. He gives some excellent advice for everyone, whether your battles are in a real war or just with your own procrastination.
What to sports teams and IT organizations have in common? This pundit says that IT can learn a lot from consistently high-performing sports coaches and teams about how to deliver excellence in an on-going manner to their business customers.
When interviewing for a new position, one of the most awkward parts of the discussion is when the interviewer asks if you have any questions. Here are some questions that both help you demonstrate your interest in the position and get some insight into what the job is all about.
Everyone knows that the Internet is the ultimate time sink at work, right? Well, according to some behavioral research, so-called cyberloafing actually has a more refreshing effect on workers than even such things as making personal phone calls or simply taking a rest break.
This series of articles (make sure you read them all!) presents some interesting insights into why "focus on your core competencies" has stratified the production and manufacturing of products in the global economy.
Recently, we featured an article called "Bored People Quit". So what can you do to recharge your mental batteries and get your brain back in shape? This article gives you some ideas for how to jumpstart your brain, including things like setting short-term goals (so maybe that daily scrum meeting isn't worthless after all?!).
A new survey of hiring managers by CareerBuilder indicates that about 1/3 are placing more emphasis on emotional intelligence (EI; think "soft skills") when considering candidates. Interestingly, for IT, just over 1/2 considered EI more important than IQ, compared to over 2/3 overall.
You probably don't think there are very many technologies from a quarter- or even a half-century ago that are still commonly used. So this list of 18 such technologies might surprise you. You'll probably especially be taken aback by how old some of the things that you think of as "new" are.
Just as we celebrate the 30th anniversary of the original IBM PC (and the 20th anniversary of Linux, and the 10th anniversary of Windows XP—how time flies!), IBM's CTO, Mark Dean, who was one of the 12 engineers who designed the original IBM PC, has declared that PC era is over due to the cloud.
If you are interested in learning (or getting a refresher on) common computer science algorithms, j-Algo is just the ticket. It displays step-by-step demonstrations of over a dozen algorithms, including Dijkstra's algorithm, heapsort, Knuth-Morris-Pratt algorithm, and others. It includes demonstrations in three modes: graphical (animated), formal, and descriptive.
CodeMatch calls itself a "search-based code repository". Basically, it's an online code repository (free registration required) that integrates with the context-sensitive coding functionality in Eclipse. You can save local (private) snippets and insert them into your code just as you would your own classes or references to JDK classes.
Timelines are an excellent visualization tool for presentations, but they aren't very easy to create. Office Timeline greatly simplifies the process of creating timelines in Powerpoint by providing step-by-step guidance. Created timelines even automatically "adapt" to your presentation layout and template.
PuTTY is the de facto standard for SSH on Windows, but one of its significant shortcomings is having multiple windows, one for each session. MTPuTTY puts multi-tabbed wrapper around PuTTY supporting all of the standard PuTTY functionality, plus some basic scripting support for automating session log on.
The world is shrinking, whether we think so or not. If you do any sort of web design or programming, sooner or later you'll need to work with Unicode. This well-designed site lists all of the Unicode character set. Just click on a character to get more information, including the HTML entity code.
You can use regular expressions to do find and replace in most of your development tools, so what not apply the same principle in Excel. This excellent add-on for Excel works just like the regular Find and Replace dialog, except that you use
Just click on the link and check out the first few results. Don't worry; it won't install a virus or destroy your machine.
Somebody at your office getting on your nerves, but you can't find a pithy put down? Let Intellisult help. Just put in your nemesis' name and get an intelligent insult. (Remember, that's it's really just for fun!)
This game is total geek fun. In this artillery game, you must create a mathematical function to knock out your opponents. But the trick is that you also must specify a function that avoids obstacles and your teammates.
Technology is an amazing thing. Fifty years ago (or maybe even less), something like this would have hardly been imaginable. Now, check out these 25 amazing pictures from around the globe from Google Earth and see if you can figure out where they are.