Ben J. Christensen

Software Development and Other Random Stuff

My Job Hunt – How I Ended Up At Apple

I started working for Apple in their iTunes Store division on December 14th 2009. It’s been a great 6 weeks so far and I look forward to a long and interesting future here at Apple.

Considering the state of the economy and job market I consider myself blessed to have gotten such a great new job – but I worked hard in my hunt and thought it might be of use or interest to others what it took to find a new job.

So, my job hunt “by the numbers” …

Time on Hunt
  • 14 weeks (4 1/2 months)
  • August 11th to November 18th
Job Boards Used
  • 7+
  • Dice, TheLadder, Monster, Jobirn, Indeed, CyberCoders, SimplyHired
Cost (in money, not time)
  • $1000+
  • $700 on resume
  • expenses that weren’t reimbursed during interviews I traveled to
Friends or Colleagues Notified
  • 6 (It was a private affair for the first 3/4s of the search)
Cities I Looked At
  • Virtually anywhere in the US with a big city ….
  • In particular I was pursuing cities in the following order…
    • Denver (cause that’s where I lived and own a home)
    • Austin
    • Dallas
    • Phoenix
    • Las Vegas
    • Southern California
    • Northern California
  • I considered East Coast and that direction (New York, Virginia, DC, Chicago etc) after finding opportunities out there.
Jobs Applied or Responded To
  • 59 or more not counting the many emails I received and ignored outright
Outright Rejections
  • 6
Companies Who Ignored Me
  • 30+ whom I never heard from even after attempted followups
Advanced Interviews
  • 6
Source of Leads (for those 6)
  • 2 – recruiter found my resume on a job board and contacted me
  • 1 – I responded to a posting on a job board
  • 2 – I submitted to job postings directly on the company site
  • 1 – friend referred me to a job at his company after seeing me post on LinkedIn that I was looking (in the last 1/4 of my search when I made it public)

Number of Engineers that Interviewed Me at Those 6 Companies

  • 30+
    • 12 at one company, 10 at another

Flights to Onsite Interviews

  • 4
    • Chicago
    • Cupertino
    • San Francisco
    • Carlsbad (San Diego County)
Offers Received
  • 3
Rejections After Advanced Interviews
  • 1

All in all it was a great experience. I learned a lot about myself, my worth, what I’m interested in and what opportunities are out there for me.

I had been at Etilize for 7 1/2 years and NEVER gotten a job via a resume before, so this was a significant experience for me to go “out of the blue” searching for a job and get one without having connections before hand.

A few things that I found significant in the process:

1) Get a Professional Resume

Paying for a professional resume writer to redo my resume made a HUGE difference. It made me feel much more confident about sending it off, but I also got much better feedback and callbacks once I began using it. It was completely worth the money and I’d recommend it to anybody serious about their job hunt.

As for the high cost — don’t go cheap is my opinion. Think about how long it takes to do a good job, the hourly rate you want to be paid and you’ll see that it’s impossible to have a proper job for $150 – which you’ll see advertised. I paid $700 and it was deserved.

2) It Takes Time

Plan for it to take longer than you want or expect. It all takes time.

3) Study

The questions I was asked are things that NEVER get asked or come up in the “real world” and are things I’d typically Google.

Sometimes that’s a valid answer … “I’d Google that” … but it won’t get you far on most interviews.

I had to dust off my understanding on a lot of computer science theory, algorithms, data structures, and other such things. In fact, the one major set of interviews I went through and ultimately got rejected from was the first series I went through and I believe 3 things caused the rejection (not my lack of skill):

a) questions about things I hadn’t studied (and studied thereafter and was prepared for in subsequent interviews)
b) I was over-dressed … a suit and tie for an engineering position set the wrong tone
c) I was not myself and stressed (this was more to do with the fact that it was my first real interviews in a decade … ok, ever…)

It was really frustrating at times and absolutely exhilarating at others … a real roller-coaster all the way through. By the end though I had a better sense of value and who I am and an exciting new career path.

Good luck to anyone else reading this and doing their own search!

Filed under: Personal, Skills

Apprenticing to Learn Software Development

The foundation of my software development skills was set between 1995 and 1998 while I worked under the direction of my friend and mentor Andre Kruger. For a long time I called it “job shadowing”, but I have come to realize that it was an informal apprenticeship.

I have found those 3 years taught me more about software, system administration and technology than most get the opportunity to experience that early in their career – as I was learning and working on the job, tutored by someone who was incredibly intelligent and had years of knowledge and experience to share. He also provide me with invaluable insights and suggestions on what technologies and platforms to follow. It was he who suggested Java (when it was at version 1.0) was what I should focus on, not C – and that has served me well to this day – when the schools were telling me to learn Pascal.

I loved it and sucked up as much as I could learn. I also built software that did real things. Now I recognize how poor the code was – it was very bad. The point was that I was learning through doing real things in an environment where I couldn’t do significant damage and could receive instruction and guidance – and eventually as I progressed I could truly understand the benefits of design patterns, object oriented design and what it meant to be “in production”. It wasn’t theoretical – or some forcefully memorized and quickly forgotten trivia – I knew it.

I didn’t complete college/university – because by the time I got there it bored me to tears, as I had spent several years being apprenticed already and learned quickly on my own through books and experimentation. If I could have, I would have skipped to 3rd year and enjoyed myself, but our society and academic programs don’t work that way.

I believe apprenticeships are the ideal way to learn software development, as I see software as a craft – not an engineering or scientific skill where rules are learned and applied the same way every time.

I wish our society and industry would look seriously at its academic and theoretical approach to training – which I feel does not work very well – and consider a model more similar to apprenticeship.

I also really enjoy mentoring others who have raw talent and desire. Some of my most rewarding work of the past 5 years has been that which has resulted in colleagues progressing and growing, such as a good friend of mine Adnan Memon.

Perhaps I’ve accomplished the “master” status in certain aspects of my work, in others I’m still a “journeyman” I’m sure. I hope to find others who can continue to mentor me as I try do so for my juniors, as I think that’s where the best talent in our industry comes from.

Filed under: Skills

Learning by Pair Programming

Last week I learned how to program on the iPhone using Objective-C and Cocoa Touch by having two 2-hour pair programming sessions with Brent Coursey and about 8 hours of my own playing around.

I am comfortable now with XCode, Interface Building and Objective-C – enough that I can build code to do what I want it to do, compile, run, debug, test and install on my personal iPhone.

I’ve connected to web services via Objective-C and built a user interface to interact with the services.

All in all it was a good experience and great way to learn – and the pair programming was very useful in speeding up the learning process. Unlike 10 years ago where I plenty of time to learn through trial and error, it was much more effective to sit and watch someone and see how everything worked together. I was able to pick it up very quickly that way.

Of course, 10+ years of object oriented programming in Java translates over well to the thinking and expectations – but the syntax and different ways of doing things were far from natural for a java programmer (especially one who had respectfully ignored the C way of doing things), so the demonstration received through pairing was immediately beneficial. (On second thought, ignoring C probably helped since I saw Objective-C as an OO language from the start – not as C)

A 2 hour session with Kent Beck sold on EBay for $405. That would be quite the experience – would love to do that and see how he or someone else at his level does their craft.

Filed under: Skills

Software Development is Not “Computer Science”

These guys are “computer scientists”.

Being a programmer, developer, architect etc does not in my opinion constitute being a “computer scientist” or working in “computer science”.

Perhaps the most general definition of science can be used for “developers” if we stretch:

- a branch of knowledge or study dealing with a body of facts or truths systematically arranged and showing the operation of general laws: the mathematical sciences.

But that doesn’t describe the whole of it like these definitions do:

- systematic knowledge of the physical or material world gained through observation and experimentation.

- knowledge, as of facts or principles; knowledge gained by systematic study.

As programmers we don’t do this – we use technology (the “applied science”) to build things and solve problems.

We may sometimes pretend to venture into “science” as we “research solutions” – but we’re just looking for knowledge and facts the “scientists” have figured out and then applying them in unique and novel ways.

Calling a programmer a scientist is like calling an artist a chemist because they use chemical compounds (paint, graphite, clay, steel, glue whatever).

Why does this matter to me?

Because by training our programmers in theoretical “Computer Science” educational programs, we are not actually creating employable or productive people. Sure, they have basic skills and theory that can then be applied through further effort – but unless they are one of the rare few to study, analyze and experiment with computer science theory – most of the knowledge gained serves little to no value in applying the techology of software development in real-world programming of software.

Filed under: Skills

Detail Oriented

I’m working on a fairly significant document that covers the requirements and high-level architecture for a new system based on SOA principles to replace an aging application.

The document is approaching 150 pages and beginning to approach something that properly describes the vision and needs so that business and technical folks can have a solid understanding of scope, requirements, priorities and how it will work (plus general direction on how it will be built).

It takes a lot of effort and time to sit down and not only read, but understand the scope of this system. It’s not a simple thing. As much as we try to keep it conceptually simple, there’s a lot going on and a lot of details.

In a few weeks I’m to sit down with a partner team to review and collaborate. My plan was to send over the detailed document for review so we could have a productive meeting to truly discuss missing requirements, strategy, execution planning etc.

However, I’ve been told they don’t “want” to read the detailed version — just a summary — bullet points with perhaps 10-15 pages.

These are senior developers and architects. Not high level business folks.

Attention to detail is in my opinion an absolute requirement for technical people. Decision making without details is dangerous and fairly useless.

My opinion is not high for people who do not care or have the attention span to be detail oriented.

An executive who’s not directly involved in the operations of something – a summary makes sense.

A team or person who is supposed to directly impact the design and delivery of something and its ongoing operations – if the details aren’t part of their focus, they don’t deserve to be involved.

If they don’t have the time to be detail oriented, then either they shouldn’t be working on the project, their time needs to be re-prioritized, or the project isn’t worth doing.

Filed under: Architecture, Management & Leadership, Skills

Skill and Trust in Business

Dictionary.com defines skill as:

  • the ability, coming from one’s knowledge, practice, aptitude, etc., to do something well
  • competent excellence in performance; expertness;

Trust is defined as:

  • reliance on the integrity, strength, ability, surety, etc., of a person or thing; confidence.

Two common themes are ability defined as:

  • competence in an activity or occupation because of one’s skill, training, or other qualification
  • power or capacity to do or act physically, mentally, legally, morally, financially, etc.

My experience unfortunately is that skill and ability in people are not abundant – and therefore it is hard to have trust.

More problems are caused by lack of skill than anything else I run into.

Making mistakes and learning from them is part of life – it’s the human experience.

However, there is a reason world class organizations have “senior” people  and restrict the impact of “junior” people’s mistakes by limiting what they are allowed to do and affect until they have gained trust – by demonstrating their ability and skill.

Trust nowadays is given away much too freely – desire, eagerness, willingness do not replace ability and skill.

Trust should not be given unless someone has earned it. People should not expect to be trusted until they’ve earned it by showing they deserve it.

I had someone tell me (after failing on something) that I should trust them more and give them “opportunity” so they could succeed (by giving them the ‘keys to the kingdom’). This is backwards. Prove to me on small things incrementally and trust will be earned and greater opportunities given.

Trust does not work like “innocent until proven guilty”. Trust must be earned. Trust stems from skill, honesty, aptitude, competence and most importantly – time.

If business operations are failing, my opinion is it’s generally due to placing trust and unfair expectations on people who do not have the skill or ability to deliver.

Put the money and time on having the right people – and restrict the impact of “junior” people – and operations will improve.

Filed under: Management & Leadership, Skills

Twitter Updates

View Ben Christensen's profile on LinkedIn