• Post Calendar

    January 2012
    S M T W T F S
    « Dec    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  

Software Architecture–Do One Thing Very Well

As I look at nature, I’m struck by the idea that for truly reusable software you must architect it following the principle that it must do one thing and only one thing very well.

Think about it for a moment… We are all made up of atoms. Individual units that generally stand the test of time. Sure, composite structures come and go, are born and die. But the little atoms keep on going. They are reusable. Wow… Now I have a new, probably unattainable, goal for my software!

Strategic Productivity–Ask the right question

Headline: Balance is required to chose the right approach when developing. If you only ask the question, “What is the fastest way for me to get this done?” your skills will become dull very quickly.

What’s the Right Question?

When someone is asked to produce some functionality there is a lot of inertia. Inertia from your current skill set. Perhaps inertia from an existing code base if your new functionality is to coexist with the older code. Thus, if you just ask the question, “What is the fastest way for me to get this done?” you’ll almost always pick what you know today rather than learn something new.

But doing it some new way isn’t always the right answer either.

So what is the right question? The closest I have been able to come is, “If I was equally proficient in the two, which one would I pick?” That at least removes the bias of being stuck only with what I know.

“If I was equally proficient in the two choices, which one would I pick?”

Now to answer that question you probably ask yourself many questions such as:

  • Which one is better? (by some measure)
  • Which one has the brighter future?
  • Which one will serve me better 2 years from now?

I’m sure there are many more.

Now this might actually be a hard question to answer. In part because you may not know enough about the two technologies. You may know one very well and know all its good points, but not the other. In that case, look for guidance from people that are proficient in both technologies. There’s usually someone out on the internet that is. Harvest their knowledge to make your choice.

Live Gallery Gone Without a Replacement

Today I went to look for an improved Weather Gadget for my desktop… The one that ships with Windows was showing the outside temperature at 19 degrees when in fact it was actually 52 degrees. That doesn’t help me much, so I went to look for a better Gadget. I right clicked on the Desktop in Windows 7 and selected Gadgets, and then selected Get more gadgets online… When I got there, rather than searching through hundreds or thousands of gadgets, there were only 31. After much searching I found this post on Microsoft Gadgets Gallery Goes Gone by Richard Hay.

At the beginning of October it seems Microsoft retired Windows Live Gallery. I get that they don’t want developers to develop them, but Windows 8 isn’t even out! Shouldn’t you wait until the replacement has been released to the public at least?!?

I would have even expected Microsoft to keep the gadgets people put energy into for perhaps a year after the release of Windows 8, but not substantially before its release.

I think they should shut down the development of new Gadgets, but let Windows 7 and Vista users at least have access to the many nice gadgets developed over the past few years.

My Dell U3011 Monitor Won’t Display 2560×1600

HEADLINE: Try using the DisplayPort cable that shipped with it.

I got the new Dell U3011 Monitor today – 30” monitor capable of up to 2560×1600 resolution. It ships with three cables – DVI (Dual Link), VGA, and DisplayPort. The DVI is attached and all the instructions show that you can use the 2560×1600 resolution with the DVI… but I couldn’t get it to work.

After about an hour talking to Lance at Dell he suggested trying the DisplayPort cable and viola – I now get 2560×1600!

I use a 55” monitor with 1920×1080 resolution at work. With that I can see 38 lines of code in Visual Studio. Here I can see 62 lines of code! That’s actually going to make my 55” monitor look small now.

image

I hope this helps other that might be having problems. I saw lots of posts, but no solutions. It seems that for some reason the feedback loop from the monitor to the computer isn’t working with the dual link DVI cables so it doesn’t think the resolution can be higher, but DisplayPort works fine.

Unit Testing Your JavaScript

This falls into the category of something I want to remember… so I’m putting it here… Unit Test 101: Are You Testing Your JavaScript?

As Microsoft seems to have been blocked on their XAML everywhere strategy as a cross-platform strategy they seem to be looking now to HTML5 and JavaScript. I was enthusiastic about the use of Silverlight and Windows Presentation Foundation (WPF) as two presentation tiers that could relatively easily share a common logic/data tier. But when Apple banned both Flash and Silverlight from the devices that created some issues. I was hoping that consumers would complain loudly about not having it and that Apple would listen to their customers. Not the case.

So now what… I see continued references to HTML5 and JavaScript as the way to achieve the cross-platform support. But I’ve grown very accustomed to high quality software made possible by a strong unit testing strategy (ideally test driven development or TDD). So this post is a pointer to an excellent article that is at least a start for doing that in a JavaScript world.

I hope Microsoft really pushes the envelope on their testability of JavaScript in their next release of Visual Studio.

Thanks Christian Johansen!

Changing the Patch on My Uniform

I’ve decided to pursue my passion for developing great software (for the oil and gas industry) at a new company.

The Military Perspective

When I was in the U.S. Army Reserves for 10 years I had occasion to change units – or companies – several times. For example, when I moved from Denver to Houston I switched from Headquarters Company in the 244th Engineer Battalion to D Company with the 871st Engineer Battalion. I really enjoyed working with individuals in the 244th and ran into someone from my old unit in the Denver airport several years ago. There is a true sense of camaraderie. We all worked toward the common goal to “defend the Constitution against all enemies, foreign and domestic”.

People Matter

I learned years ago that what really matters are people. Treat people with respect and look out for their best interest as you would your own child or someone else you love and all will work out well. I have a passion for excellence (hence one of my site’s name “JoyOfExcellence.com”). Along the way I’ve discovered that making my passion for excellence known attracts others with a similar passion. I know I’ve learned much from some talented individuals and I hope that some have learned from me as well. The challenge, learning, and smiling customers is what make software development a “pursuit of happiness” – take those away and it’s drudgery.

My Previous Company

I’ve really enjoyed work at SMT (Seismic Micro-Technology). As a matter of fact, to this day there is not an environment I’ve enjoyed more! I enjoy the loyal customers, my fellow developers and other colleagues, and the product (for the most part). There are most definitely colleagues I’ve worked with that I would greatly enjoy working with again. They share my passion for excellence.  I felt there was an exciting environment there and I’d like to think I had at least some contribution to that.

My Next Company

I fully expect to enjoy the time with my new company, LMKR. Their development presence is global and I’ll be operating out of the Denver office.

Through the years I have discovered that I have a true passion for commercial software development. But I was trained as a geophysicist. While the passion for commercial software development exists, my understanding of the oil & gas industry means that my greatest contribution is commercial software development in the oil & gas industry.

Of course my post on Parable of Two Villages paints my view.

Where Do I Want To Go?

If you follow my blog you’ll understand what I believe to be the “relatively” new way to develop software (at least in our industry).  It starts with unit testing and continues with agile development practices (for which I believe unit testing is a prerequisite… see previous posts for more detail). I believe that on occasion you can achieve a level above and beyond agile development – Super-sonic Software Development. There is a right time and place for each practice with Agile being the more prevalent.

I hope that I can work with both new and familiar faces to greatly enhance software to help find oil and gas.

Summary

So now I am changing companies – from SMT (Seismic Micro-Technology), to IHS, then to LMKR. I’m merely changing the patch on my uniform. I remain dedicated to great commercial software for the oil and gas industry. I hope the sense of camaraderie I’ve experience in both the military and the oil & gas software industry will continue.

Parable of Two Villages

I can’t seem to find the version I remember my wife reading me sometime back, so I’m going to work from memory on this one… Here is a link to a slightly different version.

A couple was travelling from one village to the next when they came upon a farmer working in his field. They stopped to ask him what the people in the next village were like. The farmer asked, “What were the people like in the last village?” The couple replied, “They were rude, unfriendly, dishonest people.” “You’ll find the people in the next village are the same.” said the farmer.

A second couple was also travelling between the same two villages and came upon the farmer. They too stopped to ask what people in the next village would be like. Again the farmer asked, “What were the people like in the last village?” The second couple replied, “They were kind, friendly, generous, great people!” “You’ll find the people in the next village are the same.” said the farmer.

My wife only travels to the villages the second couple visited. I like having her as a travel companion! I hope I visit those too.

Drive

A friend recently recommended a book to me called “Drive: The Surprising Truth About What Motivates Us” by Daniel Pink. I’m glad I read it. There was much about the book that resonated with me. While I believe that Maslow’s Hierarchy of Needs explains the underlying principles for much of what is presented in the book it was eye-opening to read how much science goes behind the notions of focusing on higher planes. Now that many of us seldom worry about where our next meal will come from we can move to new levels.

I’d noted from many other readings that society tends to focus on the higher levels when there are forms of slavery – take the Romans or the Greeks as early examples. Slavery was a means of taking mundane tasks and having others perform them. Today we have computerization. This is an apparently “humane” form of slavery… I say “apparently” since much of the computerization replaces work that humans might otherwise perform.

The key message that I took away as someone that leads software development teams is that motivating individuals is not the problem. Finding ways to NOT de-motivate them is the real challenge. For better or worse, many individuals have an impact on the motivation of software developers that I work with. A lack of understanding of the principles in this book make it all too easy to demotivate high performers.

motivating individuals is not the problem. Finding ways to NOT de-motivate them is the real challenge.

I hope that my Drive for excellence will motivate others around me. I hope that people that work with me will say, “I’m better for working with him than I was before.”

Summary

If you are intrinsically motivated I highly recommend that you read Drive. I found it uplifting and a read that reinforces my beliefs. If you are extrinsically motivated you should probably still read the book so you know how to motivate and “leverage” intrinsically motivated people. Or at least figure out how to not demotivate them. However, I’ve found that extrinsically motivated people don’t understand the information and thus to not take to heart the actions that demotivate (and probably didn’t make it this far in my post anyway.)

I hope you enjoy reading Drive.

Super-sonic Software Development

What happens when you can develop software faster than you can describe what you want it to do? I think the best analogy is a sonic boom or moving faster than the speed of sound.

Agile Development Practices

I’m a big believer in agile software development practices. For that matter, not restricted to software… agile practices in general where you have tight feedback loops. However, I’ve observed some circumstances where even agile practices seemed overkill and to slow things down. Don’t get me wrong, this is an anomaly, but it was more than a one time occurrence.

Beyond Agile

imageI was talking with a colleague the other day about agile software development practices. However, we’d recently had experiences with projects that were small to medium sized but that seemed somewhat frustrating when using Agile practices.

We started to describe some of the characteristics of these projects…

  • The model was quite clear or simple
  • Unit tests were easy to write
  • We could code and deliver results almost as fast as we could write down the stories
  • Coding patterns such as Model-View-ViewModel were well established
  • The team had access to all the right people when they needed them
  • Focus
  • And most importantly, the people on the project were very sharp

The user stories were still valuable… but they were quite short and well formed – particularly the “so that” piece in the “As a [role] I want [feature] so that [outcome].”

Using Team Foundation Server (TFS) made putting the stories there useful from a traceability perspective. And this is not some sort of “free-for-all”. It’s clarity of vision. It’s very high code coverage. It’s tight and easy to understand code.

The Analogy – “Faster than the Speed of Stories”

As we continued to talk we described writing software as fast as we could talk about it. So rather than the “speed of sound”, we have the “speed of stories” – the speed at which a product owner can write and rank the stories and the team can read, discuss, develop acceptance criteria, story point, then place into an iteration. That’s actually pretty fast compared to traditional waterfall documentation cycles. Then when development occurs at a speed that is faster than the “speed of stories” we have Super-sonic Software Development (SSD).

This was a very exhilarating! But how could we sustain it?

That does pose a challenge. I think one trick is to develop software with consistent patterns and leverage the code reuse that’s been promised for so many decades. Another trick is to keep projects small. The unit tests let you refactor so that you can achieve the reuse.

Just as with super-sonic air travel, the conditions must be right – the right equipment and tools, the right people, and the right environment. It is not always possible. But what if we could increase the times that occurs? And somehow develop a process that would support and not hinder it?

I’ll Try to Nurture SSD…

This is a pattern that I’ve only recently started to see clearly, and while it will be a challenge I will do what I can to provide an environment that fosters such “Super-sonic Software Development”.

Configuring SMTP Mail for WordPress

Headline: I put in all the e-mail information for my WordPress site, but I’m not getting the notifications for new users or comments. You need to configure the SMTP and the best way is to install a plugin to do that. I chose Configure SMTP.

Sometime back I moved my blog and recently I see that I’ve ignored quite a few people – real people, not just the usual spam. So I started to investigate why I was not getting the notifications I expected with the help of someone at my site provider.

It turns out that out of the box WordPress does not support SMTP mail by default. This is a great response on the WordPress Forums that pointed me in the right direction: http://wordpress.org/support/topic/where-to-setup-email-system 

I chose Configure SMTP because 1) it seemed to have a long history (track record), 2) it was still up to date with the latest WordPress (maintained), and 3) it had a lot of stars. There are others out there, but I didn’t spend too much time. I’m quite pleased with my choice.