Hey all ! A little introduction, I’m Mel, I’m working as an Android developer for more than 5 years. I’ve worked with both startups & corporations, and have been involved in development of more or less 20~ apps, some with small user base, some with huge, some with shitty codebase, some with brilliant — nonetheless contributed to my career in long term.
In these 5 years, I’ve switched 6 companies ( one is on the way ). First 4 years of my career I’ve worked in Turkey, 6 months in Latvia, last 6 months ( and ongoing ) in Netherlands. I’ve befriended a lot of awesome people, experienced variety of approaches to job I’m doing and most of all really enjoyed what I’m building. But also I’ve made mistakes, miscalculations, went through disappointments and hard times. Overall, I think I’ve seen my share of this and that.
I’ve done a lot of Skype interviews & code challenges for positions, but also been in the position to do interviews and code checks. I’m writing this post to share my experiences and insights about how you should approach to a job opening.
Is that the job you’re looking for ? Do you want to work there ?
You go through some job ads, checking the requirements and you saw it’s a match. Great ! Time to check the job and company itself.
What kind of projects do they do ? What’s the scale of company ? What’ll they invest in you ? What career path you can chose there ?
Lucky for you, companies want to attract developers, so most likely you’ll find answers to these questions with a little research in company website / google. If not, you can always ask your questions to recruiter.
I know most recruiters don’t bother checking your skills & CV, don’t be like them. Although you may be enthusiastic about the job and company, consider everything carefully.
If you waste your energy on interviews and tests for places you don’t really want to work with, you’ll have less for where you really want to work.
You want to be interviewed
And you’ll be, if you have what they’re looking for. But how can they know it ? Most of the time, it’s not developers who’re doing first checks & interviews. There comes your cover letter into play.
I’ve always fond of communicative and friendly explanations more than formal & boring word puzzles that you separate skills ( which you’ll list with dots on very next section of your CV ) with comas. Note that I’ve never made it to Google or Facebook.
Write your story, write what’s your passion, what’s your approach, what do you want like you’re explaining it to a friend. It’ll help them understand your mood and personality easier and even get curious.
You may also mostly stumble upon questions that company asks that are attached to the ad, like what are your favorite activities, what was the greatest challenge you’ve achieved. Take your time to answer them. Don’t leave them blank or write slipshod answers. They’ll not take time to show their interest to you if you don’t take time to show yours.
You will be interviewed
But first you’ll be contacted, which’ll mean they have found your application interesting and want to learn more about you ! They may send you a test from HackerRank etc. to make some priority eliminations. I understand why they do it, but personally I freaking hate it. It’s an evaluation of your approach on an environment you’ve been stripped from your shortcuts, plugins and hardware. If you can hear me, please can you integrate this to IDE’s already !?
So smile ! You’re on the camera.
You better made your search about the company, even though you don’t have questions to ask, it’s important to do your research. It’ll most likely be a friendly conversation between you and the recruiter — or it may be one of the developers who’ll be responsible for your evaluation.
I don’t really have much suggestion about this part but:
Tech me up
So, if everything went well, you’ll most likely get either
— a technical interview followed by a technical test
— a technical test followed by a technical interview
This is the part where you should shine ! And comments will be more based on Android.
Technical interviews change company to company, some will ask you about more foundational questions like how does a LinkedList, HashMap and tables or arrays work ( which I’ve failed miserably a lot of times in the past ), some will ask questions that are more close to what you do in general, like lifecycles of activity / fragment, latest technology stuff like VM’s, architectural approaches etc.
Although as I mentioned I’ve failed miserably on foundational questions before, I learned that knowing foundations — of Java in this case, since Kotlin runs on JVM — is really important understand and deliver products with peak performance. It’s good to take your time to learn collections, components, how does garbage collector works. Your optimization & tweak capabilities will be limited unless you understand underlying structure !
But vice versa is possible too, I’ve interviewed with people that has amazing foundational knowledge but their approach in mobile development was inefficient.
My personal preference: Android knowledge over deep foundational knowledge. Why ? I believe it’s easier to teach / learn about foundations or change a HashMap with int keys to SparseArray and explain why than teaching about lifecycle, how to foresee possible leaks, issues an approach may cause or memory management ( remember about API 9 please ) in Android environment.
About your technical app
Most likely an app with 2 to 3 screens, may be with various scenarios. Simple enough ! Simple enough, if you don’t wanna impress anyone. Simple enough if you dare to use MVC, just fetch data and present it.
Take your time. Faster delivery doesn’t mean more positive feedback. You’ve mostly won’t be restricted by time, even if you do, it’ll be around a week. I know, you’re working, you don’t really have much of free time and even when you have some, you want to play some more Red Dead Redemption 2.
That’s why I asked you in the first place !
Is that the job you’re looking for ? Do you want to work there ?
So you’re already decided you’ll sacrifice some of your free time for this ! You want this !
Let’s get down to tips I’d like to give. These are things I go over when I’m doing a review on projects submitted by candidates — note that these are my personal preferences — ( assuming Kotlin required ) and vice-versa when applying to somewhere :
— Do you have a README.md ? If you do, you already saved me some work and gave me an insight and expectations of your code !
— Your build.gradle file. What dependencies did you use ? What are your configurations ? How tidy and manageable is your build.gradle ?
— Your AndroidManifest.xml file. How many activities do you have ? What permissions did you ask ? Did you lock any of the activities to portrait mode ?
— Your packaging. How tidy is your project structure. Can I navigate through your structure easily ?
— Architectural approach. MVP is fine, but personally, kudos for MVVM. DataBinding is optional — tho I like to use it myself.
— Your data layer. Did you used persistence and how ?
— Clean architecture approach is kudos
— Are you up to date with android widgets and libraries ?
— Git usage is cool
— Unit tests for sure & preferably instrumentation tests too
I go through the codebase and check how did you do things that I’ll be seeing on the screen, how is your layout hierarchy, did you use resources & styles, dependency injection, RxJava or coroutines ( aww yiss ). How strong is your OOP & concurrency game ? Did you add comments ( please do ) ?
After this point I’ll build and start using the project, with profiler. I’ll do configuration changes, try to break your app or force to see some sluggish / low FPS behaviours and observe values on profiler and also check overdraw of UI. Because that’s what I’ll ask you about in interview.
Another thing I find really important is — don’t add things that you won’t be able to explain. Believe me, they’ll ask why did you do that in interview or with a mail. Being able to stand your ground about your approach is important and it requires knowing what you’re doing.
There’s something new every day, there are a lot of stuff that we don’t know, a lot of stuff takes a lot of time to understand. Take your time to learn.
Got the offer ?
Yet, it may not satisfy your needs, mostly financially, maybe less holidays than you expected, or some other conditions that’ll bother you.
My suggestion is talking with them about it and see what you can come up with ! Just because there’s an offer, doesn’t mean you have to take it.
At this point, I think it’s really good to estimate your level, knowledge and being able decide if your services are worth it or not.
There’s a huge market out there and you’re important ! You can find what you’re looking for.
Go on, apply to companies you want to work with, do the interviews, do the technical tests. Even if you don’t get hired, you’ll have really valuable feedback why and it’ll take you a step forward !
Hope this post will give you some more insights and encourage you to take the steps towards the job you want.