My (lack of) employment situation has been going the same way as usual: more downs than ups. Oddly enough, I was the one who put an end to quite a few potential employment opportunities. At the time, I was making a fair amount of money working for that company in Colorado, so I felt like I had more room to be choosy than I normally do.
I was contacted by a company I worked for briefly in the past. I had not enjoyed that they’d put me on an ill-defined project, that they were in a ridiculous hurry, and that they’d cancelled my contract the very first time I told them that a particular feature was going to be harder to implement than I’d first thought. I check the app store every now and then, and the app they wanted me to build was never completed. I told them all this, they didn’t take the criticism very well, and that was the end of that.
There was a game company in the U.K. that wanted me to work on an Angry Birds clone. I had many long and fruitful chats with one of the principals of that company, and I liked him. But I thought their deadline for the project was beyond unreasonable, especially for somebody like me, with no experience in physics games. So I reluctantly refused their contract. I talked to Alex about taking it in my place (hi Alex!), because he does have experience with physics games. But he also thought their deadline was unreasonable. That cemented my decision.
There was another company that wanted me to do an iPad app that would be used by people visiting a certain museum, which explained some of the exhibits. I liked the guy I was going to work for. Just one snag: his company has a style guide that all their code has to conform to. I ignored that bit, hoping that he would consider my obvious talents more than enough to make up for my failing to follow this particular rule. I was wrong. He just about had a cow when he saw my first checkin. He sent me a sternly-worded email about how we needed to have a “serious talk” before continuing. I sent him a reply that said: no, actually, we don’t. And goodbye. And good riddance. (Okay, I didn’t actually say that last part.)
Then I was contacted by this large-ish consulting company that writes web apps and mobile apps for hundreds of different clients. Not just for a contract this time, but for full-time employment. The recruiter that emailed me was polite, and wise to the ways of technical people. Their website showed them to be a hip place to work. And they had no problem with me working remotely from home. Their hiring process is based on giving applicants a coding challenge, and I always ace those. I considered my eventual employment with them to be all but assured.
Their coding challenge was a lot of work. I had to write a hybrid iPad and iPhone app that consumes data via the API of a movie site. After I turned it in, they said they wanted me to fly to their headquarters for a couple of hours for an in-person interview. When I got there, I learned that this was quite unusual for them. “We normally do the code review via Skype, but we knew there was so much about your submission that we wanted to ask you about that we just had to have you come onsite.”
I interviewed with two of their iOS devs for several hours. They had many, many questions for me. They called my submission “the best and the worst code challenge app we’ve ever seen.” They thought I’d done a great job overall: the project was well organized, it handily solved the problem they’d set forth, it was well commented, easy to read, and so on. They part they had a problem with was that it was deeply non-idiomatic. About as far away from Apple’s default house style as you can get. When asked, I had good reasons for all of my deviations, many of them technical. But for them, this was a deal-breaker. I would have to work with all their other iOS devs, and they knew for sure that the whole company was not going to switch to my highly non-idiomatic style. So I was not offered the job.
By coincidence, the iPhone 5 was released on the day I flew to their headquarters. One of the two guys I was interviewing with had gotten one in the mail only hours before. He handed his new phone to me so I could have a look. “So at least you didn’t come all this way for nothing,” he said. This was before they told me I wasn’t offered the job, of course. I guess he knew even then.
I was pretty shaken by their rejection. When the first guy rejected my idiosyncratic coding style for his museum app, it was easy to shrug off. His “style guide” was atrocious. It looks to me like he put it in place because he hires below-average developers, and he was hoping to minimize the damage they could cause. But this new rejection was different. I really respected those guys. They were intelligent and well-informed, with strong opinions. I would have been happy to have them as coworkers. But they decided that, no, my coding style is just too weird for them.
This made me reevaluate where I am going. I’m starting to feel like I am not at all a good fit as an iOS developer these days. It was great for me back when it was the wild west. In the beginning, just getting an app onto a physical device was a major achievement, let alone getting one into the app store. Now it’s a field that has become commoditized. As far as most clients and potential employers are concerned, run-of-the-mill mediocre developers can do about as good of a job as I can. This particular rejection is more proof of that: they were more interested in hiring somebody who would fit into their organization, rather than somebody who was really good. I probably need to move to something that’s a little harder, where my superior problem-solving skills can differentiate me from the pack. Some specific flavor of backend server development sounds good. Like the music recognition farm I built for my last full-time employer.
Then, at the beginning of November, I was offered a long-term iOS contract. It’s with a company I found through the usual job boards, quite some time ago. I’ve talked to them on a couple of occasions, but every project they were going to have me work on seems to fall through. Finally, their bread-and-butter iOS app, for a big famous financial services company, grew in scope enough that they needed to hire another guy full-time to help.
The people at the client company that we have to deal with are a pain in the ass. Name a cliché you can think of about big companies, and I can tell you about the time that somebody at the client company has exhibited it. And the app we are working on is pretty boring. Nobody is ever going to get excited about this thing. The best you could ever say, if we do really well at this, is that the app competently performed its job, and then the user went back to thinking about something he’s actually interested in.
But, you know what, I don’t care. The people I work with more directly, the ones who write the code and the checks, are great. We have a dedicated project manager who deals with most of the heat from the client company. Everyone is highly respectful towards me, and they’re great communicators. The two other iOS developers I work with are competent and easy to work with. They let me get away with my quirky coding style, so long as it’s in code that I am responsible for. I know they’re not just tolerating me, because they make use of a lot of the new stuff I’ve introduced.
There’s about eight people in the company. Every one of us works remotely, there is no central office, so I’m on an even playing field with everybody else. We have a video chat in Google Groups every workday that lasts about half an hour, and a conference call with the financial services company for another half hour. There is no bureaucracy to speak of. I can get away with nearly anything, just so long as I watch what I say when we’re on the conference call with the client. There is some talk about my becoming a full-time employee instead of just a contractor, if they can find enough work for me, after we’re finished with this financial iOS app. I would be totally down with that, because I really like these guys.
And then, another chapter of an old story. You will perhaps recall an earlier story I wrote about. I rather huffily decided to stop working for a company in SF. The contracting company that had gotten me the job fired me over it. I can’t remember if I mentioned or not that they also stiffed me for my last week’s worth of work. Damned if those people didn’t contact me out of the blue, trying to get me to work on the project I started for them. In all the months since I quit, they haven’t persuaded anybody else to work full-time on it. And the occasional contractor they’ve had has only made the code worse. They've busted a lot of the features I had working.
Given the way it ended last time, Steph thinks I’m a fool to even talk to these people. She might be right. They are the opposite of respectful. I’m not surprised they haven’t found anyone to work full-time on it. But this is probably my greatest technical achievement in the iOS space. I wrote a reusable client library for them. I am great at that kind of coding. There were strange technical challenges that you don’t see in most iOS apps, and naturally I conquered all of them. According to the guys at the company, it has been installed on around 12 million iOS devices. And I don’t really need the money, so I can afford to be cavalier about it.
I told them I would give them 10 to 15 hours a week, and that I wanted a raise, from the 40 bucks an hour I was making last time, to 50. They agreed. So now I have a part-time job, in addition to my full-time job. I’ve only put in about ten hours so far.
It’s almost starting to look like I have a career. Now if I can only get enough of a steady income going to move out on my own. I probably would have already, but supporting Steph in college is pretty expensive. I’m glad she’s going, but I’ll also be glad to see her graduate and get a job.