Building Out Distributed Apps (Big Data)

Yesterday, I attended a webinar by O’Reilly on how to reduce the pain of building out distributed applications. The focus was on scalability, which makes sense, since this is why you would want to distribute your applications.

Apart from the host’s unfortunate resemblance to Little Lord Fauntleroy, there was some interesting observations to be made. To wit:

Engineers versus Ops

When there’s an issue affecting your customer in large systems, it is most likely an engineering issue, especially in emerging products. You need to staff up on Engineering talent for your projects at a much greater rate than Ops.

Data is not always relational

Data these days is more than OLAP stuff. Things being captured and crunched include data graphs, key-value pairs, etc. So, something non-SQL based might be called for as a datastore. Only a handful of SQL features are used in most large data projects. As the data sets get larger, SQL gets less useful.

Real-time versus Batch Processing

Something to consider. How is your data being created, in one-sy/two-sy fashion online, or in large grabs of data. This will affect your basic understructure.

Cost of Research

It is very easy to under-estimate the cost of research when moving into a new area. Executive management wants hard numbers to be able to plan and manage costs, but anybody who’s developed new systems knows that costs tend to be unpredictable because you just don’t know what you don’t know yet.

What is your experience involving Big Data and Distributed Applications?

How to Report Bugs

Most programmers I’ve worked with are delighted to fix bugs in their code. Yes, really. It’s the social interaction which goes with it which is often the root of the problem. This is always a tricky subject because by definition something isn’t working right when you have to report a bug; you, the user, are frustrated because the software is not working as you expected and you might have very little control over getting the issue resolved.

I came across an old web page this week on how to report bugs. This is written from the programmer’s point of view, and I can say that it’s pretty close. In discussing it internally at my company around the “virtual water cooler,” I was reminded of the occasional travails experienced by our own Tech Support group in supporting our customers and getting us developers the info we need to fix those bugs.

The previously mentioned article talks about how to provide information to the developer to enable them to fully understand (and recreate) the issue. Recreating the issue is paramount so that once it goes away, we know we actually fixed the problem.

My own version of the summary from the article is this:

  • The first aim of a bug report is to let the programmer see the failure with their own eyes. If you can’t be with them to make it fail in front of them, give them detailed step-by-step instructions so that they can make it fail for themselves. After writing down these instructions, go through them yourself to see if they actually produce the results you are describing. At last 50% of the time, the first set of step-by-step instructions are missing something.
  • Don’t make assumptions, be crystal clear in your instructions, if a dialog needs to be dismissed, then note that; if you open something via a menu versus a shortcut key, mention that.
  • Describe everything in detail. State what you saw, and also state what you expected to see.
  • Write down any error messages *exactly* as they appear, spacing and capitalization and all. Hunting down an error message in the code is so much easier when you are looking for the correct string.
  • When your computer does something unexpected, stop. If you start trying to fix the situation, write down each and every thing you do. Many issues are made harder to resolve because someone modified a setting and forgot to mention it.
  • It’s okay to try to diagnose the problem, but in reporting what you think the error is (I think the catalog file is uninitialized when switching contexts), report *why* you think that, providing all the supporting evidence (pro and con) for your conclusion. You may be right, or you may be simply adding confusing information.
  • Be ready to provide extra information if the programmer needs it. If they didn’t need it, they wouldn’t be asking for it. They aren’t being deliberately awkward. Have version numbers at your fingertips, because they will probably be needed.
  • Be proud. You are engaged in a process to improve the world, or at least the small corner in which you live, or making your software work a little bit better.

It seems to be that there are some basic categories of bugs:

  • Coding error in the software, an actual bug (2 + 2 comes up as 5 on your calculator)
  • User error (I closed without saving, where’s my work?)
  • Interaction with other software (this new Windows patch broke my website)
  • Misuse of the product (I want to use a spreadsheet program as a word processor)

What else?

(The original article can be found here)

Martin O. Waldron
Program Manager, SW Development
ImageSource, Inc.

Share on LinkedIn   Share on Twitter

New Folks Moving to Town all the Time, Chief

A while back, I was reading a web page about how to report bugs in a useful manner and I was thinking, this is a good post, but I already know this. I realize that after 20 years in the software business, I am still eager to learn new things. That’s the gift and the curse of a career in software development, there’s always something new and spiffy to learn, but you have to keep at it or get swept downstream.

Continual improvement is a key to success. As I told my kids when they were younger (they’re old and wise teenagers now), even Tiger Woods has a swing coach.

My parents met while working as reporters for the Atlanta Constitution newspaper after WWII. They were sometimes sent to cover a human interest type story which was not what you would call “breaking news.”  The subject would sometime observe, “You all put a story in the paper a few years ago about this.” My mom said she would invariably reply “New folks moving to town all the time, chief.”

This brings me to my second point: passing on good information. If I know something well, and can recognize the good information when I see it, then good for me. Framing it for others to be able to make use of that hardwon wisdom is a whole different thing.

I’m starting a new category on this blog to highlight, reiterate, or refine information which may be out there, but could stand a burnishing or a revisit. After all, new folks are joining the software industry all the time…

Martin O. Waldron
Program Manager, SW Development
ImageSource, Inc.

Share on LinkedIn   Share on Twitter

Follow

Get every new post delivered to your Inbox.