I don’t remember how the recruiter from Texas Instruments got my number, but he called me, and we talked.
They had a development team in Dallas which was working on educational apps for Android and IOS, and the manager had just left, and they were looking to backfill the position.
Dallas is not my favorite place. Pretty much at all. However, I really needed a job, and it wasn’t California, so I proceeded.
He put me in touch with the hiring manager. She and I had a good conversation about software engineering, management, QA, release processes, and Agile. After 45 minutes of this we decided to setup a set of phone screens with people in the current development team to save me a trip to Dallas, and if that went well, I would go up there to meet the management team in person.
The phone screens went well. I talked to four people, two of which were fluent in IOS, one in Android, and one was QA. Of course, I could only talk in general principals with the Android developer, but it still went well. These were the last days of being interviewed without whiteboards. I had a feeling I might have to do that if I survived this round and had to go to Dallas.
So, I was told that they would make a decision about how they were going to proceed in a couple of days, by Friday that week.
On Monday, I sent out an email. And then on Tuesday. I stopped then, because I figured that they were not going to proceed with me.
On the following Friday, the hiring manager called me. She told me that TI had just sold these apps to a business in Korea, so the position was cancelled. I asked what was going to happen to the existing development team, and she said that it had not been decided.
It’s amazing how often major change happens with a team when the manager leaves. It often forces management to decide if the product is actually worth the business investment. Makes it hard to get jobs as a manager from the outside. And I did feel sorry for the team; they were probably out of a job. But I’m glad I did not move to Dallas for a team that was disbanded over time. That would have sucked.
A recruiter called me after I started spamming job sites with my updated resume. He wanted to know if I would be interested in an automation position for a defense contractor. I asked if it required a security clearance, and he indicated that it would. I said sure, but I knew it took a while for these things, since one of my good friends does investigation work for security clearance. I asked about what I would be doing before the clearance came, and he said to worry about that when it came time for an offer.
He hooked me up with the hiring manager, and we talked on the phone. They were doing imaging solutions for the Navy, which is all he could tell me. He asked the right questions about my background, and indicated he would be in touch.
The recruiter then sent me a homework problem to work on as part of the application process:
Write a program or script that will find all the files beneath a specified directory in which a serial number is found in more than one file. A serial number is in the format of two capital letters, one dash, and 4 digits. For example AB-1234.
At a minimum, the output will be a list of files.
If file1 contains “AB-1234”, file2 contains “ZZ-9999”, file3 contains “AB-1234”, file4 contains “AB-9999”, and file5 contains “ZZ-9999”, then the output would include all files except file4 since it does not match any other files.
You may use references to look up syntax, but please write the code yourself. There are many ways to solve this. Please explain your solution and the choices you made to get there.
I asked what the preferred language or environment was. They said Perl, so I wrote a Perl script to do the work. Took about 3 hours. I wrote back:
I am enclosing my program.
I tested it my creating the test case described with the example. I also made sure it worked with unicode characters.
I can come up with many other test cases, as well as a perl script to generate them and run the program to test it. However, I am out of time for today. If your client wants me to do that, I can have that tomorrow.
I am also enclosing my updated resume.
(Just love it when I see typos seven years later. “I tested it my creating…”)
Anyway, after a couple of days the hiring manager called me back, and we talked.
“Well, your program basically worked, although it got the sorting backwards. That wasn’t specified very well, though.”
“We also had trouble getting it to work. We had to create a virtual machine and install a new enough Perl plus the modules for Unicode to work. But we did not specify a perl version nor acceptable packages, so that’s on us also.”
He started talking about what next steps were, but honestly, he sounded tense, and uneasy, and not very excited. When he stopped, I piped up:
“Listen. Just listening to you talk about this, I don’t get the impression you are looking forward to continuing the interviewing process. You seem reluctant with every word you are saying. Am I right to say that you really would just not rather continue the process, but you are doing it because I met the letter of your hiring process?”
He paused a long time.
“I would say that that is an accurate assessment.”
I said, “Then let’s stop. If you are not excited about moving forward with hiring me, you won’t be excited about having me around, particularly while waiting for my clearance to come through. Let’s not waste each other’s time here. No hard feelings.”
He said, thoughtfully, “You are perceptive. I was not looking forward to this. Very well, we won’t move forward. Good luck to you.”
Despite the trouble I had getting paid for my work for Rock Systems/Airborne Media Group, I really enjoyed being an independent contractor.
I could set my own hours.
I could still work at home in general.
Any travel I incurred would be paid for by the client.
I could work on a wide variety of projects, therefore learning a lot.
There was a lot of free-lance work in Austin.
The money was really good, at least when I got paid.
Less of a guarantee of continuous work. This mattered because of the mortgage, etc.
Always having to hustle for more work.
Paying my own health insurance.
It was coming up on the end of my current contract. And it was coming up on the date I would have to make my first payment for COBRA to continue my coverage from Coverity.
I could continue to do free-lance, and use COBRA for 18 months, but at that point, I would have to get insurance for me and my family from somewhere.
I also have a professional hobby. I am a part-time musician. I am a member of the American Federation of Musicians. Now, there aren’t too many actual benefits for the musician’s union. I did get two incredible lucrative gigs when I lived in the Bay Area. They more than made up for 18 years of union dues. That had not happened in Austin.
But they supposedly have some kind of health insurance. So I applied.
Turns out it’s not actually a group plan. It’s an individual plan with a hefty discount. I filled out the application for me and my family online.
The next day, a representative from the company called me, and told me that my family was all approved, but I was turned down because of my weight.
I asked her what my weight needed to be, and she told me, but then she said that I could not apply for 2 years. And all of the other companies would ask me if I had been turned down in the previous two years, and if I said yes, they would turn me down also (which, of course, would reset the two year clock).
I asked if there was any way at all I could get health insurance. She told me that I had to go 6 months without insurance, and then I could apply for the Texas High Risk Pool insurance. The premiums were several thousand a month, and the deductibles were very high, and the policy did not cover that much.
So. I had COBRA for 18 months. After that, I was out of luck, even if I somehow lost 50+ pounds.
That’s when my free-lancing career came to a stop, at least as a full-time, long-term strategy.
So, when I accepted the contract for Rock Systems, I was informed that I was a subcontractor, and Airborne Media Group was the main company that Rock Systems was contracting for.
Airborne Media Group was based in Durango, CO. They had designed this system so that one could choose audio from several TVs in a venue like a sports bar and play it back through the headphones on a smart phone. They had one full-fledged customer, a casino operated by the Ute tribe, and they had several others that they were trying to sell.
Rock Systems hired me because the existing IOS app they had was in trouble. It was behind on features and crashed all of the time. I prepared a quality report on the IOS code.
When I flew out to Durango, and presented my findings, I met the CEO and one of the vice-presidents of Airborne. They told that they had been impressed with my work, and quizzed me on my background. They also mentioned that after my contract was up, perhaps I could talk to them about some work?
My boss at Rock Systems was pretty furious; it was bad business to recruit subcontractors out from under contractors. Nevertheless, he admitted that he did not know how long I would have on the contract. He asked me to stay on for another six-eight weeks to work on features for the app; past that, he did not know.
Two to three weeks after I started to work on the new features, the vice-president said that he was coming to Austin, and he wanted me to meet him. He wanted to talk to me about joining them as VP of Software, opening an office in Austin, and hiring a development team of full-time engineers. He asked me if I could spend a whole day with him. I said OK. He also asked if I knew any commercial real estate agents in town. I said I would ask my residential agent, who had been working in this town for 20 years.
I met him at lunch downtown at what people call a “breastaurant”, i.e., the wait staff wore short shorts, pushup bras, and tight tee-shirts, with shiny stockings. It was on 6th Street, the main party street downtown, although in the middle of a weekday, it was just another busy street. During this magnificent meal, he told me that he had had the idea of the AudioAir app running his own bar. He owned the bar caddy-corner from the hotel I had stayed at. He had a couple of entrepreneur buddies, and they had started the company. The decided to contract everything out until they were sure of the proof of concept, but now, they were securing their first round of venture.
Not only would the app play audio back, but the screen could be used for venue-specific ads, and eventually, for bar games and the like. Perhaps a point-of-sale system for the venue?
He wanted to build a software engineering office, and he was not impressed with developers in Durango. Silicon Valley was too expensive, so he wanted to do this in Austin, which he had visited many times.
“How would you setup an office?”, he asked me.
I told him that I would want a staff of 3-4 engineers, 1 each specializing in IOS and Android, and 1 front-end and 1 back-end web engineer, or maybe one full-stack. The site would have TVs all around, and visitors could listen via the app to any of the TVs playing. The TVs would be full of sports. For development purposes, we would need both Time Warner and DirecTV service in the building.
He seemed to like that answer. From there, we walked over to the Bank of America building on 6th Street to meet the real estate agent. Showed us a nice office, but mentioned that it might be tough to get a dish put on the roof. I mentioned that we might have to bolt one next on the wall next to south-facing window, and he said he would talk to management.
The VP and I then parted ways, and he told me he would be in touch.
Meanwhile, I wasn’t getting paid. Rock Systems wasn’t getting paid, so they were having trouble paying me.
And evidently, my boss at Rock Systems was already angry at Airborne, and hit the roof when he found out how far along my discussions with Airborne had gone. There was a lot of angry email flowing, with lots of excuses about having trouble securing funding and the like.
I kept my head down on the coding. Eventually, the first version of the app with my changes in it was released on the App Store, my first published app.
Right after July 4, I got a phone call from the VP.
“Airborne Media Group would like to make you an offer of employment.”
“I am interested. However, until I am paid in full what is owed me, we have nothing to talk about.”
“Oh. How much are you owed?”
I told him to the last penny.
“Yeah, I could see where that would be a problem. Let me see what I can do. We’ll take care of this, and then we can talk some more.”
I never talked to him personally again. The CEO contacted me in email, acting surprised that “Rock Systems would go so far as to withhold payment from you because of a dispute with us”. I told him that Rock Systems hadn’t been paid either, and it sounded like the financial situation of Airborne was pretty dire. Until that was fixed, I was not interested in working for them.
About a week later, Rock Systems told me to stop working on this contract. They eventually paid me, bit it took a while.
A few weeks before the surprise layoff at Coverity, I had lunch with a good friend who came to town. (I talked about him before when I talked about Sound Candy earlier). He was doing both hardware and software for a friend of his in Durango, CO, and mentioned several times that they were having trouble with the IOS application development team.
When I was told on Monday that my last day was Friday, I called him. He said:
YOU MUST CALL JOHN IMMEDIATELY. HE NEEDS YOU. GET IN TOUCH TODAY!
(That’s the way he talks. His friends call him ALLCAPS).
I called John, and we talked. He wanted to hire a consultant to evaluate the code quality of their IOS application. They were doing OK with their Android app; there were plenty of Android developers in Durango, CO, where this effort was going. But they were having major problems with the IOS app. He wanted a resume, and he wanted my going rate.
I had a version of my resume sitting around, and he seemed happy with it, but then I had to figure out what kind of money to ask for. After consulting with ALLCAPS, I came up with a number that seemed really high to me, but John bit on it. A few scanned signatures later, and I was hired. He had to go get me credentials for their source code repository.
I wasn’t ready for this. Coverity was taking back all of its hardware, and that left me with my Mac Pro. Except I did not have a monitor because mine had died and I was using Coverity’s. Plus, I knew I was going to have to go to Durango at least once; I had to have a laptop.
I bought a last 2011 13″ Mac Book Pro, and 3rd party RAM and hard drive upgrades (remember when you could do those?). I brought the laptop home from the Apple store. The upgrades arrived the next day, and got everything installed, and then got the source code. I was officially on the clock.
Now, the only IOS work I had done had been on the side (see Rice University – 2012), but I had done some Cocoa programming at Apple. I at least knew enough about memory management to immediately find problems.
I went through every file of code, line-by-line, and documented around 200 defects, most of them memory related. The developer(s) who worked on this had no earthly idea how memory managedment worked in the Objective C runtime.
I had to learn Objective C 2.0 on the fly, but that wasn’t hard. The app was pretty simple.
I also found out the corporate story. Rock Systems was a contractor; I was a sub-contractor. The parent company was Airborne Media Group, and the app was called AudioAir.
Here’s the pitch for the product.
Let’s say you go into a sports bar, say in Austin on a Saturday evening when the Longhorns game is on the big TV. The announcers are blaring. But you want to watch the Florida State game on one of the other TVs. You can’t here the sound.
So, you download AudioAir, login to the bar’s wifi, and tune in that station, and you can here the audio for that channel!
Actually, as ideas go, it’s not bad.
What it actually looked like:
The customer would have a PC that connected to Airborne’s servers, for account info.
Airborne had custom hardware boxes, built by Rock Systems (with the help of ALLCAPS), which took composite video, and stereo audio, encoded it, and streamed it over the venue’s WiFi.
The Android or IOS app would decode the audio and play it back. It would also show ads for the venue on the screen, including some of which might be interactive.
The initial contract went for three weeks. I got the analysis done and a report written the first two, and then I flew out to Durango.
Durango is amazing. Beautiful town in the Colorado Rockies. I stayed at this amazing hotel called the General Palmer. John took me out in the country, driving to Silverton. I had a lot of fun there.
We also got down to business. People from Rock Systems, Airborne Media, and another company called E7 Systems (which took care of releasing builds) all crowded around while I showed defect after defect. It took about 2 hours.
After I did that, everybody wanted to talk to me. Well, except the IOS developer. Found out he was a junior Java developer who thought he could handle it. He was removed from the project, but he still got to work on other software. Whatever…
That night, at dinner, the executives from Airborne asked me to sit at their table while they attempted to ply me with glasses of red wine (one was enough at 9000 feet), probing me about my background.
The next day, John asked if I wanted to extend my contract, and do feature work on the product. I said sure, but we should do the cleanups I recommended first, and get that version onto the App Store.
So I went home and continued working. I submitted my first invoice. And that’s when things started getting fishy.
John called and said that he could pay about 50% of my invoice, but Airborne hadn’t paid him yet, so that’s all he could do for now. He would catch up when he got paid.
Well, it was better than nothing. My severance from Coverty had been eaten into by buying a laptop and a monitor, so this was not ideal.
I shrugged it off, and continued working.
They wanted me to work on the Program Guide they had. Both TimeWarner Cable and DirecTV had RESTful apis running on web servers built in to their boxes. This meant that a programmer could download program guide information, and do what they wanted to with it. Most of the work doing this for TimeWarner had already been done, but not for DirecTV.
Fortunately for me, I had DirecTV at home, so I could develop this at the house. It did involve setting up a customer site at my house; the prospective customers we had in Austin did not yet have a working setup, and even if they did, I would not have program guide access at those sites. Besides, programming in sports bars is not good for concentration.
I had another network in the house, with a PC to talk to Airborne, one of the transmitter devices, ehternet cables everywhere, multiple TVs and DirectTV boxes in my office, etc. Was chaotic and fun.
Over the next month, I basically finished the feature. And I submitted my next invoice.
John called me. He told me stop working on this. Airborne still hadn’t paid him. He could give me another small payment, but he was paying me from other contracts. Until further notice, Rock Systems was not doing anymore work for Airborne Media.
I asked if there was other work I could do, and he told me that he had some Linux work, but he could not pay me nearly as much because the skills were not in as high a demand as IOS work.
As for ALLCAPS, he called me and apologized. I did not hold this against him, certainly. This was just the start of a very strange rest of 2012.
I think that we can make this work. You would need to come to San Francisco often, probably a week a month.
Coverity was a pleasant place to work. Good people; good work.
I was their first remote employee. I travelled to San Francisco for at least a week a month to take care of issues, meet with my fellow managers, meet with my direct reports, and get the general flow. My team was small, but we also managed an offshore team in the Ukraine.
It’s time for you to start working with the other managers on Coverity Integrity Manager. It’s a few weeks away from shipping, and we need to get a test plan in place, as well as automation.
A few months into my tenure, I was brought in to start work on planning QA for the new flagship product. Unfortunately, this product was a classic case of over-promising and under-delivering. The amount of work was severely underestimated, and the schedule was hyper-aggressive. Toss in a few personality conflicts, and it made the product painful to work on.
Me: You think this is going to ship in October? 4 months from now? I don’t think so. There is at least 3-4 months of QA, and Engineering is not close to being done.
Boss: We are going to be done. The team is stepping up to the plate, doing what is necessary.
Me: I will bet you $5 that Engineering won’t be finished by the All-Company Meeting in October
Boss: You’re on!
I won the bet.
That dominated most of my career the first 3 years. And it caused some major changes in management. My boss became my boss’ boss, and then changed my role to individual contributor. This meant that when the eventual management purge that happened because of the major scheduling nightmares happened, my boss quit, his boss (my original boss) quit, the project manager quit… but I still had a job.
Old VP/Boss: I think that we need to change your role. You have done a great job with your automation work, but I think we need somebody in San Francisco to drive the QA strategy.
I had been maintaining this very large old automation suite that used Jenkins (an industry-standard task scheduling system). However, it was pushing past Jenkins’ capabilities. I started re-engineering this system from the ground up.
Me: It will scale up to 50 times the number of tests. The existing tests will be more reliable, cutting our 10% downtime to less than 2%. It will be able to run on more platforms because it won’t require Java to be installed. And it will be easier to maintain, since all of the code is actually code, and not buried in Jenkins config files.
It took a while. I had hoped to be done February of 2012, but there was still a lot of work to do. In the meantime, I got the best performance review from Coverity to date, and got a large bonus.
New Boss: Thanks for all of your hard work!
We had an All-Hands meeting in San Francisco in March. The new VP wanted us in the office at 8:00 on Monday morning. This broke my normal travel routine; I usually flew out of Austin at 6:30 Austin time, got to SFO about 8:30, and then made my way to the office by about 10 – 10:30, depending on travel/traffic, etc. This time, I needed to fly in earlier. Except that this was the South-by-Southwest weekend in Austin. There were no flights available leaving Austin on Sunday. Nor San Antonio. I talked with my boss. The choices were driving to Houston or Dallas, parking for a week, and taking flights from there, or flying out Saturday (there were very few flights then, either, but you could get one), and staying over Saturday as well, with the company paying for hotel on Saturday. He got approval for the latter.
New VP: So, when will the new system be ready?
New VP: It’s sure taking long enough.
I was almost done with this system. Every one in my management chain up to but not including the CEO asked me about progress on this project. I was baffled as to why there was so much interest by upper management. The new VP of Engineering even made some snarky comments about it to me and a couple of my coworkers at one of the social events. He also made snarky comments about my travel woes getting there. Weird.
I finished the system about two weeks after I got back on a Thursday.
Me: I’m done!
New Boss: Do you have some time to chat this morning?
Monday morning, on chat, my boss asked if I were available for a 1:1 at 11:30?
New Boss: How’s it going?
Me: Great! Looking forward to the next challenge.
New Boss: I have Nicole from HR on the line.
You never want to hear that. It’s always bad news.
My position was being eliminated. My last day was going to be Friday. I needed to ship all Coverity equipment back to them by then. I had no other deliverables that I needed to finish for the week, so I should write whatever documentation I could during the week.
New Boss: I have put in a recommendation for you for Client Services. I think you would be a good fit.
New Boss called me on Tuesday morning. Told me that he thought I would make a great Client Services engineer. These people go to customer sites, install our software, get it up and running, possible writing software to help them out. It’s 50-75% travel, but the pay scale is similar. He said he would put me in touch with somebody from that department.
Later that morning, we had our weekly team meeting, where New Boss told the rest of the team what had happened. They were shocked, naturally. New Boss then proceeded to vent his anger at upper management, and make some pretty biting and cynical remarks about the company. And then the meeting proceeded as normal.
Me: Could you stay on the line for a few minutes.
New Boss: Sure. What’s up?
Me: You need to stop that. You need to stop trashing the company and your management for this decision. The team needs you to be a grownup here. And if the company finds out anything about that tirade you went on, your own career is in jeopardy. I’m already gone. You can’t change it. You already tried. You need to move on, so your team can move on. Go take care of yourself and your team and make my stock options worth something.
The Client Services manager I was to talk to also lived in Austin, but he wasn’t available until after my termination date. “I’ll talk to HR”, he wrote me in email.
HR contacted me. They were willing to extend my termination date by one month, reducing my severance by the same period so I could explore this opportunity with Services. Hooray. Now I got an extra month of health benefits, COBRA, and stock option vesting!
The manager and I met at a Starbucks in Bee Cave, a suburb near my house and on the way to where he lived. We talked for about an hour. We talked about the travel, about the need for social skills, and about the technology needed to do the work.
Client Services Manager: I just don’t think you have the technology skills I need, and I don’t have anybody who could train you right now.
Happy Easter to me.
One year later:
Former Coworker on chat: The overseas person who they were going to have do your work quit six weeks after you left. So that worked out. Everybody thinks you quit because of your farewell mail. They have no idea you were laid off.
Me: Good. I did not say I quit in the email. However, I needed this to be seen as professional and part of life. The tech community is small, and I have no way of knowing if I will ever work with any of these people again. I can’t be seen as hostile. You take care.
I worked on a large complex product at Coverity. The VP of Engineering made a lot of promises about schedule and feature set that were impossible, and the team was put through a death march to try to meet the obligations.
Despite that atmosphere, the management team of the product came together and worked well together. My boss was overall manager of the product. He had hire a good project manager. The QA lead who reported to me was excellent. The software engineering lead was friendly and realistic, despite getting beat up constantly because of the VP’s promises.
The product eventually turned into something fantastic and to be proud of, just a year+ later than the VP originally promised.
Right about the time the product was ready, my boss, the project manager, and my QA lead all quit and went to Hewlett-Packard. I did not know anything else about it; by then I was no longer a manager, and I was doing automation work not connected to the big product.
I went into San Francisco for one of my regular visits, and the project manager got it touch and asked if we could get a drink. So I met him for a beer.
“Nick*, John*, and I would love it if you could come work with us at HP. We are building out a system, and we think your talents are well-suited to some work we need done. You would have a good budget, and you could stay remote. What do you think?”
“Well, first of all, thanks.” I stopped and took a few sips of beer.
“I just got my best performance review at Coverity. And a large bonus. Things are going really well.
“I also don’t hear good things about HP very often,” I said, drinking another sip.
He replied, “Our group is great. I like our management chain; we have Product Management buy in, and customers lined up.”
I thought about how to say what I was thinking.
“I like you. I like Nick. I like John. We did some good work together at Coverity. And I would like working with y’all again. But I am in a good place, and I just don’t like what I have read and heard about HP, both from the outside and from people I know who work or have worked there. I think I am going to have to pass.”
“Well, I certainly understand, but if you change your mind, you know how to get in touch…”
Later, his group ended up in HP Enterprise. And even later, they all went elsewhere. I think I made the correct call here.