Staying Productive

I ran across an interesting article last month in the NY Times about people’s inability to multitask well, the impact of disruptions during the work day (such as email) and techniques for improving productivity. The beginning of the article addresses the fact that people aren’t very good multitaskers. This is old news to me because I learned about this a decade ago in psychology class. The article starts to get interesting by the third paragraph on the first page:

“In a recent study, a group of Microsoft workers took, on average, 15 minutes to return to serious mental tasks, like writing reports or computer code, after responding to incoming e-mail or instant messages.”

Over the past month I’ve been experimenting with keeping my email program closed and working at off hours and on weekends. I’ve found my productivity is higher when I keep my email closed and it’s higher still on weekends and evenings when there are no IMs or phone calls coming in either. Now when I’m trying to really kick out some software code, I keep my email program closed and check email only once an hour or so.

I’ve also found that, just as the article suggests, listening to music without lyrics helps boost productivity. The music helps keep me focused on my work and also shields me from minor distractions like beeping household appliances.

You Had Me at Softlinks

Last week Ubuntu 7.04 was released. I thought I’d contribute to the hype by talking about why I love Linux. Before I do though, I just want to say I am not a zealot. I believe in the right tool for the right job — and I’m even forgiving of not-quite-so-right-but-comfortable tool for the right job. I use Windows all the time, but when it comes to development, I prefer Linux hands down.

I’m relatively new to the party. A couple years ago I had been hired at a Linux-only development shop. Fortunately, even two years ago, it was relatively easy to transition from Windows to Linux. Which isn’t to say there isn’t much to learn — but even with a shallow knowledge of Linux it was easy for me to get around. Like many programmers though, I need more than shallow knowledge, and began delving into the OS’s nuances.

Its through this exploration that I began to appreciate Linux. These short, terse commands I entered at the command-line — these aren’t just tools, they are the collective wisdom of the ancients. My handy bash-scripting reference talks about the evolution of the “echo” command for two pages! Clearly, most of the basic concepts of Linux have been honed and polished for two decades, and truly I feel as if I’m standing on the shoulder of giants with each “sed” or “cat” invocation.

Granted, you don’t need to know how a car works to drive it, and Linux was the same for me. Indeed, I had been piping commands to each other for years before appreciating the holy trifecta of stdout, stdin, and stderr.

For those who want to get their feet wet, you can run Ubuntu entirely from CD. There are even instructions for running Ubuntu as a virtual machine using VMWare. But doing a full-on, dual-boot installation isn’t difficult (though disk partitioning is always harrowing for me), and I’d encourage anyone to give it a shot.

Here are some reasons, in no particular order, why I prefer to do development work on Linux:

  • Command-line Console. Slowly I’m becoming a command-line ninja, and find it much easier to navigate my filesystem, and perform other operations, by typing.
  • Warm fuzzies when using open source software.
  • Softlinks. Besides being a very handy way to organize my filesystem, it never fails to make me giggle when I compare it to window’s *.lnk (“Shortcut to…”) equivalent.
  • Appropriate Verbosity. Most unix commands (cp, mv, chmod) don’t provide any output upon completion. Type “man cp” though, and you have a couple pages of describing the simple command’s functionality.
  • Easy Package installation. How do I install MySQL? “sudo apt-get install mysql”
  • Multiple Desktops. One for my mail reader, one for log-viewing (via Chainsaw), and one for my IDE.

Undoubtedly there are dozens of other reasons, and I look forward to finding even more.

..in the problem-solving business.

Recently I learned that our development manager is having all of our developers read Repeat After Me: I Am Not In The Software Business. I hadn’t read that blog post so I went to it and read it.

Some days the sun shines even when it is raining. Reading that post made this such a day. When we started Spider Strategies, the four of us spent a long time writing our Mission and Vision. In particular, it was very important that we make ourselves different in one particular way:

“Our key distinguisher is, and will always be, our customers.

In today’s world of corporate performance management software, we see the customer left out of this equation all too often. The common formula seems to be simply codifying industry theory and delivering that template via outdated technology.”

Over the past four years, we haven’t changed either our Mission or our Vision. Nor, over the past four years, have we made it a particular point to stress them with our employees. Yet, today, I find that our development manager is passing on the spirit of our Mission and Vision through things like Repeat After Me: I Am Not In The Software Business.

When we say that “Our key distinguisher is, and will always be, our customers.”, we are saying to our employees exactly what Christopher Hawkins says to the software developer community:

“You are not an artiste.
You are not even in the software business.
You are in the problem-solving business.
More to the point, you are in the business-problem-solving business.
The technology problems you solve should always be in the context of solving a business problem.
If the solution to a particular business problem offers less benefit than the effort required to solve it, you should be working to solve a different problem.”

It may be a cloudy, dreary April day in Minnesota today, but for me the sun is shining.

Sneak Peek : Reporting

This is an exciting time for Spider Strategies, over the next few weeks we’ll be giving sneak peeks into new functionality we’re developing. In this feature we’ll take a brief look at reporting, what it currently is, and how we’re going to improve it.

One of the reasons why all software is built is because there exists a need to have a problem solved that is either too time consuming or complex to have people solve them manually. However, building software to run these long and complex processes are only half of what makes an application useful, the other half is reporting the data to users in a format they can understand and find useful. Our Corporate Management Suite application has always excelled in its ability to solve the problem of grading and tracking performance, however its reporting capabilities has needed some improvement in order to make it easier for users to get the information they need from the application.

One of the key enhancements we’re implementing for reporting is the ability for users to generate customized reports. The biggest benefit of this enhancement lies in the flexibility users will have in defining these reports. Previous reporting capabilities forced users to defined search terms against a limited set of filters and also limited what type of data should be shown in the results of the report.

This screenshot above shows one of the reports currently available in CMS. It is an owner/updater report, and it highlights the rigidness of our current reporting capabilities. The user is restricted in what they can search for as well as in specifying what should be contained in the results. While this created some specific reports that were useful, it was too limited to provide all the type of reports that we saw organizations both needed and wanted. Our new custom reporting aims to solve this inflexibility by allowing user to add any number of filters as they see fit. It also allows them to choose what part of the data they would like to see returned in the report. The screenshot below shows off some of our new custom reporting interface, note the ability to add filters and choose what should be shown in the results

In addition to generating these reports, users will have to ability to bookmark their report to their dashboard for convenience, as well as print and export their results to Microsoft Word and Excel documents. As a side benefit to the implementation of our new custom reports, we’ll be also including many more pre-define standard reports that users can choose from. We hope by being able to offer users the power and flexibility to define their own reports they will find it much easier to find the data they are looking for.