Getting a job as a developer

 I want to jump off track here and talk to you about finding a job.  Trying to earn a living on your own apps is hard and it’s ok to take on a development job while you are trying to build your portfolio.  I’ve had this experience and I want to tell you more about what I’ve been through so you won’t feel alone because I know I’m not the only one with some of these stories.

 I was informed that my current position would be ending in six months, at the end of the year.  No problem, six months should give me plenty of time to find something new right?  After all, I have a proven portfolio of 12 apps in the store right now, all of the experience I’ve been describing to you and my resume of successful projects and connections.

 I have two more weeks until Christmas and I still have no offers.

 I have no trouble getting call screens, I’ve had several second calls, I’ve done sample projects for multiple companies, I’ve done a two week trial, I’ve done live coding, etc. and all of it resulted in no offer over something trivial every time.

 Before I get into the stories I want to make sure to warn you about recruiters.  Do not trust them, do not sign anything they give you until you have an offer from the company they are trying to place you with.  Do not trust them if they say they will reimburse you for travel, because they won’t.

 Diversent was one of the recruiting companies that did this to me.  I talked to them every day for a week while they set me up with an interview in Denver.  They were on top of everything.  This was a direct hire position, I did a phone screen and they asked me to come in for an interview.  I was 8 hours away in Salt Lake City at the time.  They told me that if I got the job they would reimburse me 100% of my expenses for the interview.  If not, 50%.  So I rented a car, drove 8 hours to Denver, stayed in the hotel they recommended, did the interview and drove 8 hours back.  I never heard from them again.

 How did the interview go?  At the time I was confident but it was actually a waste of time.  They were looking for someone with a lot of experience with multi-threading, memory management and knowledge of the inner workings of Swift.  Things that I tend to manage with server side updates so my apps do more display and less data management.  We weren’t a fit, it happens.  They still owe me money that I plan to collect.

 Job hunting sucks.  When I was right out of college I emailed my resume to three offices, I didn’t even look for job listings.  All three gave me interviews and job offers.  You know how much free work I had to do for each?  None.

 Now, you go on LinkedIn and apply to everything in your search results.  You hear back from maybe 20% of them.  15% are rejections because someone was ‘more qualified’ whatever that means.  Then you talk to a ‘recruiter’ wether it’s internal or not, who asks you a bunch of questions they don’t know the answers to about the language you program in.  Then you may hear back based on the notes they took.  If you know how to be really personable over the phone, your callbacks will go way up.  This part I’m good at, so I often get the second round call.

 Next they ask you to do a sample project.  This takes time, sometimes days.  The simplest is to fix some bugs in an app they send over, the worst is a ‘start from scratch and be creative’ type of project.

 Sometimes you do these, send them in and never hear back, other times you get the honor of a video call from their lead developer who doesn’t take the time to understand what you did a week ago while telling you that you are updating the UI from the background thread.  Explaining to you that you did everything wrong while you do your best to be polite about their choice of framework, because anything negative from you and you won’t have the job for sure.

 If you don’t get the ‘free project’ type of treatment you may get the ‘live coding’ challenge type of video call.  These are the worst because they don’t give you anything that you would ever do on the job, instead they give you ‘algorithms’ to solve.  I’m sure you could do this any other time, especially because no developer works in a vacuum with no access to documentation or Stack Overflow.  Not to mention the added pressure of two or more people who know the answer already watching impatiently and calling out ‘hints’ that constantly derail your concentration.

 I don’t know how much video calling you do where you share your screen, and I don’t know how much you use Swift Playgrounds but I never do either.  So when I have to deal with getting all of that working and coding in a different interface, all while my machine is processing the video stream and not autocompleting for me as I code it’s just a horrible experience.  This isn’t a good measure of my skills and it isn’t taking into account any of my 20 years of coding and on the job education.

 I guess the thing that irritates me most about the free work and live coding is that it’s a sideshow.  They just want to make the ‘new guy’ dance for everyone.  It’s similar to hazing and ensures that each new hire is always considered beneath the ones before.  It’s not a two way review, it’s unidirectional.  There is no taking into account the fact that this person is smart, has created working projects and can be taught any business specific things they need to know for the job.

 And the last bit of sneakiness that I’ve encountered is the ‘trial period’, mine specifically with Automattic, the makers of Wordpress, WooCommerce and other things.  After completing the hour long live chat interview and being invited to do a code test where I fixed then updated a feature in an app, I had the typical code review.

 The review was a chat of all of the issues they had with my code test.  There was apparently a crash if the app ran in iOS 12 but not 13.  I didn’t test in 12 because my recent update of Xcode which took a day removed my iOS 12 simulator which was going to take another day to download.  In the interest of keeping up with my current job and getting the code test done in a reasonable amount of time I felt this was the best course of action.

 I also had a delay in items showing in my tableview because I made the decision that it was better to load each cell after it’s assets were available rather than haphazardly as they came in.  The delay was minor.  I was invited to do a trial with them at which point I received a copy of their Conflict of Interest document.

 I’ll get into the conflict of interest topic in a bit but it took me over a week to clear everything I do outside of Automattic with their HR and Legal team.  This blog was on the chopping block in that process because their rules do not allow any outside income unless it is approved.  I had to tell them how much I made from my personal apps, why I had my own LLC, etc.  More on that later.

 I received the details of the trial and a Trial Contract where I would be paid $25/hr for 40 hours of work on a schedule that I could define.  I would be assigned a project and a ‘trial buddy’ to answer any questions I had.  I now had two jobs, 40 hours full time and another 20 hours part time per week.

 I asked for feedback from my first commit.  I was trying to commit my changes daily, complete or not and it was my first time working with GitHub as my remote repository.  My feedback request was answered a day or so later with issues being flagged on things that were not yet complete.  I was concerned with the overall animation, they were concerned with the details of it.  I had to deal with code oddities between the parent view controllers for my animation, the fact that I was completely new to the code base and the added challenge of trying to finish the feature with very little breaks from programming in my 60 hour week.  I was getting forearm cramps from typing so much, I was spending time on the weekends to try to get ahead and the feedback was coming in very slow.

 As I wrapped up the ninth day of my trial, I let my trial buddy know that the next day was my last day.  I was told they would review my work and get back to me Monday.  I was now over a month in dealing with Automattic and had moved forward every time.  I had taken all of the feedback that I did receive and resolved all of the issues that were brought up.  I was expecting an offer, instead I was told that my trial was ending because I had a bug in my initial code test, they didn’t like my initial animation of the new feature and I didn’t fill out my pull request to their standards.  (A business rule that can be easily learned.)  And I thought the trial was ending because it was for forty hours.  Apparently they keep you on trial until they are ready to bring you on full time, so they apparently keep an endless $25/hour queue of developers who are worth far more.

 I don’t have much nice to say about Automattic after that experience, but I will say that it was the most pleasant of all of my interviews so far other than the long drawn out tease with no result.  If you asked me if you should do a trial with Automattic, I would tell you not to waste your time.

 Let’s get back to the more asinine calls I’ve had because they are funny now that I look back on them.  To date I’ve had 25 calls after submitting hundreds of applications.  I probably submitted 30 the other day alone.  The first call I had was three days after I learned that I needed to start looking for a job.  The first call to go sideways was two days later.  Let’s talk about that one because I think there are some important lessons in it and they relate back to the Automattic Conflict of Interest policy.

 I had a call with Los Alamos National Laboratory.  I found the job posting on their website and thought it would be amazing to work there.  I met some people who had retired from there last summer and they told me I should apply.  They seemed to love working there so I started watching the site from time to time to see what turned up.

 The call started off well enough, we talked about Swift and Objective-C, normal code type things until they asked me if I had any experience with Search Engines.  Of course, I use Google and Duck Duck Go all the time.

“You have experience with programming Google?”

 Now I’m confused.  Technically I have experience ‘hacking’ Google to achieve a #1 ranking for ten years straight and breaking their search display that had the map with the local listings marked on it.  (That was fun 😜)

“Have you worked with SOLR?”

 OH, why didn’t you say that to begin with.  Seriously, I’ve been asked some very vague questions that could have really used some clarification.  SOLR is the preferred in house search system for government (and government related) systems.  They used this when I worked in the Museum in DC and the only time I ever interacted with it was when it broke.

 There were a few questions that I thought were odd on that call but the most bizarre thing was when I was able to ask a question.  Of course my question was, “Would there be any issues with me having projects outside of Los Alamos if I was to work there?”

 I expected a ‘No, of course not’ but instead I got, “Yes, once you start at Los Alamos, anything you do outside of work belongs to Los Alamos.”  WHAT?!  How do they legally justify that?

 Even better, one of the developers on the phone says, “What? We need to reconsider that policy.”

 LOL, so now I’ve kicked off some internal struggle.  The guy in charge then responds, “It’s a slippery slope.”

 So then the worst part of the call.  They asked me, “Why should we hire you?”  And now after that last exchange I am completely lost for words.  I need the job and I really want to work there but there is no way I’m giving up my freedom to make apps for myself.  It’s what I do for fun, I really enjoy it!  So my answer was a very sheepish, “Well … I’m funny?” to which they responded, “Great answer.”

 You know what, it was a great answer.  It’s much nicer than what was going through my head at the time.  Think about this:

  • the job is to develop apps that are mostly for internal or government use that you can never disclose to people.
  • any fun apps that you do outside of work become theirs even though you are not compensated for the work.
  • I’m assuming that after you leave the job and go somewhere else the same thing applies because you can’t use what you learned at Los Alamos outside of Los Alamos.
  • in my mind they need to compensate you for that loss of income potential but they don’t.
  • There is no pension plan for Los Alamos anymore.  I learned that from the people I met the year before who were happily living on their pension plans.

 So yeah, that was a great answer.  It’s much nicer than what I should have responded with.  You belong to the job but there is no compensation for what you have to give up.  Automattic’s document was almost as bad, but once they learned that I wasn’t making much from my apps (yet) they said it was ok for me to have them.

 I have a fundamental belief that a job is a job.  That’s it, you don’t belong to who you work for and they do not have any ownership over what you do outside of work.  These weren’t the only companies I talked to that suggested this would be a problem, but these two were the worst.

 The next set of calls were the trolls.  The guys who ask what they think is a clever question but in reality it makes no sense.  They then get upset when you ask them to clarify.  I had a call the next week with USAA bank.  My bank in fact, and I thought this would be cool because I could work on an app that I actually use regularly.  After introductions and greetings one of the managers asks me, “How do you make an abstract class in Swift?”

 Now sure, if you just came out of college learning iOS development and Swift you are probably familiar with the term ‘abstract class’ but in my case I’m entirely self taught.  So I said, “I’m not familiar with the term, can you rephrase the question?” to which I got, “How do you make an ABSTRACT CLASS in Swift?”

 This is when you know that there is no point in continuing, but of course I’m trying to be polite.  He then drops the bomb, “Have you heard of a protocol?”  Seriously, nearly everything in Swift has a protocol.  I have 12 apps in the store of my own and 5 more for my full time job.  But apparently my vocabulary is what disqualified me from this position.  Again I was too polite but the call ended soon enough and I’ve moved on.

 Oddly enough, doing a search in Google for ‘abstract class in swift’ brings up the highlighted result:
 The other troll was the one in Denver that Diversent still owes me money for.  The question was, “How do you make two things act the same?”  Yes, that’s the actual question.  Do you know what the answer was?  Protocols.  No kidding.  Of course at the time I’m thinking, why would you want two things to act the same?  Why not just have one thing?  What’s the purpose of making things be the same?

 I’ve thought about this one and I think the proper way to ask this question would have been, “How would you provide the same behaviors to multiple classes?”

 It got worse though, these guys were very into their queues, both serial and concurrent.  They mainly focused on that, throwing in cryptic questions like the first one about delegates and callbacks.  I know they all thought their questions were clear but seriously they should do some focus group testing around the office before their next interview.

 When I initially gave my background and said I started programming with PHP 4, the troll said, “I thought PHP was cool until I saw my first real language.”  He was probably in Middle School when I built my first cart system and earned a pretty good living off of it.  I asked them for feedback at the end of the interview and was told that I had spent too much time as an independent developer.

 If you are going through the job hunt like this, just realize you are not alone.  This isn’t an easy thing, it takes many months. You have to have personal projects in the stores before anyone will consider you at all.  You have to do some sort of Open Source to show them what your code looks like.  You have to shake your little ass when they ask you too, and take all of the insults without defending yourself or your work.

 You have to spend full days spamming the job boards and answering questions in applications like, “Tell the team why you would be a great fit for the job!” which is stupid because you don’t even know anything about the job yet.  

Here are the dummest questions I’ve seen on applications lately:

  • Why are you applying for this job?
  • If you were announced into a room.  What would your theme song be?
  • What is the most challenging thing you have accomplished?
  • What question do you wish they would ask you in an interview?

 Your response rate for applications that will give you an interview (not a screen) is going to be 2% or less.  Applications that ask you questions like these are in the 98% that you will never hear from.  If they ask something like this, just move on to the next.

 The next set of issues I ran into from a conversation I was having in an initial phone screen.  Two things happened in this call that made me decide that I had a new rule for phone screens.  First, I gave my elevator pitch and some background.  I was cut short by the interviewer who then told me his background.  That was odd to me because it should have been about the company, not this guy.  Until he dropped the, “I used to work at Google” line.  Then I got why he was so eager to jump in.  I was out at that point because I didn’t want to work for someone who was so self centered.  I never did hear anything about the company from him.

 The second thing that was odd in that call was that he asked my personality score, if I knew it.  I have two problems with this:

 1. I consider this a psychology related value. Meaning it’s medically related.
 2. This pokes at untested HIPAA issues if we are going to take psychological evaluations into account in job interviews.

 Traeger Grills in Salt Lake City actually required an online evaluation by predictiveindex.com as part of their application.  There was no indication that the results would not be made available to me prior to them being complete so I did the evaluation.  Instead of showing me the results it simply said that they would be delivered to Traeger and if I had any questions to email them.  I will be following up to obtain a copy of the results for my records.  Especially given that I applied and never heard back from them.  I should have applied the above rule, the one concerning stupid questions in applications.

 So far in the past few months I’ve had my past twenty years of experience disrespected, my time taken for granted, I’ve been cheated, tricked, taken advantage of and been evaluated both professionally and medically.  And it’s not over yet.  I have an interview at Google in a few days, the 5 hour kind in person at their HQ.  So they are flying me out, putting me in a hotel, running me through all of the above in a single stretch in person and flying me back again.

 At least this time I am prepared for just about anything and I’ve been using algoexpert.io to prep for the bizarre technical questions that I now fully expect.  If you are running into these algorithm questions as well I recommend prepping with this site.  It’s about $80 for a full year’s access but the information is really good.  You can use my affiliate code “nlncx-50” to get 15% off.  Once you sign up you can get your own affiliate code to pass around as well.

 I’ll get back to you about the Google interview, if anything I will at least have the experience.  Wish me luck.  In the mean time go ask your lawyer friends if they have to write sample briefs for job interviews, or if you know a doctor do they have to do a demo surgery.  My brother owns a construction company, you think he has to do sample work before picking up a contract?  I’ll ask.

 I also interviewed with DJI, the Chinese company.  Their technical interview was basically a bunch of questions with their lead developer about Swift and Objective C.  If you are anything like me you know the language just fine but you may not know all of the technical titles to each of the features.  That’s my drawback.  So having 12 apps in the App Store isn’t enough proof, you have to also know algorithms, terminology and basically everything about everything.  While talking to the DJI lead developer I learned that he has never actually flown a drone.  So apparently you don’t have to know that.

 Interviewing with Walmart was interesting as well.  I got through the recruiter and the tech interview and was asked to complete a sample project.  This is one of the ‘from scratch’ projects that takes WAY longer than they tell you it will.  It’s also the one that requires you to give your name, address and email in order to get an API key which I think is just uncool because requiring delivery of personal information to a third party as a requirement for an interview is just bad.

 I was told that the team at Walmart determined that a senior level developer could do their code challenge in three hours.  Maybe so, but the problem is that you and I both know that if you do the project in three hours they will ghost you for sure because you didn’t include an icon, you were not caching images, etc.  So I spent 18 hours on my version.  I added the two developers as collaborators to my private gitHub repository and emailed to let them know it was done.  I never heard from them again and they haven’t opened the project.  I know because I added firebase to protect my API credentials and it includes some basic analytics.

 They asked me not to make the sample project public because they wanted it to be fair for all of the people they interview in the future.  But seriously, they didn’t bother to review it so I made it available publicly so I can share it with other companies that may want to see a sample project so I won’t have to waste another 18 hours for them.

 My favorite role so far has been the one that I applied for with CVS.  The best part is that the job doesn’t require any coding.  That’s right, developer skills without having to develop anything.  It’s a Developer Architect role where you basically make sure that everything the product team wants is feasible, and everything the design team wants is doable.  You also communicate to the development team to suggest how features should be developed to ensure that future features will not be a large burden to the team.  Basically an in house platform expert to attend all of the meetings and protect the developers from any chaos.

 The reason that one is so awesome is that there isn’t any stupidity in the interview process and there won’t be as much stress in the actual job.  To be honest with you, doing all of these interviews and coding tests has made me enjoy coding much less.  The measurement of your skills is not your accomplishments but all of the BS the team can make you do on demand.  It’s insulting and exhausting.  The good news is that the Walmart code test is done and that’s the one I’m going to pass around to anyone else who wants a demo project from now on.  I’m not spending 20 hours per application to get an offer, they can take that 20 hour project and judge me on that.  At least it won’t waste any more of my time and it will finally give me time back to work on my own projects.

 Also, good news on the five hour Google interview.  Honestly it wasn’t so bad, I actually had fun.  I learned a lot about Google, met a bunch of their team and the white board sessions were challenging and interesting.  If you get the chance to interview with Google be sure to prepare but don’t be afraid, this one was the best experience so far and they reimbursed me for my expenses within a week.  I will say that their overall process is much slower than everyone else.  I started talking to them October 17th, I was onsite December 4th and it is now December 25th… I had good feedback and have talked with a team but I still don’t have an offer or a conclusion at this time.

 I finally heard back from Traeger Grills after only 26 days.  They sent me a robo-interview email via HireVue.  Basically you sit in front of your webcam and answer questions on camera.  This is bizarre, I don’t even get to see and ask them any questions.  It’s very impersonal and probably the most awkward thing I’ve been asked to do this entire time.  Oh, and this is delivered to my inbox at noon on December 23rd.  Shouldn’t spending time with family at the holidays be important to a company that sells high end grills.

 I did the robo-interivew.  It doesn’t work with AirPods which is annoying because I prefer them over the wired version.  The robo-interview was just as bad as it sounds like it would be.

 • You don’t get to ask any questions
 • You don’t get to interact with a human
 • You are the only one on camera … uncomfortable

 They asked me why I wanted to work for them.  I don’t know, because I really don’t know anything about them.  I’ve never talked to anyone on their team.  It seems to me that they are working on creating a toxic environment, simply because their current team is unwilling to have any human interaction with the people they may be hiring.  They can’t possibly be interested in their customer experience if they are this bad at their hiring experience.

 There was a survey at the end.  I’m not sure if it was for the HireVue or Traeger Grills.  … I was honest.

 I also had a second technical interview with CVS, but this time I was the only one with the video enabled.  That and I was asked pretty much the same questions as the first technical interview.  I guess it’s not much different than a robo-interview, if you are going to be the only one with the camera on.  From now on I’m always starting with mine off and playing it by ear.  If anything it saves my bandwidth.  I was really hoping for a different conversation as well.  Strange that they had a script, I’m not sure what you can really learn from that kind of setup.

 In general I have an opinion about interview questions.  I think all of the questions that focus on negative things are horrible things to ask.

 • “What is your biggest failure?”
 • “Tell me about a conflict you had and how you handled it.”
 • “Describe a time when you were unable to deliver a product on time.”

 I’m not a negative person, and I don’t believe there is any positive information you can learn from asking a negative question.

 Anyone who has ever had any experience in sales, knows that anything negative that happens during the sales experience reflects negatively on the seller.  Even if the seller isn’t at fault.

 If you are hiring, you are selling your business to potential employees at the same time.  Introducing negativity into the discussion at all will reflect negatively on your business.  In the end it may have the result of making your cost to hire new employees go up.  Take my advice and remove the negativity.  If you don’t believe me, re-read this section and tell me if you see anything negative about Google, they didn’t ask any negative questions.

 This has been my last six months.  I have had almost no time for my own projects, my family or anything else due to the unpaid extra work required as part of job interviews.  I read on LinkedIn yesterday where some career coach said it will take one month, per $10k that you are asking for, to find a job.  That’s stupid, so a CFO that makes $2M spent 200 months looking for the job?  I don’t think so.

 Ten days after completing the robo-interview for Traeger Grills, I got an email saying that they wanted me to do an on-site interview.  I still haven’t talked to anyone or been able to ask any questions about the company, it is all very one-sided.  They sent me an empty calendar to select my availability, but keep in mind that I would have to fly to Salt Lake City for this, so it’s not like marking out an hour of my day, everything on my end has to stop.
 It’s been over two months since I applied, and I’ve picked up a several month gig in the mean time so I let them know that I wouldn’t be available for four months.  They responded by telling me they needed someone immediately so “All the best in your search!”.  In the two months since I applied for the position, that was the first time I was able to ask a question.

 In the mean time I heard back from Google, I can expect an offer, then I just need to find a team.  I know all of the ‘sample projects’ and stupid questions that everyone has been asking comes from what they think Google does.  I remember when I read about Google’s interview process years ago and it wasn’t long after, that the UX Designer I was working with started giving ‘homework’ to job applicants to test their abilities.  In reality it was establishing her as the ‘expert’ to any new hires, they wouldn’t have made it past our HR if they didn’t have the skills or experience to interview for the job.

 Every single company that I have interviewed with so far simply has it all wrong.  The wrong people doing the interviews, the wrong questions, the wrong process.

 This is the point where I start to equate the hiring process for tech to the professional equivalent of hazing.  Because if a developer has even a single app in the App Store or a College Degree, or code on GitHub they are qualified to do the job.  If they need some on the job training to get up to speed with your team, or your business rules, that is entirely normal.  So the only purpose of having someone ‘live code’ in front of your team, or put together a rushed demo project, is to allow your existing team to publicly judge the new hire and assert themselves as superior.

 You can spare me the argument that you need to see someone write code in order to determine if they are qualified, unless you are the type of company that requires your new hires in accounting to ‘live audit’ some sample books or fill out some demo tax forms to prove their skills.  There is no argument to be made that the work the accounting team does is less crucial to your business than the work the developers do.  You can patch software, but ‘patching’ your books is a much more sinister practice.

 Your codebase is probably above the beginner level, but if you are bringing in interns or your developers are any good at all, they should have no trouble helping a new team member get up to speed.  When it’s my turn to hire, I’m looking for the scrappy self taught developers who are not afraid to learn and can get things done just to conquer the challenge.  I don’t care if you can solve some algorithm, I want to ask you for a feature that initially scares you.  Then I want to see you gloat as you demo that new feature to the rest of the office.  The only two things I care about are:

 1. you are not a jerk
 2. you believe in your abilities

 Things will work themselves out after that.  As long as you are willing to learn and are interested in the job, everything will be fine.  There is no developer that I have ever met that was unable to learn a new skill.  Our jobs, our languages and our architectures change almost constantly.  If you have been a developer for any period of time, all of the above experiences should be insulting to you.  Just know that you are not alone if you have had or are having experiences like this.