Hello Automattic! đź‘‹
I'm very happy to express my interest in joining your team as a Mobile Engineer!
I've been following Automattic since long time and have read your blogs and watched Matt Mullenweg's interviews. Every time i read one of your blogs or use your product my interest to join Automattic has only been increasing
I will give you 3 reasons for hiring me, i will explain my motivation, and i will list the relevant projects that i have worked on
First, I can write clean code that solves complex problems. I always believe that design patterns, SOLID principles and architecture are far more important than the technology or the language we use to solve the problem. I like to keep things as boring and simple as possible. Technology is a means and not an end.
Second, I write tests and an extensive believer in writing good unit tests. In my opinion any software which does not have tests are legacy software
Third, I am a team player. I always try to give positive feedback during code reviews and does not nitpick on small things which really aren’t important on the higher level. I love to work with people who show empathy and kindness. I have been in a situation where i understand being calm and showing kindness goes a long way.
and why Automattic? All these years most of my work has been closed source except for my side projects which are available on Github. I really admire that all of the Automattic’s android apps are open source and i also love the company’s open source first approach. I also love the way the company is run, the philosophy behind it and the hiring ethics.
Projects
Noon academy Play store link
Role: Senior android engineer
Contributions:
- Introduced team to writing Unit tests. Gave internal talks about testing.
- Wrote custom lint checks to get a consistent design throughout the app
- Gave internal talk on MVI architecture and its benefits with respect to testing
- Was part of 3 major feature module from scratch and 1 major rewrite
frameworks/Architecture
- MVVM for some of the module and MVI for few others
- Retrofit for networking
- LiveData for reactive stuff
- Dagger2 for DI
- java/kotlin
Learnings:
- It’s impossible to scale an app without proper design system in place.
- Rewriting an old feature with zero unit tests and get the requirement’s right is quite hard. Knew this beforehand but experienced it first hand
In the job posting, it was mentioned that the team is looking for someone with experience in Social or content-oriented native apps. This project is very much social and content-oriented.
Bytemark NYW, MyDart, SouthShore, Ripta
Role: Android engineer
Contributions:
- Introduced team to writing Unit tests
- Initiated using Kotlin for new features and tests
- Worked with a German company to integrate their sdk into our app
frameworks/Architecture
- MVVM for some of the module and MVI for few others
- Retrofit for networking
- RxJava for reactive stuff
- Dagger2 for DI
- java/kotlin
Interesting challenge that I faced: our iOS apps were getting rejected by apple for some weird reason. My then colleague (Now my wife :)) and I sat together to figure out why apple was rejecting our apps and later found out it was because of slow startup time. Apple has this set startup time within which all apps should start and be ready to use. Our apps were failing to start within that time on some of the iPhones and that too it wasn’t quite reproducible always. We checked the code written in our splash screen and everything looked fine, calls were being made on background thread. After some time we figured out that we were using a SDK which was being initialised on app startup and it internally was setting up maps and few other stuff which was resulting in slow startup times.
Although this was not that complex to figure out it was fun doing this.
Learnings: it was here that I realised why fakes were better than mocks when unit testing. Eye opener
You can find my open source side projects from my Github
Let’s talk!