Follow Up to How Not to Hire an iOS Developer

I got a lot of feedback from my post yesterday. One aspect of that feedback was people letting me know that I didn’t necessarily express what I was thinking and feeling quite properly. Wanted to clarify some of my ambiguous statements so that I don’t just come off as an entitled special snowflake.

First off, I did not mean to imply that I was doing this as a practice interview where I had no intention of ever taking the job. I talked to a recruiter a week earlier and was incredibly enthused about the job. I want to work on connected hardware/software products, which is still a rather niche field. I have realized that I will have to consider bigger companies with budgets large enough to do research and development in that area and a lot of what I heard sounded fantastic and right up my alley. But after I had a chance to look into this company I had some deep reservations about going to work there.

The recruiter said all the right things. I have several things on my list of things that I absolutely need to have if I accept a job. Some of those are easier to fulfill than others. I have accepted jobs based on the word of the person I was talking to that those needs would be respected and a lot of times they were not. I actually had someone say to me “Oh, you were serious about that? We thought you were joking.”

In the past I have had more freedom and flexibility to walk away from a bad situation. I live in a relatively cheap area where my burn rate is really low. I could go back to working in customer service or doing something that isn’t programming if need be to pay my bills. I could even swallow my pride and go to my parents with my hand out and ask for a loan, but that would be the absolute last resort. I would prefer not to, but that is preferable to me to moving to the West Coast. My monthly expenses here including my house and my car payments are significantly less than rent anywhere in any of the cities on the West Coast.

I feel that a lot of companies use the relocation stuff as a means of control. There are places where you’re expected to sign a two-year lease on an apartment. Companies pay to move you out there with the understanding that you stick around for a few years or else you’re on the hook for your moving expenses. You think you’re getting paid an awesome salary, but it doesn’t go as far as you think it will and you wind up living paycheck to paycheck. This puts you in potentially abusive situation where your company knows you can’t quit and that gives them carte blanche to abuse you because you have no choice.

I do not like being in situations I cannot leave. I would prefer to be in situations where I don’t want to leave, but I do not want to be trapped in a city thousands of miles away from my support structure with no way to leave if I am being abused.

I would like to move into integrated hardware/software products and design. The nature of hardware, especially proprietary hardware, means that you generally have to be on location. It is the nature of things. However, I will not sacrifice my physical safety and well being to pursue something I can just do as a hobby in my basement.

I acknowledge that if I want to do the things I am interested in doing, I will probably have to relocate at some point. I just do not want to settle and accept the first position that comes along without any assurances that doing so will not result in me jumping off a cliff. I can afford to wait things out and wait for the right thing to come along, and I am going to do so, even if it means taking a non-programming job to get by.

We’ve been conditioned to believe that abuse is a normal cost of doing business. If you want a tech job you have to tolerate being treated badly and run ragged in order to pay your dues to get to the next thing. That’s bullshit. It is not a necessary cost of being a programmer. This isn’t the Hunger Games. We supposed to be working towards creating a product, not trying to survive the harassment and abuse of our coworkers and managers while still putting on a show in the Productivity Theater while not progressing our skills any further. Fuck that. I am speaking out against it because it’s wrong and it is destroying our community and we need to fight back against this and insist upon being treated like human beings worthy of respect. If that makes me a diva, then so be it.

Another worry I have about moving is dealing with my dogs. I have one of my dogs certified as a service animal for emotional support issues. The other one is just certifiably insane. She can’t be left alone for long periods of time. One reason I have tried to get remote jobs is so that I can receive the benefit of therapy time with the service dog while not neglecting the non-service dog or letting her destroy my house.

Talk to anyone who lives in the Bay Area and they will tell you that no one wants a tenant who has animals. I can force the issue for Delia because of the law around service animals, but I can’t for Olive. Finding a suitable living space for both of my dogs would increase my housing costs tenfold.

I will not abandon my dog. When I adopted her from the pound I made a promise that I would keep and love her forever until she died. You don’t just dump animals at the pound when they become inconvenient. That is sociopathic and horrible.

Additionally, by living where I do, I have parents who can watch her while I travel for conferences, which is something I would give up if I moved to the West Coast. I would also have to find another doctor that I don’t hate. I went without a regular family doctor for five years because I could not find one that would actually listen to me. One told me that I probably fell down the stairs and forgot about it when I had weird bruising I was coming in about. Another one violated HIPPA by gossiping in the hallways with other doctors about a local patient who had to be taken to a mental institution. It’s a really stupid, small thing, but it’s that and a million other small inconveniences that make moving to another city a real pain in the ass that you don’t think about until you get there.

I also did not mean to imply that somehow understanding how the computer works is somehow useless. I am not a script kiddie. I care deeply about computer and software architecture. I am learning assembly language. I am learning how integrated circuits and computer chips are designed. I literally want to go all the way down to the metal to understand how things work.

However, I honestly don’t think asking people to implement algorithms in Java is the best way to gauge how good of a programmer someone is.

Code is a tool to solve problems. By focusing on people who are memorizing a list of common questions we use to filter people out of programming, you’re not getting a good feel for how they approach and solve problems.

Maintainable software is a problem I hear almost no one talking about. There are books by people like Michael Feathers and Martin Fowler talking about how to refactor and support long term projects, but we don’t talk to people about that.

Algorithms are especially a stupid thing to ask an iOS developer. I would say 90% of the work out there involves pulling data off of a server and putting it into a table view. You need to have a good grasp and understanding of UIKit and NSURLSession. Those are things you will use every day. Asking how to implement a linked list shows you have some knowledge of computer science but does not demonstrate that you know jack shit about the iOS ecosystem or its architecture. It might be a good programming question, but it’s not a good iOS question.

When you go and interview at a company, it’s a two-way process. I keep hearing people yelling at me about how the company has to do something to make sure I know how to write a for loop and I am not just a poser. It’s about protecting the company from hiring a fuck up.

There is more that I could do to establish myself that I am working on. I know I need to put more code out on GitHub. I know that I have been writing more about the social aspects of programming this year than on actual technology. I want to rectify that.

I have done as much as I can to show that I am not a fuck up. I am the coauthor on several books on programming. I write about tech on my blog. I present at conferences. Those credentials are clearly displayed on my resume. If you Google me there is a wealth of information about the projects I have worked on.

The fact that this company did not take five minutes to look into anything I have done (or even bothered to look at my resume before interviewing me) signals to me that this is not a good place to work. If they’re not willing to do the bare minimum to find out anything about me then I find it offensive that I have to prove to them that I know how to code.

I do not want to work for a company like that. I especially do not want to disrupt my whole life to move to another city to work for a place that does not do the bare minimum of having an interviewer who has a modicum of understanding about the job they are interviewing me for. If the guy interviewing me knows nothing about what I do then how can they make a determination about whether I am a good candidate or not? None of their candidates might be good. I have lived through that experience and it sucked.

When you get a bunch of programmers together who are all pretending to know what they’re doing, it results in a toxic situation where the incompetent people try to sabotage the competent ones who know they are full of shit. I do not want to risk moving my life to another city where an incompetent blow hard can sabotage my job and my career in a misguided attempt to save their own neck.

Taking any job, especially one that requires relocation, is a massive risk. There is a lot of potential for long term personal and professional damage by taking any job and I have been bitten in the ass often enough to be incredibly careful about fully vetting any company I think about working for to make sure I will not be quitting in two months and looking for something else.

This past year I have taken a lot of jobs that did not work out the way I wanted them to. I did not accomplish what I wanted to. I do not want another year like this. I want to do work I am proud of and not just collect a paycheck. I will not stop looking for that or demanding that the people I work for believe in what they are doing.

This company is probably thinking they dodged a bullet by not hiring the girl who doesn’t know what a linked list is. I am thinking I dodged a bullet avoiding a company where I would be miserable. Isn’t that the point of an interview, to figure out that you don’t actually want to work together after all?