This is another in a series about how I got into computers and how my career has unfolded.
- Part 1 was pre-university
- Part 2 was university
- Part 3 was an internship
- Part 4 was my first job search
- Part 5 was my first programming job
- Part 6 was my second programming job
- Part 7 was my foray into IT Pro work
- Part 8 was my return to app dev
- Part 9 was about my final job search (I hope)
- Part 10 was about my first experience at a consulting company
In my last post in this series I talked about moving from IT into a consulting org, having a long commute to ultimately do nothing at all, and pushing my boss to get me onto another client/project (aka gig) where I could actually do something.
I should point out that this employer (BORN) was a specific type of consulting firm. There are different types of consulting firm out there. Here is a non-exhaustive list:
- Consultants are full-time employees (known as FTE or W2), and the company finds them work, and if they aren’t billing at a customer they are “on the bench”, which means they keep getting paid. This is a low risk option for the consultant, but usually pays somewhat less.
- Consultants are employees, but if they aren’t billing at a customer they don’t get paid; but the employer often offers benefits like vacation and insurance. This is a slightly higher risk option for the consultant, but usually pays a little more.
- Consultants are independent contractors (known as 1099 workers). They are affiliated with the company, who finds them work, handles accounts receivable, contracts, and other busywork with the customer. If the consultant isn’t working, they aren’t paid, and the employer doesn’t provide benefits or vacation; that’s all on the consultant. This is a higher risk option for the consultant, but usually pays more.
- Consultant is self-employed and finds their own work, only getting paid when they do billable work and manage to collect the money from their client. No benefits, no time off, nothing is automatic. This is the highest risk option for the consultant, but (at least in in theory) has the highest pay rate.
There are many variations on these themes. Over the years I came to think of it like this:
- I am always working for myself - generating income, having benefits, and saving for retirement are critical to my personal goals in life.
- When I worked at an ISV or in IT or for a consulting firm I was a full-time employee, and so the company was hiring me for my expertise and compensating me through:
- Health/dental insurance
- Paid time off (vacation, PTO, sick time, holiday time, etc.)
- Life insurance
- Any other compensatory offerings they provided
- As a consultant that was a full-time employee, the company provided me with a set of services (that I could have gotten in other ways) in exchange for lower pay than some other higher risk employment options. Such as:
- Guaranteed regular paycheck
- Benefits management
- Sales - they found me work
- Accounts receivable - they billed the client
- Contract negotiation - they handled all the legal details of working with clients
- And more
- Looking back, I think all these things really apply to working in any company, in that we trade off risk and “busywork” like sales and accounting in exchange for making less raw income.
Anyway, back to working at BORN. Between the first gig I discussed in my previous post and the next gig they found for me, I did spend some time “on the bench”. At that time, this meant commuting into the office everyday to sit in a room with other folks that were on the bench. Ideally people on the bench work to improve their skills, and are absolutely available to be interviewed by prospective clients identified by the sales folks.
While at university, I’d written a text-based multi-user dungeon (MUD) game, and I’d started writing another one while working in Alabama. I decided that it would be fun to try and write a client app for an existing MUD available via the budding “Internet” that existed in 1995. Having already invested a fair amount of time becoming good at VB, and having written a number of network-based things in my life thus far, I started writing a semi-graphical frontend to a text-based MUD (I don’t recall which one). I never completed this, but I did have a functioning prototype when I was assigned to my next client.
My next client was just a 20 minute drive/commute from home, and was a hospital/clinic network. They’d hired my employer to build a graphic frontend to a text-based lab results management system. Amazing coincidence, given that I’d just spent a couple weeks on the bench writing something very similar!
I want to pause at this point to say that this was sold to the client as a “fixed bid” project. I didn’t know this, or really what “fixed bid” meant at the time - but I got deep into it very soon after, as you’ll see.
So I settle into the workspace at the client, windowless brick building between a popular bar/club area and one of the more well-known low rent, high density housing areas just outside of Minneapolis proper. Pretty safe during the day, with access to lots of great restaurants nearby, but an area to be cautious after dark - at least in my young, naive, and rural mind.
The lady who ran the department was very organized, sharp, provided good information about what I was to build, who to work with, and she had a PC and software all set up so I was ready to go on day one (which is pretty rare in consulting). The guy in the cube next to mine was their senior developer, who knew the problem space and was able to get me started. He and I became friends while I was there, and we still talk from time to time.
The guy directly across from my cube was (to me) an older guy who had a couple teenage sons. I think back on that with humor now, as my kids are in their mid to late 20’s, and I still don’t feel “old” :) His job was the DBA for their Oracle database, which I needed to use. I’d never worked with a dedicated DBA before, and he exemplified many of the stereotypes: slow to change, resistant to change, focused on gathering CYA (cover your ass) documentation on any changes, etc.
For all that, he was a super nice guy, who’s worldview was very much that this was a job that paid the bills for life. And life wasn’t here, it was with his kids and Boy Scouts, and other things. This made him happy, and fun to be around from 8-5. He arrived and departed promptly on time every day, worked at a … reasonable … pace, and had been there for years.
I call this out because there’s been this ongoing tension in our industry between folks who love their job, where the job is almost like a paid hobby, and more normal (?) folks for whom tech is a job where they make money to live their lives - and their lives are independent from their job.
Personally I think there’s lots of room for both, and everything in between. Sure, to me personally building software is more like a calling than a job. It is just plain fun, and I’d figure out a way to do it if it couldn’t be my job. This DBA, and many other people I’ve known over the years, find tech to be an inoffensive way to make money, and that money funds all the fun things they do in life.
It is all good in my view.
OK, so back to the project. The backend system where the lab results software ran was a Tandem computer, designed to “never go down”. Very expensive hardware, presumably with lots of fault tolerance and other cool features. But to me, it was a TCP socket endpoint that accepted text input and provided text output. Literally, I was connecting to it as though my VB software was a text-based terminal.
Very similar to what I’d done in university when I wrote a VT100 emulator, or other software I’d written to interact with modems, or software I’d written on the Amiga to interact with the VAX, or the software I’d just written to interact with a MUD over the Internet.
So I build this software in just a few weeks - including testing, polishing, creating a nice icon, etc. I felt great!
My boss back at BORN wasn’t so happy. See, what I now learned was that this project was fixed bid - meaning that he and the sales team had estimated that this would take a few months to build, and they’d worked with the customer to come up with a fixed price for the software, regardless of whether it took a little time or a lot of time.
Sometimes customers push for a fixed bid, because they think it will reduce their risk. That’s a myth to bust at a different time, but in this case it actually went the other way, because I’d finished the work in less than 10% of the estimated time.
This was embarassing, because it meant that the client had agreed to pay a price that was 10x too high for the work I’d done. So my boss “strongly encouraged” me to find other requirements, do more testing, etc. Basically, do whatever I could to pad out some time. Which seemed ethically challenged to me.
Still, I did make a good run at some more testing, reviewed the specs, wrote some more detailed documentation for deployment and a handful of other good-faith tasks that provided value. That may have taken another week I think?
At which point I let the client know it was done. The lady running the department was pleased. If there was backlash about the contract and fixed bid amounts, it didn’t blow up in my face anyway, though I did hear some rumblings.
The thing was, at this point I figured I’d be off to another customer, but NO! The lady running the department wanted me to stick around until she could find some other work for me. So again, there I sat with nothing to do, waiting for some work to show up.
In fact, she tried to hire me away, suggesting I come work for her fulltime.
I did consider it a bit. In fact, this was a major turning point in my career (in retrospect). Their overall pace of work wasn’t fast, and everyone was pretty chill and low-key. I thought to myself that a person could semi-retire at a place like this - just kind of show up every day, work at a moderate pace to get stuff done, but never hard enough to get stressed. It could be a nice 8-5 way to make money to fund other things in life.
My “problem” is that this just wasn’t me. I had (very vague) ambitions to “do more” with my life - whatever that meant - and so not only didn’t I accept her offer, I started once again to lobby my boss to get me on a customer that wanted me to do actual work.
That next customer, as it turns out, is where CSLA originated, as did my writing and speaking career. And that’s another post.