Product Engineer, Moi

tldr: I switched careers. I am now an Android developer in a small team at a mid-sized organisation.

In early 2012, I taught myself some Javascript and created my first Chrome extension, AutoConvert.

It was a simple tool to fulfil my specific need—automatically convert units between imperial (the somewhat idiotic unit system that my host country uses) and metric (the much more sensible unit system I grew up with). The code was beginner-level, the design non-existent, and I’d heavily relied on Bootstrap and jQuery. But I’d hit on a user need, and the extension got a little over 15,000 users at its peak.

Encouraged by that first step, I learnt more about Javascript development and other libraries, and created a few more Chrome extensions to satisfy my other itches when the need arose.

Sometime in 2014-15, I took a free, self-administered course on Android development on Udacity. I wanted to fulfil another personal need — create a native Android app for a platform we were using at the time, iDoneThis.

Java was a lot harder, more verbose, and fairly rigid coming from Javascript. Android was way more restrictive as a platform compared to Chrome and the Web. Eclipse was a memory and CPU hog compared to SublimeText. Android apps were harder to develop and iterate. After iDoneThis, I didn’t develop another Android app for a couple of years.

In 2017, I started developing my next Android app — Todo.txt for Android. This was again based on scratching a personal itch. I’m a todo.txt user, and the OG app had stopped working after the original developer didn’t update it when Dropbox changed their API. This new app too started as a Java codebase. But on the, now, 3 year long journey of developing and updating the app, I learnt a lot of new technologies—converted the codebase to Kotlin, replaced AsyncTasks with Coroutines, adopted the MVVM arch with a single Activity, learnt to write and always add unit tests.

Kotlin combined with Android Studio and the Jetpack architecture components brought both speed and structure to my (and the app’s) development. I developed three more Android apps. On the web side, VS Code and Javascript libraries helped me get more productive.

In late 2019, I was frustrated with life in general, consulting in particular, and looking for contentment. After a lot of thought, and encouragement from R, I decided to give a year to attempt a career switch: to become a Product Engineer.

I was indifferent between Android and Web development—I enjoyed both equally. But I knew that I needed to learn a lot on both, particularly technologies and processes used by engineering organisations that I hadn’t needed to use as an amateur solo developer. So I devoted the rest of 2019 and 2020 to filling the gaps. I discovered, learnt and adopted, amongst others, Webpack, Retrofit, Promises, Android library modules, cloud functions with Firebase, Firestore, Gradle tasks, VS Code tasks, Data Binding, and many others. I adopted the Github PR process despite being a solo developer—opened the PRs, reviewed them myself, then merged them in.

Some things I considered but chose not to pursue—CI/CD and dependency injection being top two. Unlike the other technologies/processes, the cost-benefit proposition for these was vastly lopsided as an individual developer and at my apps’ scale.

I also started applying for developer roles, all the way from entry-level associates to senior lead developers. I got a few interviews. As the year went on, I went further in some interview processes. Finally, in October, I was offered a job as an Android developer at xxx1.

I completed my 3 month probation earlier this month, and was welcomed aboard as a permanent employee. I’m now officially an Android developer.
Continue reading Product Engineer, Moi

Things I learnt recently

From AD: How to efficiently & quickly dice onions. There’s no magic trick to it, but just knowing the correct technique has made a big difference.
AD studied hotel management at under graduate level, and knows his stuff.

From SD: How to solve a Rubik cube. He lent me his old unused cube and shared a video with the step by step instructions. I’ve gone from taking over an hour to just under 20 mins.
SD solves his cube in under 3 minutes, with a PB of about 1’30”. He knows his stuff.

IMG_20200322_192008.jpg
The first solve. Took me over an hour!

From Sis: How to hang woollens in shallow British closets without the arms hanging out and pushing the door open. Invert the arms so they hang inside the sweater/jacket/hoodie. This reduces the width of the garment, helping it fit comfortably in the shallow closets.

 

From ‘the web’: JavaScript promises and async/await. Learnt, enjoyed, implemented, fell in love with. Promises in Javascript feel as delicious as coroutines in Kotlin.

My dog and his human

This is how he sleeps. With five pillows.

I use one. R uses three. I’ve always been on her case for using three pillows.

The boy has learnt from her, and then left her behind.

Then there’s me.

I’m not allowed, by R, to put dishes in the dishwasher. She has her method of placing the dishes, and I apparently mess it up.

I’ve been trained to rinse the dishes and place them on the kitchen top above the dishwasher. She puts them in later.

Last night I cleared the sink after dinner and placed the dishes above the dishwasher. Took me a moment to realise that she’s been in India for a couple of days, and I am allowed to put the dishes in while she’s away. My training has been thorough.

To confuse the anthropomorphizing further, my dog learns better than me, while I’m trained better than him!

Duolingo + Range—Learning with interleaving

Screenshot_20190823-073133
Interleaving—6 active skills + random test button

David Epstein’s book Range educated me on the value of interleaving and spacing for better learning. (Chapter: Learning fast and slow)

One of the places I immediately applied it is in my daily Spanish lessons on Duolingo.

Screenshot_20190823-074216
Block learning—completing one skill from start to finish before proceeding to the next.

Previously I used to start with one skill in Duolingo, say present perfect, and then complete it from start to finish. I only moved to the next skill once the previous skill was golden, or on the rare occasion when I gave up on it for being too hard.

The screen looked like the one on the left: all golds above the current skill.

Now I have six skills in progress at the same time. Every day I complete just one test from at least three of them. The next day I start with the other three. If I want to practice more, I use the dumbbell button in the bottom right—it tests me randomly from any of the dozens of skills I have already completed.

This mixing provides me with a bit of range. Each test daily is from a different skill; any skill reappears only after 48 hours; forcing me to remember, forcing more mistakes, and, hopefully, resulting in better learning.

Continue reading Duolingo + Range—Learning with interleaving

Typing speed hypothesis

Hypothesis:

Typing speed increases if there’s no feedback from the input (looking at keyboard) and output (looking at the screen).¶

I’ve been taking book notes of recently read books. While taking notes I realised that I type fastest when I look at neither the screen nor the keyboard.

When looking at just the book, I let my muscle memory (training) take over and get the fastest typing speed. There are a few errors—typos—but the writing speed makes up for them.

Looking at the screen is the next fastest mode of typing. It is probably slower when I’m copying text from the book since I have to constantly switch between the two, specially because I have to locate the cursor in the book every time. It is also slower because any typos are apparent immediately and create a dissonance hurdle in the brain, slowing it down.

Looking at the keyboard while typing is the slowest. The brain skips a lot of the muscle memory, or tries to reconfirm it, and tries to look for keys before typing. It may cause the least mistakes but is really, really slow.

Continue reading Typing speed hypothesis

TIL: What is ‘1 + 1 =’

Soham asked us this question yesterday. He wanted four answers.

Everyone got two immediately: 2 & 11.

I gave him one that he didn’t know: 3.

He gave us two we couldn’t have figured out: Window, 6.

These three answers – 3, 6 and window – are why I love spending time with him when he’s not playing a video game.

Continue reading TIL: What is ‘1 + 1 =’

Importance of learning languages…

A couple of weeks ago I wrote about the importance of learning multiple languages in this changing world. My post was in the context of the disruption in white collar careers that improvements AI will bring.

Seems like a few other sharp minds have been thinking on the same lines. Here’s a post in the Financial Times discussing research on similar lines, but addressing impact of disruption by Brexit. Here’s their list of languages, though I recommend you read the full post:

Top 10 languages for Brexit Britain
Top 10 languages for Brexit Britain

Swim Class

Happy with the last few swims after today’s class. Finally starting to breathe every 3rd stroke. Did feel better, faster that way too.

Also learnt that my backstroke needs more work. Core muscles are weak and cause me to flip bit to much.

It helped that there were just 3 of us for the class today. Got proper attention finally :)

Posted from WordPress for Android