Apple Careers: How I Got My Job As a Developer

Apple Careers: How I Got My Job As a Developer

For many software engineers, a career at Apple is a dream. The Cupertino, California-based company is one of the world’s most valuable companies and is regularly ranked as one of the best places to work.

Shashank Thakur, a software engineer at Apple, shared how he got his job. This is his story as he told it, lightly edited and republished from HackerNoon with permission.

Apple is the dream company I have always wanted to work for. It all began back in 2009 when I bought my first iPhone. I fell in love with the experience and ease of the product. It’s when I decided to learn how to develop iPhone apps and make beautiful apps of my own. Fast forward more than a decade later, and I am a successful iOS developer now working at Apple!

Apple Careers: How to prepare for the interview

Tech companies, including Apple, often test mobile developers about the following things in the job interview:

1. Data structure and algorithms

You’ll want to show your capability to think, compare the pros and cons, and solve a logical problem with a data structure.

Every data structure offers different advantages when it comes to time and space complexity. Data structures range from simple arrays and dictionaries (map) to complex ones like trees and graphs. I prepared for a month and a half before my first screening interview and solved five to 10 questions every day on LeetCode.

When practicing coding questions, attempt questions of the same data structure to completely understand a data structure and its nuances. Later on, evolve the practice to include a mixed set of questions across multiple data structures.

2. Mobile app system design

Focus on your ability as an engineer to look at and understand the design of a mobile app from a holistic level rather than the nitty-gritty of individual pieces. Start from a high-level view and then dive deep into individual components.

I made a custom script that made sense to me as a mobile developer. Here is the rundown of the different sections I used to tackle the system design questions:

  1. Functional Requirements: Define the use case and some mobile app features.
  2. Non-Functional Requirements: Define performance, experience and scale requirements.
  3. Assumptions:  Define the boundary of the problem, any scale constraints, and features.
  4. Client-Server Communication:  Define connection options, such as HTTP requests, polling and server-side events.
  5. API Design:  Define the endpoints for what you are building.
  6. Data Models: Define the data model fields of your objects.
  7. App Flow: Define and walk through the user flow for each feature so the use case flow is clear.
  8. Performance and Tooling:  Define how you will gather data and metrics to see how the app performs, including memory and CPU utilization.
  9. ADA:  Make sure you define the accessibility feature and how the app will be accessible.
  10. Internationalization: Explain how you would approach growing the app internationally.
  11. Security:  Define how you would secure the app.

3. Domain knowledge and language proficiency

Companies will gauge your proficiency and experience in making mobile apps with a platform language, such as Swift or Objective C for iOS apps and Java or Kotlin for Android.

In my experience, companies usually ask you to fetch some data from an endpoint and display it. The problem is often so simple someone who recently started with mobile development can do it. However, what differentiates one developer from another is how you accomplish the task. Your code should be readable, modular, scalable, and follow SOLID design principles to show how experienced you are as a developer.

4. Behavioral interviews

When we prepare, we tend to pay less attention to behavioral interviews, but the behavioral section can make or break the deal. As software engineers, we work in teams the majority of the time. The ease with which you can work with others is crucial.

My advice: Sit and noodle a bit on your experience. Be ready to share stories about when you:

  • Accomplished something you are proud of
  • Worked with a difficult person
  • Navigated a tough stakeholder
  • Helped a team member be successful

Prepare these stories and explain the results you achieved. Don’t scramble for these stories during the interview.

How I landed my job at Apple

Here are some of the things that worked for me:

1. Be consistent.

Once you make a plan, stick to it. You won’t see the impact of your preparation in a single day or a week. It will be a compound effect, which you will experience later. Divide your preparation time into sections so that you will get cumulatively better.

2. Believe in yourself.

From my personal experience, I can say there will be days you will feel like it is not working, but trust me, you have to stick to it a little longer. Things will work out. Hang in there, and believe in yourself.

3. Have mock interviews.

Try to have mock interviews with your friends or someone you know and trust. The interview practice can help poke some holes in your preparation and help make interviews second nature.