Thursday, December 29, 2016

Don't work after 7PM

I have had crunch times where my day basically consists of only one thing: work, randomly interrupted by periods eyes close, mouth drools, and mind goes blank, all by themselves. And those times can be healthy, like a couple of days before a release give me a boost of motivation. But doing so over any extended period is just bad. Its bad for me and bad for the very business I thought I was helping.

Enough talks about burnout, about there is more to life than just work (because work somehow gets the bad rap), about working on the same set of problem over and over is damn boring, lets talk about an engineer's values.

As an engineer, my values consists of 2 components.
  • My absolute value, defined by skills, methodologies, and mindsets. These values are the stuff I bring to meetup, write about in my blog, and are applicable to whatever I do. They are mine.
  • My relative value, defined by my knowledge of the project I am building, the sector my company is in, and how technical decisions were made. These determines my productivity, and ultimately my worth to the company.
Of all the jobs I have had, I always start like this. I don't know anything about what I am supposed to build, but I have my skills as an engineer (hopefully qualified after a legit interview). As I stay around, I acquire more the domain knowledge and know how things are done. I apply what I have learned from the last job to this and in turn sharpen those skills. Both my absolute and relative values increase.



If I neglect picking up new skills, of course my absolute value stays still. Or rather, it slightly decreases as everyone else is forwarding. But if I stay longer, spend more time writing the code that somehow a repetition from the previous job, (same old CRUD), I become the person to provide backstory of features, explain the tweaks and customization we have in code, and set the pace for newbies. My relative value increases, and as a whole, my worth to the company also does.



Alternatively, because I am more than a lazy-ass, occasionally I learn something. New knowledge is hard and immediate reward is scarce so in the beginning I stumble. But those technical advancements are important never the less, like efficient asynchronous model, container orchestration, or architecting data-intensive system. A lot of the things I read, practice, put into pet projects are just out of curiosity and at some point go to the attic for not being practical. But once in a while, it turns out to be useful, I can contribute back to the product I am building. My absolute value enjoys a slight hump and because I still contribute to the project, my relative value also increases.



*Both are extreme scenarios made up to illustrate my point, most of us are somewhere in the middle of the spectrum.

Every night, every weekend I spend completing what I should have done between 9 to 5 fosters my relative value and postpones development of absolute value. At some point, there is a chance my worth as a data archiver wins over my worth as an individual contributor. I get my benefits for being valuable to my company, if not even more. That though makes me as an engineer less appealing to other organizations who derive benefits from my absolute value. A golden handcuff.

I can understand where the idea of focusing on your job 24/7 coming from. Picked a course. Realized I didn't know shit. Sucked it up. Put in a lot of hard work. Submit assignment. Remembered I had 3 other courses that semester. Repeated. This was the vicious circle I went through in college. Basically what worked for college was to spend more time till I am better at it. Which I had plenty.

And for a while, career seems like an extended version of college where the semester is longer. So the same trick should work, right? If I work day and night on my job, I should be better. Except career and college aren't the same. The rules are different, a product is an ultimate goal, whereas an assignment is merely a means to an end, more responsibilities from society and family are waiting, and the problems we face are not only harder, but also demand to be done in less time. What got you here won't get you there*.

The keys to succeed in different phases of my life can be arguably sum up as:
  • High school: just be smart and don't do drugs.
  • College: lot of hard work and occasionally try something totally irrelevant.
  • Career: still hard work but learn to know where your time should be spent (up till this point, but I guess you can slice one's career to a zillion of different stages).

Effective on-the-job training is rare, most desirable skills like machine learning, distributed computing, or business intelligence take years to build up. In this part of the world, sabbatical leave isn't the norm. Many people actually haven't heard about it. So being a top-notch engineer is anything but a personal investment. Who I am in the next 5 years is defined less by the company I am in, and more by what I choose to do after 7.

Thursday, February 18, 2016

[Agile Games] Jenga Builders

Summary

The core idea of this game is to have teams build wooden structures with jenga sticks. The game is played by rounds, where each round is supposed to deliver an Agile lesson. In the context of this post, attendees can expect to learn about the darkness principle, quick feedback and communication, and being adaptive to change.

Each round after the first is essentially optional, the host can choose to add/remove rounds depends on available time. The host is also welcomed to pick, or customize her own round to deliver the desired lesson.

Team size

Minimum 4, ideally not more than 6.

Timing 

20 - 60 minutes depending on team size and number of rounds.

Materials:

  • A deck of Jenga
  • Photos of pre-designed structures, 3 x no. of team / round
  • A whiteboard to record scores

Instructions

This game will be run over several rounds, with each round introducing a new concept.

Setup

  • Split up the group into team of at least 4, and ideally not more than 6.
  • Choose one person from each team to be the Analyst. The Analyst knows the core of the structure, but not which colors to be used. The Analyst is not allowed to touch Jenga sticks.
  • Choose one person from each team to be the Designer. The Designer knows the required colors for a specific part of the structure. The Design is also not allowed to touch Jenga sticks.
  • Choose one person from each team to be the Tester. The Tester knows the whole structure, but can only answer questions and is not allowed to give instructions or touch Jenga sticks. 
  • The rest of each team will play Developers. Developers are the only ones who can actually use Jenga sticks and build stuff.

  • The Analyst is given a photo of the structure needed to be built. The color of the sticks in this photo does not matter, in practice, team can use whatever colors available.
  • The Designer is given another photo of a part of the structure needed to be built. The color of the sticks in this photo is crucial. The part must be a component of the final structure, with the exact color depicted in the photo.
  • The Analyst and Design have to combine their knowledge of the system and convey that to the Developers, who build stuff.
  • The Tester is given the photo of the final structure and has the right to accept or reject the work of the team.
  • The initial flow is that The Analyst and The Designer will discuss and agree on the structure, convey the idea to The Developers and finally the work is given to The Tester to accept or reject.
  • No one is allowed to show her photo to others.

Round 1:

This round teaches The Darkness Principle.

Each element in the system is ignorant of the behavior of the system as a whole, it responds only to information that is available to it locally. This point is vitally important. If each element 'knew' what was happening to the system as a whole, all of the complexity would have to be present in that element.

After the team has formed and roles assigned, give the below photos to relevant team members. And the game begins!
Analyst #1
Designer #1
Tester #1

After all the teams have completed their structure, ask questions on what happened, what went well, and what went wrong.

Learning:

What we learn from The Darkness Principle is that nobody on a team has a complete picture of all that's happening in the entire team. Each team member can only have an incomplete mental model of the whole project. That is why they have to plan and decide together.

Round 2:

This round teaches Quick Feedback and Communication.

Give the below photos to relevant team members.

Analyst #2
Designer #2
Tester #2

The trick here is that there are many different possible outcomes from the photos given to The Analyst and The Designer. Only The Tester knows the correct one. But he is at the bottom of the chain. 

After all the teams have completed their structure, ask questions on what happened, what went well, and what went wrong. And if they want to make any change to the work flow.

Learning:

The work will be carried on in usual manner, then given to The Tester to be rejected. We should note half the amount of work was wasted, and that the position of The Tester isn't optimized for quick feedback loop.

Round 3:

This round teaches Being Adaptive To Change.

Give the below photos to relevant team members.

Analyst #3.1
Designer #3.1
Tester #3.1

The trick here is that the outcome is almost possible to do. (At least for me, I had to put a finger on top of the whole thing to prevent it from falling apart.)

Somewhere half way, when the teams keep failing to build the structure, hand out this second set of photos.

Analyst #3.2
Designer #3.2
Tester #3.2

This time, the structure should be possible. (I managed to make that.)

After all the teams have completed their structure, ask the same retrospective questions.

Learning:

What we learn from this is that goal and target are not always rigid, and in order to deliver, sometimes, reasonable compromises are needed.

Round 4:

Freestyle. This round is for the team to summary what they have learned in previous round and as a whole, feel good about the learning curve. "Finally, a proper sprint!"


Analyst #4
Designer #4
Tester #4
All structure photos can be found here https://www.dropbox.com/s/np96ltzrdznpmxc/JengaBuilders.zip?dl=0

Observations

The game had its first debut at Silicon Straits 18th Feb 2016. Below are the points I observed from that first try.
  • As suggested by The Darkness Principle, the key to win this game is communication, communication, and communication. A good team did a lot more talking than their lesser counterparts. Members in a good team were more willing to listen to each other and showed less tendency to suppress minority's ideas. The existence of an alpha role was subtle. All are desirable behaviours for brainstorming sections. The good team also utilized the role of Tester better (raise more questions and shorter feedback circle). 
  • Whereas in the bad team, where The Analyst and The Designer had troubles expressing their vision, the team stumbled trying to get the sub-components right, left alone combining them together. With bad vision, the team fought for an alpha role, a process in which team members just went ahead trying to prove them right, spent less time listen to each other, and suppress more "silly" ideas (unfortunately, a few of them were really good). And in general, the bad team were more distant to leadership (members with photos) and treated them as checkpoints, rather than equal collaborators. 
  • The gap of speed between a good team and a bad team can be quite big, up to 100% (my subjective observation). This had a couple of by-effects. The good team had way too much free time. The bad team is demoralised. It was suggested to have not 01 host for the entire game but 01 host for each team, constantly checking with each other and dropping hints to keep teams on pace.
  • Can consider switching roles between rounds, so that people can try different positions, have time to slow down themselves and do internal retrospective.
  • Stronger emphasis on mini retrospective meetings. The debut was run with participants all standing. While this was good for the game play and team dynamics, it thwarted the necessary pause to retrospect what happened, what went well and bad, any improvement to make.
  • At some point, The Testers would try to manage the whole project, because they have the complete view of the structure. But as they aren't allowed to give instructions, team needed to have good strategy to query the correct requirements. So far, none of the teams spent time on improving the art of asking questions.

Sunday, February 7, 2016

2015 - I don't trust my plans any more

In contrast to the unpredictable 2014, 2015 was a year full of plans and projects. I planned my life around the sparks of changes in 2014, hoping that I could keep the momentum and better myself every day gone by. And of course, like every single time I make any sort of plan, life tossed it into all weird, twisted, yet still amazing, directions.

1. I moved to Singapore, and left.

Open door concert, which I have missed dearly

2015 indeed started big. I was relocated to Singapore and tasked to lead an effort to produce a gaming smartphone. A freaking actual smartphone. An odd request. But why not?

The original idea was nothing short of moon shooting: an Android-based phone with hardware customized for gaming and bulky design as eye candy. The learning curve was steep, gave me butterflies in the stomach for months. I digested books from hardware design to manufacturing techniques, became proficient at navigating through the dissatisfying interface of Alibaba, and went from trying to pronounce CyanogenMod correctly to a walking wikipedia of Android forks.

As a city, Singapore is extremely modern, convenient, and safe. Hate to admit but Singapore's tech community was way more active than Vietnam's with events basically every day. There was much to think about those events. On one hand, they were trendy with all the latest hypes, people were talking about trips to Silicon Valley as if they were weekend getaway (sorry, I grew up on a mountain), and all the big shots have offices there. On the other hand, a few were just sales pitches in disguise, some were fuelled by consultant bullshit (especially anything "IoT"), and the rest managed to remain quite abstract and high level. Actual coding could still be found at hackathons though, which were plenty. But the most important thing was that everything was there and very well-established. So much that I didn't feel like there was a need for anything new.

It took 5 months (or 6?) to present two working prototypes with a detailed production plan. Just to be rejected by management. For the same reasons raised since the very beginning: huge upfront investment, nonexistent margin, and unless one is an Ivy League member, consumer would not bother. ¯\_(ツ)_/¯

Without going any further to the misalignment between me and management, that was the background of the decision that, after half a year living in Singapore, it was time for me to go home for more adventures, and bigger social impact.

2. I (still) organized BarCamp Saigon.

Meet the team

First thing I committed to upon returning to Saigon was to pull together BarCamp Saigon 2015. After the nightmare of 2014, I thought I had learned a thing or two. Well, guess who managed to surprise himself :D

All jokes aside, the preparation of BarCamp Saigon 2015 was a lot smoother, the team had one event under their bell, which boosted confidence, and I received superb support from professor Edouard, to whom BarCamp Saigon 2015 also happened to be his first public event as the manager of RMIT's IT program.

And thank to that joint effort of everyone, I was given some room to think about the future of BarCamp. BarCamp Saigon has been around since 2008, and during that, a community has grown around it. From a tech event, every year we are observing a more diverse crowd attracted to the openness and democracy of BarCamp. The challenge the BarCamp team needs to face is to maintain the same factors that have kept BarCamp an one of a kind event in Vietnam, and at the same time, evolve to meet the quality requirement of niche segments, an important factor if we want to set the standard for a community event.

In the foreseeable future, BarCamp will remain to be an umbrella event for all sort of topics as long as someone want to share, and someone willing to listen. We are looking for more focused events, like TechCamp for hard-core tech, and, say, BulbCamp for creative people. But an event like BarCamp is an intensive effort. we need 3 months of preparation for each. The majority of time goes into looking for sponsors, and coordinating sponsors and vendors both before and on event day. And most importantly, we don't have enough people to sustain more than an event per year, and we are subject to terrible terrible voluntarism. What works in the tech circle might not work elsewhere, and we might end up solving problems that don't exist, or generating irrelevant values. It works way better if someone with their industry inside decide if their industry can use an unconference like BarCamp to spread a fresh air, and we contribute our expertise from many events in the past, and build something new from that combination. So folks, if you think BarCamp makes sense for your industry, please spread the word, we will take 2016 together!

3. I started training to be a long-distance runner.

Who could have known this pearl in the heart of a mega city?

Singapore's national sport is windows shopping. But it was there that I was blessed to meet Deny. Deny started off as the CTO of my then company for a very short period of time, but remained to be my mentor ever since.

By introducing me to MacRitchie reservoir, Deny unfolded a hidden part of the mega city. MacRitchie is an ever-green tropical forest growing around a lake which was meant to serve as a stable fresh water supply for colonial Singapore, a hundred years back. There are traits through the woods and around the lake shore. Some of these traits link with other upper North reservoirs, requiring no less than 8 hours to explore. I am weak, I am always content with 4.8km and 11km traits :P

Deny is a long-time runner and had completed a full marathon a few years ago. I believe it was none of his intention to squeeze the living breath out of the poor me, but he often held conversations as we jogged under forest shades, those that always started with work (and I felt compulsory to respond) but soon expanded over various topics of life. Needless to say, the first few trips were brutal. It called for mammoth effort to both keep up with his pace and follow the on going convo. I have to say, desperately grasping some air to feed my brain with oxygen and restraining not to split any stupid nonsense is an experience very close to drowning. I am pretty sure there were occasions all I could do was mumbling senselessly. Sorry Deny!

HCMC 21K!

But those early days were crucial for my foundation, and bred a new hobby that, by now, would very likely to stick with me for a few years. The whole running and exercising thing has taken me to a number of interesting events, including Bali 10K, Fansipan trek, and HCMC 21K just a few weeks ago. But the most significant one is to be able to run around Xuan Huong lake, the heart of my home city, 6 days in a row. A task I couldn't do back in high school (we boys typically needed to short break in the middle). The thought that 26-yo me is doing something a bit better than 18-yo me is really cheerful.

I am the kind of person who finds being alone enjoyable (which needs to be differentiated from being lonely, which sucks really hard). Running alone an hour or two, or programming 4-5 hours straight is neither boring or difficult, but pleasant and productive. The essence of running is to exert oneself to the fullest within one's individual limits and I hope this can serve as a metaphor in my life too. (Though recently Trang has managed to find her way into my lonesome solace, I am really glad about this disturbance. Perhaps more on this next year)

4. I wrote vividly.


I wrote a fucking blog post every month in 2015.

There, I said it, such an achievement. And I wouldn't have been able to accomplish that without shredding nonexistent constraints (and a delusion) I put on myself.

  • That I shouldn't stray away from engineering topics. While it is true that I am strongest at engineering and in the past has met some instances where engineering principles made great sense in life. But the other way also works. One's senerity is reflected in his work and being only one-sided one runs the risk of building his own personal problems right into the product itself. Open up to all sort of topics gave me new sources of inspiration and seed diversity into my career.
  • That my Vietnamese was lame. That is actually true too. 
Tiếng Việt của tôi nghe lộc cộc như ngựa chạy. Hồi còn học văn, tôi nghễnh ngãng, lại không đánh giá đúng tầm quan trọng của ngôn từ. Tôi chỉ nhớ được, là lần đầu tôi phải dừng lại, nói lên điều mình suy nghĩ bằng con chữ, là một bài luận TOELF, đương nhiên là bằng tiếng Anh. Cái này kéo dài trong nhiều năm liền, từ phổ thông đến sau đại học. Chả vẻ vang gì, dở tiếng mẹ đẻ của mình tôi lại còn thấy nhột. Dù vẫn còn khoảng cách về chất lượng mỗi khi dịch bài từ tiếng Anh sang tiếng Việt, và ngược lại, mọi thứ đang trở nên tự nhiên hơn tí tẹo.

I was very unskillful at using Vietnamese. I was an absent-mind kid and has always regretted that I didn't develop an appreciation for literature when I was younger. As far as I can remember, the first time I looked into myself and tried to recreate my stream of thoughts in words, it was an TOEFL essay, obviously in English. And that continued to be my dominant form of communication for many years. But being suck at my mother tongue is not something I am proud of and I don't like the feeling of being less than proficient at something as important as communication. Though there is still a degrade in quality when I translate a post from one language to another, it is coming a tiny bit more naturally now.

  • That one day I could turn writing as a hobby into a means of monetization. Writing as a hobby is great. And if I can live by writing, it is even greater. The core idea of making money from writing is that someone must find my writing enjoyable. And nothing is wrong with that. People enjoy a whole lot of thing, there must be someone enjoying my writing. But the trouble was that once I had that idea in mind, I found myself writing less as a way to express myself, and more as a way to please others, the almighty "audience" (who might not even exist). And that was bad. I kept circling around basic topics, known facts, and nothing controversial, because those were low-handing fruits. I was neither productive, nor proud of my individuality. And having an agent nagging about what I should and should not write (though more like must, if I wanted to be published), was annoying as fuck. So I just dropped.

I only want to write because I am a human being with thoughts and feelings, and because no one can stand me being emo and pouring my thoughts on them so randomly.

5. I found these people.


I still remember I found this group of people a hot, sweaty night of April, in Saigon, during one of the many trips between SGP and SGN I had. Though till now, the exact reason the group formed and clicked and jelled so well is still beyond my understanding, and therefore obviously beyond words. Though I am suspect it is Thanh's good and cheerful nature that makes everyone at ease!

We have already had a lounge as our hub of activity, gone for a few trips together, and given each other names that would embarrass the shit out of anyone in public. Out of sudden, I realize that "Damn, these weird crazy people are my greatest dose of anti depression now". Dũng, in case you fucker are reading this, you are important too, but you're not a new dot in 2015. You are a rat's ass dot since junior high!







If there is anything 2015 has taught me well, it is that planning is necessary and it gives you a long-term vision how your life plays out, but it is also important to listen to yourself and the omens of life. Often when we are too focused on the goal (and plans really help that), we underestimate our natural ability to navigate complex system and improvise, forget the original reason of all these plans, and lose track of the journey.

My plan to make a smartphone was dropped like a sack of potatoes, but I got to go through a learning period of hardware design and manufacturing that wasn't available elsewhere.

My plan to organize BarCamp Saigon 2015 didn't turn into a disaster, though lot of unexpected happened. We still haven't missed a single year of BarCamp.

My plan to take on HCMC 21K run scattered as I failed to follow a rhythm and both over stressed my muscles and gave them too much rest. I crawled back to the finish line with cramped legs, but finish the race I did.

I can go on like this for a while, but it is just rant, you get the idea.

At the end of the day, it doesn't matter what happened or whether a plan went well, but that I don't give up on becoming a more okay person and, this is new, who I go through stuff with.

Hello 2016!!!

2016 started off with great photos!!!

Sunday, January 24, 2016

Run like you stole it!


How my first half marathon went, broken down to km (don’t mind Nike+, it was just giving me ego boost with 30K)

0 km: Whoa there must be a few thousands of people here. And we do smell like thousands of people. EH! Second wave? I have to wait for another 5 minutes? ... It must have been more than 5 minutes now, any chance they forgot there was a second wave? Oh okay, here we go!!!

1 km: Alright, easy, I got this, keep my speed steady and don’t get caught up in a race this early. Did I just see a girl in seifuku?

2 km: Hoà? Where are you Hoà?

3 km: Cool water! Okay lets have a gulp or two and splash some on the head. Oops, too much. I think I missed the last trash bin, I have to keep this half empty bottle now? I will just take a paper cup next time.

4 km: My legs are still alright. Looks like the muscle tension fear is a hoax!

5 km: So that’s the track for 5K runners? Dũng gonna be fine.

6 km: Another water station, time to drop this bottle and ops for a paper cup. Lets splash some over my back, the last one was very refreshing. Oh shit, this isn’t water, it’s electrolyte drink. Oh crap. Oh crap. Bad mistake.

7 km: Lets have some high fives with volunteers, everyone loves high fives. Hope my hands aren’t too sweaty.

8 km: What the fuck? The professionals are on their way back already?! Keep calm, keep calm, gotta reserve stamina, I haven’t even reached the bridge yet.

9 km: Better not mix up water and electrolyte drink this time. Whoa, splashes of cool water feel really good. I wouldn’t mind an ice bucket challenge now.

10 km: Yay half way! I am still in good shape. Lets climb up this bridge!!! Wait, holy fuck, the bridge towers are miles away, I can’t even get a good look at it from here, are we fucking running over there?

11 km: My legs are not alright! The tendons over my heels are tensed. I really should have taken more uphill running on the treadmill. And yes, the girl in seifuku is real, she even has her red backpack on, and she is dashing like crazy on her way back!

12 km: Is there no end to this god damn bridge? This slope must be 15%. Gee, I am as slow as walking now. And why don’t they mark the distance on the bridge?

13 km: Yes! Turn around! Yes! There is just downhill now.

14 km: Try. Not. To. Walk. Talking to myself it is easier to keep running than multiple small stops. Murakami said he never walked in a running competition. Be like Murakami.

15 km: I don’t think Murakami said anything about stopping for a break. Have to stop now. Why I am getting sleepy?

16 km: The water station should be just around the corner right? I believe I can run till there. Nope, nope. Too tired. Have to stop now.

17 km: I can’t run anymore. My mouth tastes weird. I want something sweet, like, diabetes-guaranteed sweet. Did Hoà say something about choc last night? Where the fuck is Hoà? Screw Murakami, I am walking!

18 km: I think the can of red bull I just got from a street vendor is kicking in. My lung has stopped burning, and I can feel my legs again. Yosh, about time, all these ladies are passing me!

19 km: Arrggg my right calf cramped. Freak it is twisting and moving on its own. Oh shit, not you too left thigh! Oh hey random runner, thanks for your spray.

20 km: I bet that if I stopped pulling either of my feet, my legs would tangle each other like two pythons. Come on guys, don’t you dare failing me!

21 km: Holy guacamole! Stay cool. Don’t scream like a teenage girl. Smile for the cameras. I crossed the finish line!!!


All jokes aside, I did have to walk more a bit more than a km, but other than that, I got to the finish line in 2:34:47, around what I expected, and really enjoyed the race. Such a blast.

Phú Mỹ bridge is a beast. I felt really good entering the bridge, and really bad exiting it. I understood there would be quite some uphill, but didn't know such a tremendous impact on my stamina. And seriously, some runners came back on ambulance.

Exiting the bridge, my energy went on a spiral downward. Despite all will power, I simply couldn't move my legs, and had to walk between km 17 - 18. Not promoting a dose of energy drink in a race, but practically, the decision to get a can of red bull saved my ass there. It prompted to me that I was barely qualified for a half marathon and training alone wouldn't be enough to better the result. I have to watch my diet, and build up more muscles for all the energy my body needs for long distance running. Tough!

And the last 3K with both legs cramped was really brutal. In normal condition, I would have freaked out seeing my muscles twisting and moving like they have their own brains. But I was desperate. Painful as it was, I am glad I neither stopped or walked on that part, it helped ease the guilty of walking earlier.

I am giving myself a break over the next couple of weeks (with Tet in the middle), and will be soon back on the track. I feel a strong need to hone my skills on 21km track before ever planning for anything higher. Gee, I have already given this running thing much more effort than I ever did for university entrance exam :)