Dev Story: How Android Build Variants Save Social Life

“I want to hang out with my friend”

“Wait, we need to test this app in our client environment, please adjust our app so that it can running in there”


“I just heard that they have at least 5 environment include production”

“Um, okay”.

“We need all of them to be installed in one device too, so please make sure that the service is not overwrite each other”.


That sums up the problem. If you’re a freelancer or working as android developer in software house before, you can usually find something like this.

Well, there is nothing wrong with that but if you happen to get into situation like the conversation above then it must be really annoying. I know someone that said something like “It just short project anyway so let’s make it with less effort” and well… it’s somewhat true but not like this 😉.

Instead writing important variable hardcoded like that, we need to make sure to put it in the right place. Let’s use build types for it.

But how about 5 different application environments that must all be installed in one device? Relax, you just need to update your build types like this.

Oh it looks good, then how about we make admin and customer version then make sure that admin/customer version of their client A has different behaviour with client B? Um, okay. Let’s use product flavors for that.

Next, you just need to pick the build variant based on environment & type then build/generate it…and voila you got it.

Too much effort? Honestly no, next time you got into conversation like that, it should be piece of cake. They really will save your time, trust me :D.

“Now, let me hang out with my friend…see ya”.

Developer Stories: What It Means to Become a Supervisor.

There is a time when your company hire someone from outside or maybe an intern to accelerate the development process of a project. When that time is come, usually someone in your team will be sacrificed to be supervisor for him. If you ask why sacrificed, sure there is something wrong in your head as a developer or programmer, not in bad meaning tho 🙂.

Supervisor itself is not a bad idea. If you happen becomes a supervisor in your team then you must be happy cuz that’s one of proves that you are trusted. Trusted enough to get some extra task like collaborate, reviewing & communicating (tutor and clean up mess included :D). So be proud mate.

I’ve been experiencing become supervisor a few times, either for intern or freelancer, and almost all of them ended up in failed (in my opinion tho). The reason is like performance result is under average, late delivery, and etc. But then, question pop up, why? Of course before we decide to hire them, we did interview, test or briefing, but then why? Why they must fail? Well, almost all of the reason are possibly true, something like the task is too much or they are not good enough. But in my case I simply do it wrong.

Why I simply state that I simply do it wrong? Well, it’s because I don’t behave as a good supervisor and there are three key point that I think I didn’t do it properly and it will be a game changer if I did, they are…


Simply ask yourself triple if-fail question, what you need him to do? If he can’t do it, what will you do? If It fail, what will you do? If it still fail, what will you do? If you stuck or seeking help in second or third question then I think you should take it more serious cuz it will be the mark of his downfall.


Supervising someone without knowing much about him maybe not a problem but if you know that you don’t know much about him & not doing something about that is the worst. When it comes to this, researching it’s not only about the project/task, people/personality included as well. Don’t do same mistakes on same person, you will regret it.


When you are not sure with yourself, how can you make other person believe it. First thing first make sure you are ready and lovely to work for it, if you are not ready then just say that you can’t. Don’t make new guy take all the weight and fail when you are in charge. Show him that you eagerly work together and make him excited so that he contributed willingly.

Learning from my mistakes, I decided to setup my own plan based on company goal then trying fill the three key point that I lack and implement in my latest job as supervisor. My latest job as supervisor is supervising new guy that hired as the developer on my division in his probation time (about three months). To be honest, if we see it from company view there is so many goals that needed to be achieved but let’s take a simple goal and that is…

“Makes him sign a full time contract and can replace me when I’m not around”

If any of you wonder why sign a full time contract is come first, well…that’s the main point for the probation guy. We need to make sure the both of us (company) and him happy to work together. If we can’t do that, the feels is same with keep a girlfriend safe just for someone come and marrying her :’).

So to achieve that, after meeting personally with him I decide to divide my role into five phase and setup parameter as a flag so that I can go to next phase…

First Phase

Role: Teacher

Quote: “You can ask me anything and let me explain all of it to you”

Parameter: Subject prepared with basic resource and said that he ready to enter the battlefield (development process).

Second Phase

Role: Mentor

Quote: “You are doing good, keep up the good work”

Parameter: Subject has finished his task before deadline (of course with approval by Quality Assurance)

Third Phase

Role: Reviewer

Quote: “Are you sure? Please prove it”

Parameter: Subject can decide the estimate time and finish his task just as he said then do his first refactoring.

Fourth Phase

Role: Wise Person

Quote: “Go look and feel other division”

Parameter: Subject crossing division/platform and finish his work in there.

Fifth Phase:

Role: Teammate

Quote: “Lovely to implement this one next time”

Parameter: Subject contributing to our current library or make a library.

On this chance, I try to implement role play game, like changing my role for every phase then slowly decrease my presence in his area and make sure work environment is conducive and good for him, so he can adapt quickly and showing his potential.

At the final evaluation, he is currently in fourth phase and when it comes to evaluation, the result looks promising, not only he can finish his tasks almost on time, he received positive feedback from other teammates (about 3 out of 4). Of course it still not perfect because he still doesn’t do some of his responsibilities and I’m still not doing all of my role properly, but at least for some reason the important goal is achieved. He decide to sign new contract and somewhat I can rest peacefully when sick :D.


That was a long story, but well…every person maybe need different approach so make sure you planning after meet and research about him. If you wonder why it looks too much work for supervising just one person then you might be in wrong direction. Supervising someone is much work and it cost more than your usual work but if you do it properly and owned it, trust me, you will see something different and then realise that there is more from it. It’s not only about work, but people too.

So What It Means to Become a Supervisor?

In my opinion as a developer/programmer, it means a call for brotherhood is coming up. Be proud and good brother to someone :D.

Originally published at