Search
 
Minimize
 Old Town IT Blog
Author: Don Worthley Created: 9/12/2007 3:12 PM
Business, Technology and everything in between.

As I mentioned in my previous post, I've been studying design patterns lately.  I've also had the opportunity to work with the Telerik suite of controls over the past year and half and was so impressed that I volunteered to do a demo at our local .NET users group on the capabilities of their controls.

I recorded both presentations and they are available on our local .NET UG website (http://www.sgfdotnet.org)

MVP (Model View Presenter) Video

Telerik Video

screenshot

I'm interested to hear your feedback as these are my first screencasts!

A student asked me about design patterns in class about 6 years ago, and, although I knew the term from engineering, I wasn't familiar with any of the design patterns documented in the GoF text.  How I wish I would have taken this guy up on his invite to meet for lunch after class! 

The problem for me was my schedule.  I was so busy working on so many things that I didn't have time to keep up with changes in my industry.  Yes, I tried to read as much as possible from trade journals, but even this time was choked out by an ever increasing sense of urgency to meet deadlines and get software completed.  What I needed was a design pattern for staying up-to-date in my field.

So what is the design pattern for staying afloat?  I'm sure it's different for everyone, but for me it's recognizing the need to schedule time for professional maintenance. 

Up until just a few months ago, I found myself working long hours with a partner trying hard to establish a reputation for getting projects done right and on time.  You may be different, but what I've found is that software engineering is very different from other forms of engineering in that the level of unanticipated decision variables (unk-unks or unknown unknowns as Donald Rumsfeld likes to call them) is much higher than in other industries.   This means that it's pretty risky to say that x can be completed in y weeks.  On every project, we run into these unknown unknowns and yet we are still able to make almost every one of our deadlines?  How?  By working day and night for days on end and ignoring anything not related to the achievement of the goal. 

I've learned to accept the fact that in most cases customers don't understand why you can't provide an exact estimate for a specific set of features.  And while I may try hard to properly set customers expectations, I also believe in a fixed ship date mind set for software development.  It's the best way to actually get things done.  All this to say that while I'm working on a project, I've come to accept the fact that I won't have a lot of free time to read up on the latest developments in my industry.

But, what I do have control over as a consultant and what I would encourage many of you who manage a development staff to consider is the amount of time that is allocated between projects (or even during projects if that's feasible for the personalities of your developers) for continuing education in their field. 

What am I talking about?  Well, here's a short list of resources that I would recommend making available to your developers for self-paced study and research; and I would encourage you to plan for between 15 and 20% of your developer's time to be dedicated to using resources such as the following for professional development:

I've heard that Google allows their developers to dedicate 1 day a week to professional development.  I think this would work great for some developers; but, for others, it would be best to plan for time between projects to allow for more extended and in-depth research.  I've dedicated the last 3 1/2 months to research and I feel like I could spend another 3 1/2 months if it weren't for the fact that I need to make some progress on projects that are of significant interest to me. 

I'm interested to hear back from you regarding how you or your development staff are managing to stay afloat.

While it's true that the main reason I moved from the Washington, D.C. area to Southwest Missouri was to be closer to family, a close second was this growing desire to settle into a small community where the pace of life doesn't leave you completely exhausted at the end of a work day.  I have this vision in my mind of a the perfect community, a planned, green community that is almost entirely self sufficient in terms of energy resources.  The community would be designed with wireless access available anywhere within the city limits and schools, grocery stores and shopping centers would be within walking distance for everyone. 

I'm not really an environmentalist, at least not in the tree-hugging, sandal-wearing sense of the word, but I'm all about minimizing our footprint while enjoying nature to it's fullest.

Anyway, having just come in for a ride with a friend this morning on some local motorcross/ATV trails, I was filled with a renewed appreciation for the wonder and beauty of God's creation and I saw a story on CNN (I used to have a link, but the story's gone now) about a planned community in Sky, Florida very much like the dream community I've envisioned. 

I believe that this is the beginning  of a new trend that will increase in popularity as the technology to work remotely becomes more readily available.  Clearly, there are professions that don't support working remotely, but there is a sizable and growing  percentage of information workers who would find that working remotely, at least part of the week, would actually boost their productivity.

When living in Virginia, my commute to D.C. was an hour and a half one way.  So, three hours of every work day were spent in a car or on a train.  Now, I like to drive, so the first 30 to 45 minutes of that commute in the evening provided a good buffer between my day at work and my life at home; but the last half of the commute was like leaving the lights of your car on without the engine running.  By the time I made it home, I was completely drained.  There are entire years of my life from the D.C. era that I simply do not remember.  

I understand that a presence in the office is still important for many workers, but I'll never forget how much more productive I was for my last employer when they finally gave me the go ahead to work from home part-time.  I probably gained an extra 2 hours a day in time not spent trying to filter out other people's conversations from across the office.

Given the right tools and the right software, the staff of your organization should find working remotely to be both more rewarding and more efficient. 

So, what kind of tools could be employed to help keep remote employees working effectively and staying connected?  Here are some that I have either used personally or have seen demonstrated and about which I have heard great things:

  • SharePoint Server 2007 - This product has come an amazing distance over the past 6 years.
  • Groove 2007 - Recently acquired by Microsoft, this collaboration tool makes it extremely easy for members of a team to work remotely.  Based around the concept of a workspace which is shared by team members, its like a peer-to-peer version of Lotus Notes.
  • Basecamp - Keep your eyes on the products from 37 Signals, the creators of the popular Ruby on Rails framework for rapidly developing web based applications.  BaseCamp is a great product for small teams or departments within a larger organization.  It's also inexpensive.
  • Remote Desktop - If security is a concern, there are wonderful VPN solutions that help to ensure the safety of remote access.
  • GoToMeeting - I don't know what I would do without this tool.  the best part is that it's wonderfully affordable.  I've found that WebEx and Live Meeting are overkill for most of the meetings I have with clients. 
  • Wikis - The concept of a wiki is simple.  It's a website where members can edit the content. But this simple idea has come to be an extremely powerful tool for teams working remotely.   Wikis are increasing in their use within the enterprise and if you haven't used this kind of tool before, check out this definition.

I'm interested to know what your experience has been with working remotely?  Has this worked well within your organization?  If so, what tools do you use?  Anyone interested in starting a planned community in rural Missouri?

Is it me, or does everything run slower these days?

Most recently, I've struggled like so many others with the speed of Outlook 2007. My assumption is that as a product progresses, it's performance will actually improve; either that, or the feature set will increase without significantly degrading performance. I honestly haven't had the time to look into the new and improved features of Outlook 2007, but regardless of any of the amazing new things this PIM can do, it's so unbelievably slow that it's tempting to uninstall it and revert back to Outlook 2003.

I had a similar experience with my upgrade to WinZIP 10.0, which I decided to purchase a few years back after using it for most of a decade in trial mode. Over the past year, it has taken considerable longer to unzip large files.

Now that the whole world has decided that web applications are far superior to native desktop applications (I would call them Windows applications, but I don't want to offend any Mac OS X or Linux enthusiasts out there) because of their ubiquity and their ability to solve the thorny deployment issues so common to desktop applications, we are stuck with enterprise applications that are an order of magnitude slower than their desktop counterparts. There are few web applications that have made use of keyboard shortcuts and even with the advent of AJAX, the performance of a web app fails in comparison to the same application running in a local network, assuming, of course, that you haven't designed the application to use web services, which inherit the same HTTP latency as web applications.

Don't get me wrong, I'm all for web applications. It's what I do; but, the issue I face is the loss of productivity that businesses are experiencing as a result of all the 'advancements' being made in the software industry.

This is particularly evident for organizations that have switched to web based versions of their management systems. The loss of productivity for day to day users of these systems is astounding, and this presents a risk to many organizations who are depending on technology to help their staff work more productively. I believe this risk can be mitigated by software vendors by adding the following to the requirements for any new application.

  • No performance change for high traffic use cases. This will require identifying the usage scenarios in an application where the end user will be performing a large number of repetitive tasks such as switching between screens or selecting items in a screen which have dependencies. The new solution should allow the end user to perform their work without seeing any
  • Separate presentation and business logic. Decouple the user interface from the domain specific logic as much as possible by making use of design patterns such as MVC and MVP to ensure that if a web to desktop transition is required, it can be made with the lowest level of effort possible. These designs have the added benefit of making your code easier to test.
  • Choose an appropriate presentation technology. After identifying the usage scenarios with the most repetitive tasks and the highest volume of usage, choose a technology that will help to mitigate the risk of losing productivity with the new solution. Depending on the platform requirements, this may involve creating a native Windows application or the use of some of the new technologies such as WPF/E

Some of these requirements will require gathering metrics for each usage scenario such as number of clicks to complete the process and the average amount of time to complete the scenario. By studying the differences between the existing and future states for each of the high volume scenarios, designers will have specific data that they can use to determine the impact on worker efficiency related to the proposed solutions; and by thinking about worker efficiency up front the final solution will have a much greater chance of making the end users more efficient and the business in general more profitable.

What do you think? Have you performed efficiency testing and subsequently changed your architecture based on the results? I'd be interested to hear from you.

--------------------------------------------------------------------------------

As an side note, WinZIP operations can be significantly improved for large files by right clicking the zip file, choosing Properties and clicking the Unblock button (See posting on WinZIP site):

It turns out that Windows assumes that the contents of zip files could be unsafe for users--go figure!

Now, if only I could find some way to fix my issues with Outlook 2007. Of course, it probably has something to do with a 1.3 GB pst file.

Technorati tags:

Thanks for stopping in to Business, Technology and everything in between. I have discovered over the years that I am an entrepreneur at heart and that business just absolutely fascinates me. When I was a kid, I went from one start-up idea to another. I sold greeting cards door to door when I was in elementary school and started my own woodworking business when I was in Junior High. Try as I may, I can't seem to shake the dream of starting businesses.
It makes me feel old to say this, but I've also been programming for 22 years now. I'll never forget taking computer lessons at a family friend's house over one summer. I started with the simple BASIC programs that left your name floating in patterns across the screen and, of course, it went downhill from there.
I wish now that I had majored in Computer Science rather than Math and Physics. Of course, everything I did involved computer programming. My senior project was a computer simulation of the electric field distribution in multi-layer slab waveguides and while working as an intern with the high temperature superconductor group at Argonne National Laboratory, I added color and shading to a 3-D graphing program I had written in high school and dedicated my time while on the clock to updating and writing new data acquisition programs. I just can't escape writing code.
And so, here I find myself, 22 years down the road, fascinated with the intersection of business and technology. For all of the advancements in the area of software development, you would think that we would have developed software factories (Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools) like Jack Greenfield describes in his book, but it seems that we are only at the point now where we're thinking and talking and strategizing this approach but not actually doing it in an established way in the enterprise.
So, I dedicated this blog to the ponderings and musings on the topics of business, technology and everything in between. There's certainly no end to the content that could be added here.
Currently Reading:
Head First Design Patterns (Head First)
Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software

    
 Old Town IT Blog
 
Old Town IT
Copyright © Old Town IT, LLC
Patriotic flag
Privacy Policy: Old Town IT will never share your
information with anyone without your permission
Eco-friendly reminder leaf
703.579.6930 | info@oldtownit.com
Register  |  Login
At Old Town IT, we believe in the innovative and hard-working spirit of the American workforce. Since its inception, Old Town IT has created 22 new jobs in Virginia, Maryland, Washington D.C., California and Missouri.
Old Town IT actively works to reduce our team's environmental footprint. Policies and incentives-such as reimbursements for utilizing public transportation and carpooling-reflect our commitment to maintaining sustainable business practices.