Wednesday, May 10, 2017

Kogan's Hiring iOS Developers, But This May Be The Clincher

As I'm writing this post, my job application has been rejected by one of the most reputable online shops in Australia. It was a short journey yet I gained some insight into how jobs can be presented, and how they may not be what they seem.

Here's the job description:

IOS DEVELOPER is Australia’s largest online retailer. We use technology and digital efficiency to make prices on the latest products more affordable for our customers. Tech is our thing -  we love using it to solve problems.

We are looking for a passionate and knowledgeable iOS software engineer to join our engineering team.



In this role you will have a lot of responsibility and independence with a massive impact on the thousands of customers who interact with our apps on a daily basis.

From a technical point of view, you’ll be hands-on (crunching the code) whilst also providing architectural input, thought leadership and expertise in all aspects of the mobile development lifecycle. We’ll want you to be good at getting stuff done, whilst regular innovating and experimenting with new tech.

From a product perspective, we’ll want your analysis, design and user experience skills to be working their magic and providing great business outcomes and experiences for our customers.

You’ll be:

Building new and game changing features for our iOS mobile app

Owning of these features from idea to deployment

Maintaining a high level of quality both in the look and functionality of our apps

Keeping our mobile stack and technical landscape fresh and pushing the boundaries



You’ll be someone who pushes for innovation and are ready to take the lead in all aspects of our mobile app development lifecycle, ensuring our tech and customer experience is world class.  You'll need to be fast paced - we like to deliver new functionality and improvements to our customers often, so you'll be seeing your code in production regularly!

You’ll have:

- Experience in building and maintaining high profile mobile applications.

- Deep knowledge in the iOS development environment and iOS design patterns.

- A thorough understanding of the iOS development environment with working knowledge of testing, Pods and iOS design patterns.  Objective-C knowledge is a must, Swift & React Native are a bonus!

- Multi-Threading and memory management specific to mobile devices Understanding of caching mechanisms.

- Knowledge of the whole stack including server side technologies

- An understanding of complex code bases, including API design techniques

- Great collaboration skills to work with our design and engineering team to create an awesome experience for our customers

- An eye for great design and the ability to write elegant, readable and well documented code.

- Attention to detail with a high standard of quality.

- Can apply an entrepreneurial approach and passion to problem solving to building products.

- Experience with the following languages and/or working in an agile environment previously is a plus: Objective C, Swift, Javascript, Python, Django, React Native, Android App Development..



Email with the subject line [IOS-201704]. Ensure you tell us why you’ll be great for the role and you supply examples of previous work (including apps that you’ve been a part of).

You may have noticed the ripper at the end: "Experience with the following languages and/or working in an agile environment previously is a plus: Objective C, Swift, Javascript, Python, Django, React Native, Android App Development.." This isn't the kind of description you would typically see in an iOS Developer job listing, at least not for native development. I have personally never come across an iOS Developer from, but I do know someone who has worked there in a previous job -- the team is cross-skilled.

I applied, and to my surprise, they sent me an email telling me they're impressed with my skill set:

Hi Rex,

Thank you for applying for an iOS developer position with us. We've reviewed your application and we are impressed – congratulations!

At this stage of our recruitment process, we give candidates a quick coding challenge to let them show off their coding skills. It allows us to get a bit of an understanding of some aspects of your coding style.

Here is your link to the challenge:

Please complete the challenge and reply with your solution attached by Sun, 7 May 2017 23:59:59 +1000.

Have fun coding!

That link has since expired, but I can describe the challenge as having to calculate the cubic weight of items under the category "air conditioners" from a list of miscellaneous items, and getting the average.  The data comes from a JSON string, have a look:

You may have also noticed that it's paginated.

The cubic weight = Length x Width x Height x 250

To solve this challenge, I either had to write a command-line application or a web application. Being a polyglot myself, I wrote it in Python. If you would like to see my code, you may clone it from Github:

Long story short, they got back to me after a few days:

Dear Rex,

Thank you for applying for the role of iOS Developer at

I regret to inform you that at this stage we will not be proceeding with your application as we did not feel you were best suited to this role. Please note that due to the high volume of job applications that we receive, is unable to provide feedback to candidates in regards to their applications.

Thank you for the interest you have shown in and all the best with your future pursuits.

I can accept rejection, I've had lots. I received no feedback though I asked for one.

But the surprising thing for me is that there was not one bit of iOS or even Mac concepts in that test. This would have turned off a lot of dedicated iOS developers applying for the job at the very beginning.

So what were they actually looking to hire?

Monday, April 17, 2017

The Hiring Gap (or an Open Letter to Recruiters in my Network)

In two weeks' time I would have reached eleven years in my career as a software developer. I have worked in three countries namely, Philippines, Singapore, and Australia (spent most of my career in the second, and I am currently living in the third).  I've worn different titles including Web Developer, Webmaster, Mobile Developer, Software Engineer, and Software Developer. The titles don't really mean as much as the technology and programming language space you're working in, but I lay them out to present a case for confusion. This confusion happens in the realm of hiring.

When a company decides we want to hire a "_____ Developer" with the blank filled in, the hiring gap immediately comes into play. Ten years ago, that blank would be a technology space, hence the titles like "Web Developer", "Mobile Developer", "Enterprise Developer", "Desktop Applications Developer", etc. would be given. As the years went by,  new technologies emerged and companies became more specific as to what they would like the new hire to focus on, hence they hired specialists. These specialists would have more narrowed-down titles based on the programming language and tools they used, hence titles like "PHP Developer", "AngularJS Developer", "ReactJS Developer", ".NET Developer", "Swift Developer", "Native Android Developer" come into play. There's nothing inherently wrong with narrowing down expertise in specific areas. However this pigeonholing of computer programmers (yes I used that word) has led to oversimplifying the nature of experience and learning that they have accumulated over their entire career. Web developers may have once been Java developers when Java was still owned by Sun Microsystems. iOS developers may have once been programming in VB or C# using .NET frameworks. And Javascript developers who now specialise in ReactJS, yep you guessed it, they were using Flash and Actionscript before the industry went bust.

Imagine you were a recruiter, and I'm hoping most of you reading this are, because I wrote this with you in mind. Say you found out that one of your clients required a "Swift Expert", and immediately you login to your company database of profiles of people (who unwittingly accepted your terms and conditions, privacy policy, and other legalities to allow your company to keep a copy of their resum├ęs for future reference). You find a few who have "Swift" in their skillsets. But your HR training kicks in, and you realised after a few minutes of pondering that in order for someone to be an expert in a given subject, that person must spend 10,000 hours practicing it. So you do the Math based on a normal forty-hour work week, and you come up with this requirement: 250 weeks which equals more than five years experience if holidays and vacation time are accounted for. So you create a draft (hope you didn't actually publish this on Seek or LinkedIn, by the way):

  • 4 to 5 years commercial experience in Swift (preferably 3 years in Swift 3)
  • 3 years experience in Xcode 8.x
  • 7 years overall industry iOS development
  • Local experience is required 

What's wrong with this picture, you ask. Then you realise that Swift only came out in June 2014 hence your "4 to 5 years" is out, much less "commercial experience". Okay, but Swift 3? You guessed it, it came out much later in September 2016. And iOS developers who have developed for more than 7 years are few and far between. And experience in Australia? (which has a general manpower shortage in I.T.) How many programmers are actually here with years of local experience who are still programming?

And don't get me started in React.

Of course not all recruiters are this ignorant about when programming languages were released, but their HR training does get in the way of evaluating candidates. If you're just reading a "shopping list" sent by your clients and ticking skill boxes and years of experience let me tell you -- a lot of developers come from digital agencies and they work with multiple technologies. So your "iOS Developer" and ".NET Developer" may not have spent those entire months of their employment coding in those languages. Surprised? Here's more -- passionate developers tend to spend their free time tinkering with technologies that are not in their workplace. Think Arduino, Raspberry Pi, GoLang, Python, and Ruby. When you're not under pressure to learn and do so at your own pace, I tend to think you actually learn better. Can they work in a job later on in these technologies of their hobbies, that are not in their "commercial experience"? I can already hear you recruiters saying No.

As I work in a government-controlled company in Australia as a developer, I've had the privilege of sitting in the interview sessions, and even asking the questions, for potential candidates. We had to hire a number of developers last year, and we had to revise the way we present questions time and again because at the end of the day, we wanted people who can do the job. But because we had to go through recruitment agencies and couldn't hire directly, we had to cater to your HR lingo. One of the challenges we encountered was having to create a "shopping list". This was a list of skills that we thought would be required, plus skills that were "nice to have or preferred". It wasn't easy, we tended to put too many things in that list being unrealistic, but also overcomplicates the process -- some of those things can be learned on the job. Even common skillsets have different uses depending on the company you're working for, such as git flow.

So we came up with a plan, that can be summarised in three points:

  1. Send a written test to the recruitment agencies to screen the candidates prior to being considered for face-to-face interview.
  2. For the face-to-face interview, formulate two major problems that the candidate has to to solve, which were real day-to-day technical problems we encounter.
  3. Have only one interview with the candidate, with three to five developers (including the lead) from our team doing the  interview.
The written test was sent to the recruitment company so that they can screen the candidates, send the results to us, and then we can decide whether to proceed with their application. There's no passing mark or minimum score, it is simply to give us a general impression whether the candidate is a real programmer.

Once we determine that the candidate is a real programmer we can interview in person, we sit down with the candidate for one hour. There were three to five interviewers in the room, and one candidate. It can be intimidating to the candidate, but we just explain that we are all here, and this is the first and last interview you have to go through. At this point please understand, a candidate's "years of experience in technology Y" or "commercial experience" or "Australian experience" pretty much go out of the window. We've hired people with over 20 years experience, and we've hired someone with almost zero experience. We start asking basic HR questions like "Please tell us about yourself and your experience" or "Have you worked in a similar role before?", etc. Then depending on the answers, we can already tell if the candidate is technically sound. We then ask the two major technical problems and analyse the response -- this was a whiteboard test. The whiteboard answers help us to see the thought process the candidate goes through to solve the problems. During the test we encouraged each candidate to ask us as many questions and clarifications as possible in order to solve these two problems. 

Should the candidate answer the questions satisfactorily then we will most likely hire, but we first had to have agreement on the assessment of the interview's outcome. We cannot hire if there's no consensus among ourselves. 

This greatly simplified our hiring process,  and to this day we don't regret hiring more than ten developers this way. This series of interviews happened five months ago  over a two-month period, and only half of them made the cut.  These developers are still going strong.

If you're a recruiter reading this please don't take this with offense. This is my opinion and I hope by reading this you can understand the frustrations we developers have with your recruitment process in our line of work. 

If the three simple points I mentioned in my company's hiring process can change the way you screen candidates and they work for you, then well and good. But for now I can't see myself applying through recruiters anymore. If this article can make some changes to the way you hire, then I hope developers like myself can get good jobs in the future through you again. 


Wednesday, February 01, 2017


I have been referred by an acquaintance to try out TopTal. Having been trying to get back to a full-time iOS role for the last three years, the hill is getting steeper to climb as the months roll on. I typically get caught in recruiters' formulas about "years of commercial experience", as well as the silent war that wages between front end Javascript vs. native mobile.

Since no one is giving me a chance to get more experience through iOS employment, it looks like I just have to make my own experience. After publishing my app Money Monthly in the Apple App Store, and working on an app for a non-profit, and tinkering with other iOS-related stuff after hours, I'm knocking on TopTal's door to get my foot in as a FREELANCE iOS DEVELOPER.

Godwilling this door opens, and I'm hoping for the best. This includes my interest in joining the toptal Mobile app freelancers group

'Coding since 1993

Tuesday, January 10, 2017

2017 and iOS

Happy New Year to one and all!

Towards the end of 2016, I submitted my app Money Monthly, for the first time. This is in part due to my move to get back to iOS development. The industry is very competitive, and I better have work to show for it if I am to return to full-time employment as an iOS developer.

The app helps you keep track of your monthly spending, and helps you limit your expenses to save money.

As of now it's still in a soft launch phase, and not much publicity is going on. For now it's free, so better download it now at its best deal. Today I submitted a bug fix with the date picker.

If you would like to know more about the app, simply go to

All the best for this year!


Wednesday, February 17, 2016

Udemy Online Course Discounts

Udemy is currently offering discounts on their software development courses. I signed up for a Swift development course by Michael Rudowsky. Recently I got another notification that other courses are also on discount. You may want to start learning something new too, check out the list here.

Thursday, July 23, 2015

4k, 5k, 8k, 11k Pixels

As screen resolutions become higher, Samsung is planning to release an 11k display:

News about Samsung, click here

I found this interesting because I have owned the domain for some time now, let's see what happens :)

Saturday, May 16, 2015


Codility tries to standardize the way companies filter candidates for software engineer /developer positions. I got to choose from different languages, so I chose PHP which was what I was most familiar with. There were three problems I had to programmatically solve and test in 90 minutes.