Some years ago I worked very hard to extricate myself from the “hardware” issues which I found myself having to deal with instead of developing — which (at least most of the time) I love doing! Dealing with “hardware” however I do NOT love doing. Then comes the panic call — customer down, application partially unavailable, state auditors coming in for 3 weeks of audit just after the Thanksgiving holiday!
Result? — deep into the throes of a hardware issue I go — day before the Thanksgiving holiday (timing is everything!), was looking forward to knocking off a bit early — but… not to be! So I meet with my friend (also their hardware guy) and we head to the site. It seems that communication between their office and main operations facility is not working. It is normally linked via a fiber optic cable running the 300 feet or so between buildings. Now, I inherited this installation which was done some 8-9 years ago, and until today hadn’t had to do anything with it. In fact, it has been at least that long since I connected my last site.
Our challenge for the day was to get the 2 very different media converters talking with each other — without being able to test either of the original units to determine which had gone bad. This would be somewhat of a trial and error operation. When replacing the unit on one end, testing for link and having none, we were dismayed since it had been a power “issue” in the remote building that had caused the original outage, which led us to believe that it was the unit in that building which “must” have gone south with the power. However, in desperation we decided to try replacing the unit we “thought” to be the good one. Well, imagine our surprise to find that by replacing that unit we had communication! It was a beautiful thing!
Moral of this story? Sometimes the independent software developer must wear other hats. Customer service is primary — while this long term customer of my friend is a relatively new customer of mine, the task they needed accomplished took the skills of both myself with my experience and knowledge set, and that of my friend “the hardware guy”. Together we were successful, and our customer who was seriously behind the eightball as a result of the failure is now able to work efficiently again. I expect they will continue to be a loyal customer.
Somewhere around this time of year I always find myself reflecting upon where I am in forwarding my goals for the year, what I have accomplished professionally, and what I have accomplished personally. I find myself also looking at the relationships built over the past year, and how I have or have not been a positive contributor to those relationships. In short, I find myself deep in thoughts of what has recently been as related to what my perceived possibilities for the time have been.
Often I find that the past year has looked nothing like what I had expected, and also I often discover that what has occurred was in fact better than I could have imagined — even though it didn’t look like I thought it should. Life in the IT business tends to be full of surprises!
In my last post I touched upon the importance of taking time to balance work and “life”. This morning I received another newsletter from one of my favorite web writers — Bob Lewis of itcatalysts.com. In his “Keep The Joint Running” newsletter for 11/23/2008 “Random Thoughts” I immediately sensed that he was about to write (once again) on “thoughts” which could have been the subject of what I might write. I find that VERY often what he writes could have been written by myself. Perhaps that is why I enjoy his writing so much. The fact is that back in September of 2007 when I first started with this blog one of my hopes was that somehow I could find within me some measure of writing ability to keep readers interested in the way that Bob Lewis’s writing always has for me.
Anyway, that aside, Bob’s writing for this week starts out with a poem “Temporary Well Being” which alone is worth reading I believe. However, Bob builds on the poem in a manner and with cleverness that I admire. I recommend reading Bob’s latest — “Random Thoughts“.
As we in the U.S. approach our annual Thanksgiving Day celebrations I am reminded once again of the importance of setting priorities for work-life balance. This came to my attention as I found myself “filling-up” on “things” (business related) that I could do during the time that my clients won’t be “…disturbing me…” about problems, new ideas and requirements or any such items. YUCK!
I know that I am not alone in this custom development, IT consulting or independent developer arena in my ability to find more areas to fill up a holiday weekend than there are hours to fill up! I’ve seen it over and over again how easily a potential change-of-pace weekend turns into just another few days — filled with events that frustrate and leave me feeling that I “lost” my weekend! (Which of course I DID!). It is even more disturbing to realize just how often the problem has been caused 100% by me!
While it is true that (sometimes) there can be “real” requirements to work on a holiday weekend, such as when a long weekend is the “only” time that such things as a major database re-structure or hardware upgrade can be accomplished. Let’s face it, IT is a demanding (as well as rewarding) career, and sometimes that does require some “odd” hours.
My hope for this post is that someone out “there” who reads this will have a better holiday weekend because I posted. To all — best wishes for your Thanksgiving weekend, and if Thanksgiving is not a part of your tradition I wish you a weekend of freedom from the stress and strain of your IT involvement, whatever that might be. May your weekend be truly recreational for both body and soul.
A lengthy article that caught my attention earlier today wrote about concerns that the U.S. Government’s new Electronic Records Archives program may not be ready for the big time. OK, so that really isn’t unusual – but – other statements made in the article truly indicate a magnitude of information almost unthinkable to have 2 months to process. The article “Bush’s exit to put new e-records system to the test” states that the Bush Administration is expected to turn over some 140 TB of information to be added to the National Archives and Records Administration (NARA) where it will be properly catalogued and stored.
Following up on this article I also found a GAO article very much of interest to me as a developer, even one whose general clientele is small business. “Challenges in implementing an Electronic Records Archive” is the GAO article I refer to. The idea of implementing “…an initial operational capability with somewhat reduced capabilities…” in my experience is almost always beneficial, whether part of the initial implementation plan OR as the result of “issues” encountered in the development. Also referenced in the article is that “…a parallel development of a separate part…” (of the system) is being considered. It is interesting to note that this “separate part” of the system itself may not be ready to take on the Bush records in January 2009 as required — reason? — “…NARA and its contractor are still negotiating the precise scope of work and system requirements…” Since this system is to be created using “…a commercial product that provides some of the basic requirements for processing presidential electronic records…” I have to wonder what there is really to be negotiated. It seems to me that what there is to do is to get going with what is known to be required – time is running out!
For years now I have found myself becoming very frustrated with what I believe to be an over zealous effort to pre-define a “perfect” system, negotiating and re-negotiating — another example of what I would call “Analysis Paralysis”. FYI — The GAO article was released in May 2008.
In the last couple of months I have found myself, like so many others, listening to the gloom and doom forecasts of economic slowdown (and worse) wondering how it will affect me. Last month I blogged (really got on a soapbox) about developer pricing in my post “Service Pricing Thoughts for the Independent Developer“. In these seemingly ever worsening economic times providing value to your customers certainly is not the only consideration — in my experience during difficult economic times it seems that those times are probably the most difficult times to get new work from an existing client base.
That leaves the developer with the task of finding new clients to service – but how? Certainly today the web provides a broad capability to “advertise” services — but those web pages describing the company and its services still must be found by those looking for the services. Enter SEO – Search Engine Optimization.
I can’t say how many (if any) developers would say that they are “expert” at SEO, so for those who would include themselves in the non-expert category, I’d recommend an article published on the SiteProNews website entitled “Should Small Businesses Invest in SEO During a Recession?”. The article, well written and informative, makes many points which I believe to be essential. I personally find the subject very interesting. I particularly like the statement made by the author as he is about to write on outsourcing of SEO services — “Full disclosure: I am biased. I run a search engine marketing agency. But I hope you’ll hear me out anyway. This bit of honesty just adds to the articles legitimacy for me.
My hope is that all my readers will forgive me for my recent lack of blog writing, as I have been very busy on behalf of all independent developers while flying my personal jet (…shown here) to congress to lobby for a bailout bill for independent business owners. Unfortunately my travel has brought me away from my sprawling Texas mansion now being rebuilt along the shores of Galvaston Bay (…no internet access), as well as my soon to be rebuilt home in the hillside of California which was burned to its foundation, a complete loss during the recent fires out there. These events have also, of course, meant that I have had to spend countless hours fighting with insurance companies which are of course going broke in this economy and also looking for money from congress so as to continue “business as usual”. (I find that not getting insurance money due me really IS business as usual however! — so why do they need the money anyway?).
While my personal jet is well-equiped and of the latest design (…as pictured here), the bad economic times have meant that I have cut back on the $4/minute use of internet access while traveling — I just simply refuse to spend that kind of money — and of course, I told my lobbyists in Washington and they thoroughly understood my concerns here! Unfortunately my best efforts have apparently done nothing to change the situation for us as independent developers in an economy seemingly tanking each day, riddled with job cuts, and clouded with uncertainty.
Bottom line fellow readers is this — we’ll have to keep working hard (…when we have work) until at least 2040, by which time we’ll recognize this period as “the best of times”! We’ll long for the “good old days” of today. In the meantime what there is for us to do is to continue to express the value of efficient applications, tailored to the business model, and flexible enough to provide for changes in that business model as they inevitably arise.
During the height of my recent upset with Vista, and a visit to my chiropractor, I discovered an article in the October issue of MaximumPC about what went wrong with Vista’s launch — I found it to be very interesting and thought I’d share the link with you. The on-line article, “What Went Wrong With Vista” can be read here.
It seems that there has been an expectation that Vista will see a service pack 2 in the coming months before Windows 7 is released — it would be nice if it managed to fix the recurring issue I’ve had with the infamous infinite loop problem reoccuring. Also in my exploring I noticed a recent article on Windows 7 that some may find an interesting read – link to it from here. Apparently one person thinks “This time Microsoft gets it right”. Interesting.
One might wonder why in a blog on Custom Application Development that I would be writing about Windows so often, but the answer is simple — it seems that we just can’t get away from it. As a custom developer it is always necessary to keep aware of the latest and greatest — even if it isn’t in our immediate future, like it or not it will be part of our future if we plan on staying around doing custom applications. I am very glad that early on I chose to work with Vista since by doing so I was acquainted with it and prepared (as much as possible anyway), for the inevitable “issues” that I would be dealing with from customers as they floated into Vista systems.
I’ll try hard to not have this post be a rant! It’ll take everything in my power, however — since I just can’t understand why such an operation like Microsoft, who, with all their resources can’t seem to get things right the first time, second time, or even later than that!
I’m very clear about the times that my applications fail to meet expectations – those are times generally when I’ve been told to just get something going — and I’ve yielded to putting something up with “minimal” testing. Heck, just last week I had a customer say to me “Testing, that shouldn’t take long! I guess you can have it ready tomorrow – right?” As a customer with no technical background this customer didn’t understand that the change being requested, a simple field addition, would affect some 75% of the screens of the program, about 90% of the reports, and other such “details”.
Testing does take time — variations of environments are difficult to identify and test for it is true. However, I have a problem with issues that are fixed only to return later – whether it be Microsoft or myself I have a problem with it. My Vista laptop running Vista Ultimate (…the best Vista right? Ultimate? Must be the best! — NOT!). I’ve had the dreaded “Configuring updates: stage 3 of 3 – 0% complete” infinite loop problem return after months of apparently successful updates. It’s about as ugly a problem as it gets, but the good news (…if one can call it that) is that the system generally can be recovered. Just follow this link to Microsoft for a solution should you be so unfortunate as to experience this.
I’ve never really thought much about programming languages — nor the plethora of languages that have been developed through the years. While writing my previous blog entry I found myself trying to come up with the name of my first programming language – COBOL. It’s been so long now since I have used it, or referred to it in any way, that I just couldn’t remember it! (…brain freeze I guess).
Anyway, I went to Google “programming languages” and found the WikiPedia page with its “List of Programming Languages“– I was amazed to find that WikiPedia lists some 2700 or so programming languages. Just for fun (…and a little diversion), I found myself checking out some of the unknowns, as well as info about some of the languages I’ve heard of before but know nothing of. It was an interesting little diversion that I thought others might enjoy as well.
I also found myself looking at the list and realizing that I have used fewer than a dozen of the languages listed. I guess I’ve led a more sheltered life than I’m accused of!
As an independent custom application software developer I have determined that any really active application (…defined as an application basically designed and developed on an on-going basis, changed and updated frequently as business needs develop) periodically requires that the developer step back and once again look at the application as it exists, the new requirements – and the methods required to maintain and implement the new requirements. Often I have found that rather than update the application it is often just easier (…read will take less time) to basically start from scratch on many parts of the application.
Now, I’m not suggesting that one throw everything away — but what I am saying is that often early development of the application design limit the ease with which new functionality can be added or processed. This is caused by the simple fact of not knowing ahead of time the additional requirements which may come up. While it is possible in some cases to “suspect” that some future requirement may arise and therefore plan design to accomodate the future need, often it just isn’t apparent.
It is difficult to determine just when to look at re-design and re-structure of an application, but I have developed one simple step for establishing when it is re-design time — When “conditional code”, “exceptions” and new table relationships begin to look like spaghetti code of COBOL days — its time for re-design. I’ve recently found such an application at a customer site — re-design is in progress.