November 2011 Newsletter
Any idiot can face a crisis—it's day to day living that wears you out. –Anton Chekhov
A good engineer thinks in reverse and asks himself about the stylistic consequences of the components and systems he proposes. –Helmut Jahn
Errors using inadequate data are much less than those using no data at all. –Charles Babbage
Only drug dealers and software companies call their customers ‘users’. –Edward Tufte
Inside my empty bottle I was constructing a lighthouse while all the others were making ships. –Charles Simic
If you do not hope, you will not find what is beyond your hopes. –Clement of Alexandria
The year 2000 was essentially the point at which it became cheaper to collect information than to understand it. –Freeman Dyson
How we think shows through in how we act. Attitudes are mirrors of the mind. They reflect thinking. –David Joseph Schwartz
Most people recognize that any software methodology is only as good as the people involved in implementing it and executing on a day-to-day basis. This article looks at some of the traps we can get lulled into with Scrum.
A programmer looks at what causes developers to rush and, accordingly, write bloated, sloppy code. And, of course, he offers some suggestions for combating this problem, too. And, interestingly, I think that rushing is often a cause of getting stuck.
This pundit, whose prognostications seem to be in line with others', such as Gartner and Forrester Research, predict that in just 3 short years, the IT organization will have fewer employees and more consultants and the focus will be on software, mobility, and cloud/SAAS.
Everyone knows that estimation is fraught with peril. In this overview article, some agile pundits discuss whether or not user story estimation is worthwhile. To some degree, I wonder if this is a subtle admission that we simply don't know how to do estimation.
This author suggests that internal conflict within IT about whether to use agile methodologies versus traditional methodologies isn't useful, because it ignores the needs of the business. He suggests the popular concept of a hybrid solution and emphasizes that IT needs to focus on versatility instead of particular methodologies.
This author suggests that the demand by business customers for mobile applications will be a key driver behind adoption of agile development methodologies. In particular, he notes that cafeteria-style selection of particular techniques by teams will be important.
This article presents an interesting look at the application of Goldratt's Theory of Constraints to programming. The discussion focuses on how to identify and remove bottlenecks in the development process.
While the title of this article was likely to be intentionally incendiary (and it met its mark!), the author makes some valid points about adjusting our processes to better fit the processes and "customs" of the business. Others have weighed in on their suggestions for fixing the development process, as well.
This article provides a good discussion on the fact that successful testing involves a combination of both automated and manual testing. Likewise, it emphasizes that even with automation, the cognitive abilities of people are still the key aspect of developing a good testing approach.
In this article, the author talks about how she developed (and maintains!) a passion for testing and how that helps her work collaboratively with developers and other team members. It's a great story about how to love your job.
While this article is targeted mainly toward developer testing, it really gives a good overview of the importance of a layered approach to testing. Likewise, it provides a very usable framework for structuring your tests.
This article presents an approachable and straightforward explanation about how code reviews (I know… Everyone hates them!) are better at finding defects than testing. The author emphasizes that from a practical standpoint you have to balance cost with effectiveness of bug detection and removal.
It seems obvious that tests are only as good as the test cases and scenarios. But have you ever thought about the definition of a good test case? This article provides some ideas for what you should include.
Everyone wants to improve their skills and our current economic environment makes lifelong learning imperative. Here are some great tips on how to advance and hone your programming skills.
Structure and Interpretation of Computer Programs (SICP) is a well-known book on introductory computer science using the LISP dialect known as Scheme. This version is modified to use Clojure, a JVM language that is closely akin to LISP, which allows you to right programs in functional style, but run them anywhere that Java can run.
This brief video tutorial, with a comprehensive set of accompanying slides, provides an excellent explanation of some of the key elements of creating/implementing a REST API for your application or product. And don't forget to pay attention to the service end points!
While the HTML5 standard hasn't been approved yet, it's already widely used. This brief (85 pages) online book gives a good overview of the changes and includes chapters on the new rich media support and on updates to forms support.
In my opinion, Internet search has done more for improving software development than almost anything else. You can almost always find an answer to even the most esoteric questions, if you look hard enough. This site allows you to search online programming language documentation from many sources and it neatly organizes the results. Typically, the results include the full text of the documentation, so you don't even have to click over to another site. And another nice feature is the home page includes random little tips, so you're bound to learn something on every visit.
Like me, this person tried electronic means of managing tasks and to-do lists and wound up going back to plain on old paper and pen/pencil. He offers some good practical tips for using them in an unobtrusive way.
As a loquacious person, this article really resonated with me. The author makes a strong point that sometimes, as technologists, our effort to explain things precisely and in much detail is exactly what causes us to miss getting the message to our counterparts in the business.
This article really struck a chord with me and I think it will with many knowledge workers. This technology manager gets straight to the point about how to ensure your employees don't get boredom burn out. Interestingly, he notes that top performers are more likely to quit over boredom. And, certainly, they are likely to have more opportunities which further increases this risk.
According to a new poll, workplace incivility is on the rise and it destroys trust. Trust and accountability are linchpins of agile development. Here are some reasons that your colleagues may not trust you as much as you think. Maybe we all need a "civility makeover" to some degree?
According to a new report, even though the technology sector continued to shed jobs in 2010, the rate was half that of 2009, with a net decline of 115200 jobs or about 2%. Communications sector led the way in job loss with 72100 jobs and only software sector gained a modest 22800. Colorado ranks third in the portion of technology workers.
My personal experience is that technology workers have a tendency toward perfectionism. This article, based on the content of The Perfectionist's Handbook, shows how perfectionism can actually be detrimental to your career.
Gartner predicts that spending next year will grow 3.9% from 2011. This is down from their expected growth rate of 6.9% in 2011. While $74 billion was spent on public cloud services in 2010 (3% of IT spending), they expect growth in this area to be 5 times that overall growth.
Most readers of this newsletter probably consider themselves above average intelligence. In this article, Jonah Lehrer discusses the work of Nobel laureate Daniel Kahneman on how easily we fool ourselves by following intuition. Maybe this is why it's so easy to just "Google it".
Recently, a web site called Spent, which challenges you to see if you can live on $9 per day, which is what many folks in poverty must do every day, has been making the rounds. And doubtless you've heard about this little Occupy Wall Street thing. This guy takes a practical approach to living frugally and shows how to do it. Who knows? Even as a programmer, maybe you can retire in 10 years!
Malcolm Gladwell provides some insight into how technological superiority can often be overshadowed by aesthetic design and marketing and that technology is not the overall objective. But he goes well below the surface of the legendary story to show how Apple fundamentally extended the concepts that it learned from Xerox PARC to really create something new.
New research based on 2010 US Census data shows that even prior to the recent recession, new businesses have started up with fewer employees and stayed smaller. Overall, the data show that new companies started in 2009 will add one million fewer jobs over the next decade than historical averages. (See also Steve Denning's blog for more about this shift.)
While the presentation is a bit rambling and somewhat tentative, the presenter makes a very good case for why we as technology workers must stop trolling and anonymously bashing others online and instead engage in productive, one-on-one dialog about our differences.
FCC chairman Julius Genakowski has outlined a proposal to revamp the USF/ICC programs which is intended to extend availability of mobile broadband to currently underserved regions of US, especially rural areas.
If you use Eclipse for development, you probably know how frustrating it can be to simply adjust the font size in the editor windows. This Eclipse plug-in adds a couple of toolbar buttons with associated keyboard shortcuts for increasing and decreasing the font size.
Have you ever wanted to save a map from Google Maps or Microsoft Virtual Earth (a.k.a., Bing Maps), but couldn't figure out how to do it? Map Puzzle comes to the rescue. Just specify the map coordinates (latitude/longitude), zoom level (scale), and map size and it will save your map. You can choose the type of map (satellite view, map, hybrid, etc.) and save the map in BMP, JPG, or PNG format. It even supports selection of map size based on paper size.
LucidChart is a free online diagramming tool, similar to Visio. It allows collaborative editing of diagrams, such as, flowcharts, network diagrams, mind maps, organizational charts, and even web site or application screen mockups.
One of the more frustrating changes made to Windows over the past few years was the removal of the advanced file search capabilities. If you are looking for a replacement that doesn't require creation of large indexes, check out Dyngrep. Some of the unique features are ability to search for text strings or regular expressions, preview of search results showing the found items in context, and searching in Microsoft Office documents and PDF files. You can even create your own "formatters" to "teach" Dyngrep to ignore headers or other content in particular file types.
Despite the name, this tool isn't for assembly language. Instead, it's similar to Dependency Walker, but for .NET assemblies. It will show you a tree view of all .NET libraries that a given assembly depends on. And it flags missing dependent files or ones that aren't the proper version. Great for troubleshooting why your .NET application won't run on some machines.
In the spirit of World's Biggest Pac-Man, we give you Infinite Mario Brothers. And don't blame me, if you don't get any work done the rest of the day.
Who would have thought that a comic strip about living with a database nerd could be funny? In this one, the author even provides some nice commentary about the motivation for each strip.
This summer, NPR asked readers to suggest the top sci-fi and fantasy books of all times. So how do you decide which one to read first (or next)? This flowchart is just the ticket!
If you and your kids haven't carved your Halloween pumpkin yet, you might want to check out these step-by-step instructions for turning that gourd into the Death Star.
If you're working on implementing your own new programming language (they seem to be proliferating like rabbits lately—hey, maybe I'll create the Rabbit programming language—or a new real language!), you'll want to make sure you work through this tongue-in-cheek list first. (New! Automated version here!)