Jøhnny Fävòrítê (johnnyfavorite) wrote,
Jøhnny Fävòrítê

i’ve done no harm, i keep to myself

Oh, man. Where to even begin? I put off writing this next episode for a long time, because I had no good news to report, and a lot of bad.

That company that I used to get all my contracting jobs from? They did indeed dump me over the situation with the stupid CTO. I thought about it for awhile, and I guess I don’t mind that much. They were not nice people. Terrible at communication, among many other things. If it hadn’t been this, something else would have put an end to it. So fine, that’s over with.

Then there was the new company in SF that I found on my own, and started contracting with. That was a stressful mess from day one. They had this passive-aggressive project manager that was on my ass every single day over every little thing. “Here’s this huge codebase that you’ve just been introduced to today, and here’s this feature that we want you to implement, and now you owe us a time estimate. And if you’re off by very much, we will be upset about it.” They dumped one of the messiest codebases I’ve ever seen in my lap. That thing has been mauled by five or six different programmers at least. And they expected me to implement major new features in basically no time.

I kept ahead of the mess for about a month. Then I hit a feature that was going to require deep, intimate knowledge of CoreGraphics that I just don’t have. I told them it would take me about two weeks longer to implement than the two or three days they wanted me to do it in. So they decided to end the project. I was deeply relieved when it was over.

I did get paid $3800.00 for my work up to that point, at least. And surprisingly, they said they’d like to work with me again. Probably won’t happen unless I get really desperate, though. I do not relish having their harpy of a project manager on my ass again.

And with that, I was out of steam for awhile. No new prospects, and not much energy for cultivating new ones. For the first time since the beginning of the year, I wasn’t working. That lasted for a couple of weeks.

Then I discovered this web site that connects startups with potential employees. I don’t know what the deal is over there, but suddenly I was Mister Popularity. I got messaged by like eight companies that were “interested to meet with me,” to use the site’s terms. Most turned out to be poor matches or flakes, but that’s to be expected. There are still a couple of companies from there that might work out for me. I talked to one of them for the first time today. They seem mildly interested in having me do a small contract job for them, as a prelude to possibly becoming an employee.

Early in my contracting career, I made a half-hearted stab at oDesk and Elance. I quickly discovered that both sites are geared more towards slave labor than anything. oDesk in particular has just completely unreasonable jobs on offer, the types of employers who want you to build them a Facebook clone for 200 bucks. oDesk has since shut down my account for non-activity. Elance seems slightly better. I never got any work from there either, but the potential employers seemed slightly more sane. I still get the occasional request for a bid from there, but it is almost always somebody who expects an unreasonably large amount of work in an unreasonably small amount of time for an unreasonably small amount of money. So I turned them all down.

Until a week ago. I got a bid request from a guy who wanted an almost comically simple app. Basically a wrapper around an HTML page that he would provide. Apart from displaying the page in a UIWebView and allowing the user to interact with it, the only other thing I had to do was provide GPS-style location updates via iOS’s CoreLocation framework. I guess the app is mostly ad-supported, and it provides deals and coupons and so on for a small skiing community in Colorado. His acceptable price range: one to five thousand dollars.

I didn’t make a real effort to estimate how long it might take to build. Instead, I decided to go for the middle of his range: three thousand bucks. Not too cheap, not too expensive, I thought. I figured I’d for sure be outbid by the rabid sharks on Elance who will tell you with a straight face that they can indeed write that Facebook clone for 200 bucks, easy.

Less than 24 hours after I placed a bid, I was talking to the guy on the phone. I heard a lot about his app, future features he might want to add, and what a stinking mess the existing version was.

One thing I’ve discovered from all this contracting is that I just plain HATE having to deal with other people’s shitty code. The jobs I’ve liked the best, and the ones where the clients have been happiest with my work, are the ones where I get to start from scratch. I can leverage my existing code libraries, which I’ve built up from years of iOS experience, so the first version tends to get off the ground faster than they’re used to. And not to brag too much, but I am almost constitutionally incapable of writing bugs. My shit works, yo. Win win win, all the way around.

However, if there’s already an existing version of the app, it’s pretty much guaranteed that the client will force me to use it. They tend to get emotionally attached. In their minds, I guess it must go something like: “I spent thirty thousand bucks getting to this point, and you are DAMN WELL going to use that code I bought. Because otherwise, it looks like I just wasted my money, doesn’t it?” This despite the fact that, in the long run, it’s probably cheaper to let me rewrite it, and far less stressful. If I’m on the project for any length of time, that’s going to happen anyway. But whatever, that’s one of these people’s emotional needs that I just have to deal with.

I was expecting the same thing this time. The guy has an existing version of the app, so I figured he’d make me use it. He said I could start with that version of the code if I wanted to, but apparently, his revulsion for the project so far is so great that he discouraged me from doing so. He didn’t say so in so many words, but I felt he was thinking something like: if you start with this shitpile of code, I am very afraid that these same shitty bugs I’ve been staring at for months will persist for all eternity. So not only is he overpaying, but I get to start from scratch.

We talked for an hour. He got off the phone and immediately approved my three thousand dollar bid. Apparently, I should have asked for more. From what I can see on Elance, the guy didn’t even offer the job to any other programmers.

I finished the first, crude version of the app in three days and roughly six hours of development time. I used Testflight to get it installed on several phones within the guy’s company. He played with it for awhile, declared the first milestone met, and agreed to release the first thousand bucks of the money.

Now, call me crazy, but damned if this doesn’t seem too good to be true. Why didn’t he offer the job to anybody else? Why is he willing to drastically overpay? I still don’t know for sure, but I have my theories.

I think the guy just got straight-up screwed by his last programmer. Based on what I’ve heard, the programmer was not capable of doing the job. His app crashed a lot and almost never reported any location updates. Worse, the programmer apparently had other priorities, and was not responsive to bug reports. That got my client to thinking that this must be a harder job than he thought. He really needs this app to work, so he was willing to spend his way out of his problem.

I can convince myself of all that, but it still doesn’t explain why he didn’t offer the gig to anybody else. I am for sure not the only iOS programmer in the world who could have taken his money and done a decent job with this. So I’m still a little paranoid. I am definitely not going to release the source code until that first thousand bucks clears my bank account.

Somewhere in there, I had a job interview with a local company in Nashville that does mobile projects for all the major types of phones. I knocked on the front door of their office and was greeted by a dog, which was a good way to start. I think it went pretty well, and I liked the people I interviewed with. However, their tendency is to hire green kids right out of college and pay them next to nothing. I said I wanted $95k a year, they said they tended to pay new people closer to $55k. They said they’d think about whether they could use someone with my “senior capabilities” in their organization or not. I guess the answer was “no,” because they emailed a few days later and said they are no longer interested.

I also had a couple of phone interviews with a place that is what I am going to call a “pure telecommute” company, which makes mobile apps for trade shows. Everybody there has to work remotely, because they don’t even have a central office. Just my kind of place. I liked the people, and I loved the telecommute aspect. I wanted to work with them, so when they got to the salary question, I said a lower number: $80k. They said that was higher than most of the people they were talking to, so I guess they also went with somebody cheaper. Dang, I thought iOS programming was supposed to be a lucrative career specialty.

So. I am not out of the woods, but I am also not out of the game. I can still get a little action going here and there. I think I’ve convinced myself that contracting is not a good long-term option for me, though. I don’t have the stomach for it. I want to find some startup to hire me full-time and let me work from home. Yes, that’s a lot to ask, apparently. But I don’t think it’s out of reach. So I keep plugging away at my goal.
  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

When I get one of those legacy projects, I like to quickly read the existing code and try out the program, taking notes on what I think is good. Then from that, I make a feature list and rewrite the whole thing, stealing bits of code or just ideas from the old program, if there are any that are worthy. The failure point isn't code now, it's training users to use the new simpler way of working when they've learned the old system and its convoluted accreted procedures.

Meanwhile, I too am out of work, which is my excuse for starting the next sabbatical.

By the way, I did finish http://www.artechstudios.com/cloudship/welcome.html which is now out, and unnoticed in The App Store. Looks like there are just too many things coming out, 140 on the day it was released, for anyone to try the new Apps. Which makes Playbook look good (smaller fishpond).


June 1 2012, 05:27:23 UTC 4 years ago Edited:  June 1 2012, 05:32:39 UTC

so are you out of work for good? that place you've worked for a decade or more finally cut you loose? or are they just seasonally out of anything for you to do again?

dang man, that app looks really good! must be a crapload of opengl in there. how much of it did you write?

i notice your app requires ios 5.1. is that a real requirement, i.e., there's some ios 5.1 feature you really needed to make the app work? or are you just being lazy? (heh)

you remember that time, years ago, when i was trying to master opengl for a potential employer's idea, and we were talking about it? that was way back in the usenet days. i've spent decades teaching myself whatever techie thing i need to know right now, but opengl is the first and so far only topic that has defeated me. WAY too much new math to learn. i had to tell those guys i wasn't interested after all.

i wouldn't be so down on your app's potential success just yet. everybody will tell you that the ios app store is hit based, and that does indeed seem to be the way most people focus their efforts. they write cheap 99 cent apps, expect to make all the money in the first few weeks of release, then move on to the next thing.

well, my ios card game is an obvious exception to that rule. it's been out for three years now, and it is still very steadily making money for me. it would make even more, if i'd put any time into it. it's not pretty, but my card-playing robots are the best in the store. i can only conclude that it is getting around via word of mouth.

if you can get a core nucleus of fans to play, you might get a slow-burn hit yourself, if it's any good.


June 4 2012, 16:39:45 UTC 4 years ago Edited:  June 4 2012, 16:48:00 UTC

They seem to have run out of work, and are now running as a virtual company. Could also be a good time for the founders to retire, though if they get a big work offer they may restart. Meanwhile a host of small new companies are in town, selling out a gaming convention last week http://ottawagameconference.com/ even though admission is a few hundred dollars.

I wrote just some of the OpenGL, our rendering guru did most of it. There aren't too many OpenGL calls in the game code since most of the heavy work is done in our more generic engine (originally DirectX based). We just needed to write texture management, shader loading and triangle rendering code. The game programmer just works with game objects and their behaviour plug-ins.

No, iOS 5.1 isn't a strict requirement, but I'm happier using a more recent version, since they overhauled OpenGL in 5.0. Also since it requires iPad2 and later, there's no worry about supporting older devices which might be limited to older iOS versions.

Yep, the App Store is definitely hit based. So's most entertainment, from movies to books. Similarly there are way too many new items being produced every day for anyone to find the best.

Interesting to hear that your card game is still going. Wish we had better gameplay, more of a sim would be nice, but what there was (a combat system) got taken out and simplified to make the release date. I wanted to do a Sim City style system. We now just have a simple Crystal harvesting economy, where crystals correspond to rendering horsepower (fixed economy size so you can't build more items that the number which would slow the frame rate below 30).