Sunday, November 26, 2006

2am Talks About Work Issues

In a prior post, I believe I talked vaguely about issues with work. I'll go into more detail with this posting.

Over the past year (first anniversary on Nov. 21), I've been working for a small startup software development company. They've been in existence for a few years, and I joined up with them because they seemed to be doing some very interesting development work, and I thought I would be able to make some serious expansions of my skill sets.

The personnel history has been interesting. When I signed on, there were four founders (CEO, COO, CTO, and an Executive VP), an office manager, one other onsite developer, and another offsite developer.

The office manager left in the early spring for a higher paying management job.

One of the developers left a couple months later, saying that he had grown frustrated with having to report to the COO who was not a developer himself. He also said that he had concerns about whether they had enough money to stay afloat.

Soon thereafter, the COO stopped commuting into work. His home was over 250 miles away, so he was driving in at the beginning of the week, staying at a motel through the end of the week, and then heading home for the weekend. The cost of driving his big gas guzzling pickup to and from work was eating into expenses, and they needed to cut back.

By mid-August, we received word that the COO was no longer serving in that role, but retained a stake in the company. A few hours later, we were issued new office keys, which raised some eyebrows.

None of those positions have been refilled yet.

My own work history seemed to involve lulls with occasional crises. The position for which I hired on involved commercializing some proprietary algorithms. On day one, I was given a e-mail message that spelled out what they wanted to accomplish for a demo. Apparently they had promised that the demo would be done by a date when they had not lined up adequate manpower to do the job. The demo was to take place less than three weeks from my start date.

I worked like hell, and they had to bring in a contractor with some additional expertise in Windows media APIs, but we got something working. It was ugly, but it supposedly wowed the people they were showing it to. I then proceeded to start making performance improvements to the code and redoing the kludgey things so that they would work the right way. I continued working on that for a couple more months.

Then in late February, I got dragged onto another emergency. This time it was another demo that they had promised to be done by a deadline less than a week away. The CTO had found some components that could probably get the job done, but since they were C++ libraries, it would require me to do the job. We got something working by the deadline, but it was ugly stuff. The CTO had underestimated the complexity of the project again.

I spent the next couple of months redesigning the application from scratch, writing a detailed specification document that justified the design. It was going to be flexible, modular, and robust. The new code outperformed the old design, and my boss was happy. He started dreaming up other things that the program should be able to do, and I implemented them. The changes I made required him to make changes in the core product's design (the Java code). He promised me several times that he would get around to making the upgrade, but it never happened.

Over the summer, I expanded the scope of the second project to support another application protocol. This would require some reverse engineering work because I could not find any instances of where someone had done this before. It was a long, hard, boring slog. But it kept me busy through August.

During the summer, we also drew up a business proposal for the customer on the first project, but we never heard back from them. Later on, we learned that the company was going through some financial troubles that made them the target of shareholder lawsuits. I figured that the project was moribund for the foreseeable future.

During this whole time, the CTO and the other remaining developer had gotten wrapped up in a project that was basically one big consulting project. During this time, the founders were out of the office both on personal and business trips, so I felt very isolated. With little feedback from my superiors and little followup on the two hurry up projects I had worked on so far, I was beginning to feel very discouraged.

By early August, the other developer had moved on site, so things were starting to come back to life in the office. Within a couple weeks of the COO being let go, the CTO sent out the harshly worded e-mail that I mentioned in my September wrapup posting. That's when I started putting out feelers for other jobs.

In October, we had a meeting where the CEO told us that we had received some money from one of our original investors, and that we had enough money to run through the end of the year. This was the first time I had received any direct indication of just how close to the wire we were financially. They said that they hoped to land either a grant or some venture capital money by then.

The CTO was going to be in town for a couple of weeks, so he organized a set of meetings where he wanted to map out new features for the next version of the product. He said he wanted to do things the right way this time around, and we had the time to start putting some real thought into the design, based on the lessons learned from prior mistakes.

So we spent a couple weeks in design meetings, sketching out all of this stuff. Then he went out of town for a week's worth of meetings. When he gets back, he tells us that he has a meeting within a couple of weeks with another potential customer and he wants to demo them code based on our new design. Both the other developer and I agree that this is insane.

While the CTO is out on another trip, we sit down with the Executive VP, who is tasked with setting up a work plan for this demo. She has an e-mail forwarded from the customer, describing what they're interested in. Some of it is so vague as to be worthless. Other parts of it, we realize, could be done using the existing code base.

During a working lunch with the other developer and the Executive VP, I manage to persuade the Executive VP that it would be better to come in with a solid, yet older, product than a flimsy Potemkin demo. She admits that part of the problem is that the CTO has a habit of promising way too much to potential customers and then assuming that everyone else is Superman and will put in superheroic efforts.

This leads to the Executive VP into opening up about where the company has been and where it is headed. She expressed frustration that the CEO and CTO were "chasing revenue" instead of working on developing a solid, marketable product. Rather than putting effort into design and following through with it, they would try to land these licensing deals with individual customers and promise all kinds of features which usually weren't implemented yet. She said that we had yet to earn a single dollar from these kinds of deals.

She said that her husband had become increasingly dissatisfied with her involvement with the company, because she could have been making a lot more money in a corporate position. However, she said that she was so far into debt with the company that she felt like she had no other option but to see it through. She was praying that a larger company, seeking to gain a position in the emerging field they were targeting, would buy them out.

It was a sobering moment, both enlightening and depressing. Enlightening because it verified the worst of my fears about the company's financial health. Depressing because I realized that these crises that I got dragged into were just part of the revenue chasing squirrel cage.

Right now, the other developer and I are working on some demo code that the CTO would like to see working by mid-December.

He has given a sketchy list of features that he wants, but we really don't know what the potential customer wants because that won't be known until at least after a meeting that is to be held at the end of this week. So, I have been working for a week or so on a project that might be for naught depending on how good a guesser that the CTO is. I suspect that the mid-December deadline was decided upon so that they would have a feel over whether this has any promise before the money runs out.

I really really want to see this project through, but I am at a point where I realize that I don't want to stay with this company. I have checked out emotionally. I don't think they'll change their seat-of-the-pants ways, which means that it will be tough for them to develop a solid product that might warrant a buy out by a bigger company. So, about a week ago, I updated my resume and made it public again. I've also submitted applications for 10 other openings around town.

Now let's turn to the comment bag...

There is an aging comment from the Drunken Housewife that I've been meaning to get back to. Quoting the relevant passages...
I have a couple of ideas for you: have you ever considered going into tech
writing? Your English skills are off the chart, and your writing is clearly good
(a little dry at times when you're covering Schnarch and others, but that's
okay). I know a couple of tech writers who work at home but fly to their clients
(in places like Las Vegas and SF) occasionally, and they make extremely good
incomes. Your software skills could make you a tech writing superstar, because
you'd really get what you were writing about.

That's a good question. I haven't given much thought to technical writing, but I think it would worth a try if I could make as much if not more than what I'm making right now. This past weekend, I scanned the big four job boards for new leads and cast a wider net, looking for technical writing positions. I found three possibilities, and I put my name in for them. I'll follow up if they lead to interviews.

One of the barriers to entry, I suspect, might be a lack of experience with high end publishing tools like QuarkXPress and FrameMaker. I'm twice brain damaged in this area. In my grad school years, I used LaTeX for publishing, and then I worked for almost 10 years for a company that uses its own software for product documentation. But I've always been open to learning new stuff, so as long as someone will cut me little learning curve slack, I'll assault the grade at full throttle.

DH then asks:
If you want to stay in software, have you played around with java? I took a
couple of Java programming classes myself when I was playing around with
changing careers, before my 2nd child, and I loved it. Java is such a fun
language (my previous experience was just a Basic class in college), and it's a
great addition to your other skills.

I'm starting to learn some of it on the job because my current employer's code base is primarily Java. The reason I work in C++ at my current job is twofold:

  1. our product needs to interact with libraries that are not available in Java
  2. in some instances, the code needs to operate with real-time (read: really really fast) responsiveness
Given that Java development tools and educational materials are available for free, I should be able to learn the language and the basic APIs pretty easily if I managed my time appropriately.

However, getting a Java development job requires more than just language and API knowledge.

Most Java based business apps are developed within a framework known as Java 2 Enterprise Edition (a.k.a. J2EE). From what I've read, this sounds like a much more daunting learning task.

Another skill that I need to sharpen badly is database access programming. That means getting a better understanding of relational database management systems (e.g. Oracle, SQL Server, etc.) and SQL, the lingua Franca of database interaction.

Should I stay in the software development field, I'm going to have to expand and hone my skill set because I am still way too constrained to the enviorns of scientific computing and low level system programming.
blog comments powered by Disqus