Showing posts with label Software development. Show all posts
Showing posts with label Software development. Show all posts

Saturday, July 9, 2011

Time to say goodbye?

Intro

It all began at a Hollywood website I joined in the wee hours of the 2007 new year. I was hired on by a full-Ph.D. computer scientist named Jamal. We’re not talking about an honorary or mail-order Ph.D. either. We’re talking about the real thing from UCSD. Jamal was of Syrian extraction, and he was good. This guy was not an ivory tower scientist. He really knew something about computer science and software engineering.

Jamal had been hired by the owner of this website to be the company CIO. All future development of the website was to be directed by Jamal. The owner wanted to focus on strategic partnerships with studios and production companies. He did not want to deal with the grind of software development anymore.

A funny thing happened on the way to that division of labor. It turned out that the owner could not stand being out of the website development business. It turned out that he could not accept the true meaning of delegation of authority. He just couldn’t allow anyone else full creative control over his website. It turns out that he had to have his hands on the baby.

A power struggle ensued between Jamal and the owner. Step 1 in winning the battle was to fire the three developers Jamal had hired. You take away his chess pieces first, then you go in for the kill. Unexpectedly, I found myself on the street looking for a new job in Mid-June of 2007 after just about 5 months of employment. I had been fired.

Looking for a new home

No one expects a job to end in 5 months. You really don’t expect that in a situation when you know you are good. I hadn’t planned financially for this problem. Further, my brother and I were splitting rent in a relatively expensive house in Van Nuys California, and he was planning to move out. I was unemployed, and my rent was about to increase.

In this sort of financial jam, you don’t have a lot of time to select the perfect job at the perfect company. You cannot afford to be selective. You need to accept the first decent offer you are given. This is one of those moments when a perfectionist needs to make concessions to real-world expediency. So it was with me. This is how I landed in my current job.

The interview process was simple. I made two visits. I had several conversation with a pair of developers I will call T and R. T & R had been in the organization for years before I ever showed up. I asked them a short list of questions about the company to help size up what brand of outfit this was. The both answered the question in essentially the same way. Based on their answers, I reached the following conclusions about my current company:

  1. This was a very family oriented company. Execs were more concerned about taking their kids to baseball games than growing a trillion dollar organization.
  2. This was a mellow, low-pressure company, where quality of life was basically paramount.
  3. This was a low-pay company. Most of the people working here had been hired straight out of college or from low-end jobs at very low prices. There were theoretical bonuses and raises. Most people didn’t get any such thing.
  4. This was a low-tech company. Elementary CRUD applications and websites were the warp and woof of daily life. VB.NET and FoxPro were the two dominant paradigms. There would be no real technological challenges or adventures in this business.
  5. In terms of software development, execs were more concerned with cosmetic appearance of things than actual logic or data integrity.
  6. Programmers were not managers, and managers would never come from programmer stock. If you wanted to be a manger in this organization, it would be best if you held an MBA from USC or Pepperdine. Otherwise, it was good to be a pretty girl.
  7. They didn’t like change in the roster and they didn’t like firing people. If you joined the firm, you had job security.

Based on these seven smaller conclusions, it was possible to derive a much larger conclusion. That conclusion was as follows: If I accepted this offer, I will be entering a dead-end job. It would be a very nice and comfortable dead-end job, but it would turn out to be a dead-end job. There would be no opportunities for technical progress, growth in wages, responsibility or advancement in rank. There would also be no significant bonus for massive effort.

How do you play this one?

So the chess master has a problem before him. How do you play this arrangement of pieces on the chess board?

  • You are out of work suddenly.
  • You are in a financial jam
  • You have an offer on the table for a comfortable dead-end job

What do you do? I will give you my solution:

  • Turn down the offer of permanent employment
  • Tell them that you are really looking for an hourly consulting position. Tell them that you would accept an consulting gig, but not permanent placement
  • Go short with this one. Stay in the gig for 6 months to 1 year, deliver as much value as possible, then sell-short and move on.

This was my plan, and I followed it… at first. I declined the hiring offer. I tendered a counter offer for a consulting position. They refused the consulting gig, and offered the perm job again. I declined, and said I would continue looking for a position. They folded. I won. I was brought on for a 150 day contract.

The figure of 150 days was extremely weird. I had never had a 150 day contract in my life, and I had had 16 professional contracts before that moment in time. If I had been as calendar savvy as I am now, I would have understood that this was a setup. I was scheduled to come onboard during the first week of July. 150 days puts you schmack in the Holiday season. Nobody hires new consultants during the Holidays. They knew they could trap me with a perm-offer in late-November or early-December.

This was their plan, and they executed it by the numbers. Come December, I was trapped. I could be unemployed for the Holidays, which would create a true financial jam, or I could accept the perm offer.

At first I was of a strong mind to decline the perm offer and take my chances. No dice. As hard as I looked, I could find no suitable consulting or perm positions open at that time. I really looked hard too. There was truly nothing. I didn’t know it at the time, but this was the first early warnings of the financial crisis on the horizon.

With no other options available I took the only option available. I took the perm job.

The financial crisis

Once 2008 began in Ernst, I resumed looking for other employment. I never felt comfortable in this job. I always believed I was a programmatic and organizational non-fit for this company. I always expected it to end, and end soon. I never, ever expected this job to run four years. I never thought for one second I had a foot-hold in this company. In brutal honesty, I never really wanted a foot-hold. This was not my cup of tea. This was not in my agenda.

The problem with looking for employment in 2008 was pretty simple: We were on the verge of the worst banking collapse in the history of the world. It could have easily been the worst depression every. It may yet turn into the worst depression ever.

2008 was a rotten financial year, and it was rotten all year long. Some fools believe it only turned rotten in September of 2008. Not so. The financial news was terrible all year long. We were just in psychological denial about everything until Lehman brothers dropped dead, and the system executed the domino theory of collapse.

In this macroeconomic environment, it is difficult for anyone to find a job. It is more difficult if you are a computer programmer in the financial industry who is looking for that perfect job. Believe me, you won’t find it. I sure didn’t.

Once the crisis hit on Sept 15, 2008, I was expecting a pink-slip. I thought it would come any day. I was not expecting them to keep me, and I was expecting to be the second or third man in MIS/IT to be let go. Who was #1, and #2? I thought this was an arbitrary question, as I was expected the first three guys to go in a cluster. All three would be flushed at once, or so I thought.

A strange thing happened on the way to the flush. The high command decided to keep all of us in the programming section. The roster was cut to a very small extent; however, the cuts were mostly problem people who were on the disciplinary chopping block anyhow. I found this move baffling. It was very nice, but it was baffling. I still have a hard time believing they carried all of us programmers through this recession when there was no work to do. We sat around twiddling our thumbs doing nothing… and getting paid for it.

I guess we had good karma. I guess the bosses wanted good karma.

Where we are today

Three surgeries and a little economic non-recovery later, Dave is seriously thinking about moving on. I remain a programmatic and organizational non-fit for this company. If I am going to move, it better be soon. It better happen while I am in the full-bloom of rosy health, and it better happen before September strikes. This September could be a very bad financial month indeed. It might be the worst since 2008.

Saturday, November 21, 2009

The joy of development renewed

During the time I was convalencing, after my athroscopic surgery, in my hometown Fresno, my father introduced me to a non-profit organization he has been working with for the better part of two years now.

The group is a non-denominational 501C3 that provides housing, medical care, financial support, foster care, and education for homeless children. The organization has been in business for 24 years, and the turbines are begining to flip on. Partially due to my father's grand writing skills, this organization has obtained several million dollars in new funding over the past year and half. They have expanded their services to 5 group homes, a medical clinic, and educational facility.

With all this growth comes all of the problems of growth. The right hand doesn't know what the left hand is doing. Control and communication are poor. There is a constant background terror that the costs are escalating and out of control, just because there is no easy way to run a balance sheet report. Doing a balance sheet manually, from paper and Quickbooks, is very difficult and labor intensive. You can do about one a month with 5 accountants working on it.

The founder and president of this mission is a very forward thinking lady. She has been pondering how much scalability would be possible if she had a fancy web-based database application that could coordinate all of the organization's activities, and give her an immediate balance sheet of assets and liabilities.

Imagine a system in which all of the intake paperwork you have to do when you recieve a new child happens on the web. It immediately goes into the central 501C3 database. All the medical services you provide that child go in the same database. Meal costs go into the same database. Housing assignments and resource costs go into that same database. School materials are recorded in that same database. If you have such a database, and your workers are dilligent about keeping up, you can draw a real-time, fully automated balance sheet for your entire 501C3.

Enter Dave. That is what I am working on right now. I was given the contract to do this project for her. I have been working on this off and on for several weeks now. With electro stim and an icepack on my knee, I sat here for many long hours today trying to button up a beta copy to show the boss during Thanks Giving week, when I will return home. The prospects look good. The database is finished and splendid. The Web app is a state-of-the-art Microsoft C# 4.0, .NET 4.0, MVC 2.0 app using the Entity Framework for data access. I even tossed in some JQuery 1.3.2, and boy was that an eye-opener! It isn't finished, but it is very nice. I have written a lot of test code, and my business classes are passing under much punishing stress. I am confident the pluming is very good.

Folks, I cannot tell you the joy I have experianced here at my workstation, calling all the shots, creating the entire system from Green Fields, with no legacy bullshit, no jack-ass managers, and no weak-ass co-workers to constrain me. I am using my ultra-badass Core i7 and my 30 inch Dell 3008WFP to do the work. This is not an out-dated weak-ass machine like my unit at work. I am working with SQL Server 2008, not the outdated 2005. As implied by the statements above, I am using Visual Studio 2010 Beta 2, not VS2008. All the reports are in Microsoft SQL Reporting Services 2008. The tablix absolutely rocks. There is no reporting technology on the planet that can compete with this; except maybe Excel 2007 if you know how to use it well. The tablix was born to pivot financial data, and it makes an A&L balance sheet pretty damn trivial. I could do it with the SQL Pivot, but this is better and more dynamic.

In short, this is the way it aught to be done if you are a Microsoft developer. No compromise. My one and only regret is that I am not using the Unity IoC in this project, but that is only because it is unclear how or whether Unity should fit into the scheme.

Best of all is the pay. I am not quite at twice the base-hourly pay I get from informa, but it is pretty damn close. I cut this 501C3 a big break because they do have a few cash-flow issues due to poor control. I am here to provide that control.

Now for the problem: This is spoiling me for nearly every other approach. I am remembering the glory days of 1998-2001 when I was a lone-gunman consultant who went into a fresh development situation, kicked ass for 6 months at a high rate of pay, and walked out with my pockets full of cash. I have weaped endless bitter tears over the end of those days that came with the Internet Buble bust and the 9/11 recession. I almost feel as if happy days are here again.

There is a serious problem with being a permanent-party employee developer. Often, you have no job to do at all. You are still chastized for not showing up at 9:00 anyhow. To say that I am unchalleged and under-utlized would be an understatement for the ages. Further, if you are not the lead dog...

There is an old funny saying that was quoted recently in The Taking of Pelham 123. Imagine you are a dog in an Alaskan Dog Sled race. If you are not the lead dog, the view never changes. Why? Because you are always staring directly into the asshole of the dog in front of you.

This is life as a permanent-party programmer developer. You are always given trivial, penny-ante assignments. You work on some piece of shit software that was originally developed by an incompetent 24 or 25 year old some 8 years ago. It is now a mazework of undocumented patches. The problems you are given to solve should never have existed in the first place. If the original developer had known anything about patterns and practices, entire categories of these problems would never have existed in the first place. This is legacy code, and by that, I mean code which is not under a suite of automatic tests. Ergo, you are terrified to change it. You know this piece of crap will break with even slight changes.

Folks, I have been gazing into the assholes of the dogs in front of me for far too long. I think one of my New Years Resolutions is going to be to drum up as much external moonlight as I possibly can in 2010. Let us hope that this will lead to a full independent consultant status once again. I can hardly bear the thought of continuing an unchallanged life of fixing someone else's giant errors.