Saturday, July 26, 2014

Build your product - Làm product

“Build your product” is a popular catchphrase these days, used so much that it makes its way to a small set of national keywords. From a young startup wishing to disrupt a traditional industry to an hundreds-employee outsourcing firm, everyone is talking about building a product, the one of their own. Though no one charges tax on dream, what makes “build a product” such a keyword? Without below things, I would have never left my life of luxury to engage in a long, painful journey.

* Build your product is the condition to be your own boss. IT workers, either as a freelancer or in corporate environment often find themselves providing service, offering the best possible technical solutions but possessing little authority to make decision. Except those who have accepted their places in the corporate ladder, the rest suffer from more or less depression of being a second-class citizen.

* Build your product makes you “rich”. Financially, a common thing about doing outsourcing or being employed is that you are only paid an amount enough to survive till the next paycheck, so that you are kept in the infinity circle of work. Emotionally, the journey of building a product (and an organization around it) drags you out of the moderate baseline of an office staff, and throws you into a roller coaster of feelings, from cheerful success to bitter failure. A colorful journey indeed.

* Build your product puts you onto a catapult that shoots you up high into the sky so you can see beyond the well hole and make a big bold step out of your comfort zone. No longer limited to a creasy specs piled up in a cubicle corner, the job opens itself to endless possibilities. Whatever that can add add value to your product, from customer support, business development to watch out for competitors are all now parts of your job description. And oh boy no one gonna “spec” that.

* Build your product lets you climb your private mount Everest. Not everybody can reach the submit, many will fail and be forgotten. But unless for at least one time you seriously put on those hiking boots, many years from now you will find yourself ugly, old, looking at the past and find emptiness. Identify your own Everest is half the battle. Onward!

* Build your product is a chance to write your story, a story worth sharing. Many great ideas started with an unrealistic action. Believe that not all pages are born equal, some are more equal than others and decide to do something about it from a dorm room is an 
unrealistic action - Google. Publicize the source code of one of the most complex software application in history and expect free contribution from community is an unrealistic action - Linux. Exchange millions of messages that last a few minutes is an unrealistic action - SnapChat. These stories are attracting and inspiring because they go against common convention (at the moment they were created) and that gives everyone a hope. A hope to triumph over adversity. People don’t buy what you do, they buy why you do it, the story that isn’t about yourself, but about them and what they can be.

========

“Làm product” là catchphrase khá nổi hiện nay, xếp vào hàng từ vựng quốc dân, anh mà không biết thì dốt như con tốt. Từ hội “trẻ-khoẻ-rẻ” làm khởi nghiệp nuôi chí "build cái app" nức lòng quần chúng nhân dân, hay công ty gia công gần trăm người “outsource nuôi miệng thôi, ước mơ làm product chứ”. Dẫu “đời không như là mơ, nên đời thường giết chết mộng mơ”, điều gì làm hai chữ “làm product” có giá dữ vậy? Cực thí mồ, không có những điều sau thì tôi chẳng bỏ chăn ấm nệm êm mà đi làm product.

* Làm product là điều kiện để làm chủ. Người làm phần mềm dù freelance hay trong doanh nghiệp thường rơi vào cái thế của người làm service, mang đến các giải pháp khả thi nhất nhưng không nắm quyền quyết định cuối cùng. Trừ những người xác định rõ “người ra tiền là người có quyền”, còn lại đều ít nhiều ức chế với cuộc sống của công dân hạng hai.

* Làm product mới “giàu". Nói về kim tiền, làm gia công, làm thuê ở đâu cũng vậy, người ta chỉ trả cho mình một khoản tiền đủ giúp mình tồn tại, để tiếp tục nai lưng ra làm. Về đời sống tinh thần, làm product kéo ta ra khỏi đường trung bình ảm đạm của anh nhân viên văn phòng, quăng vào tàu lượn siêu tốc của những rạng ngời thành công và cay đắng thất bại. Là một chuyến đi nhiều màu sắc.

* Làm product để nhìn ra khỏi miệng giếng, bơi khỏi cái ao làng. Không còn là bản specs cong queo vứt ở góc bàn, công việc mở ra rộng khắp. Bất kỳ hoạt động nào gia tăng giá trị của sản phẩm, từ dịch vụ chăm sóc khách hàng, qua phát triển thương hiệu đến cạnh tranh với đối thủ, giờ đều là việc của bạn. Làm product như cái ná chun bắn bạn lên thật cao, nhìn khắp bốn phương tám hướng, nhìn lại chính mảng ghép của mình trong guồng máy kinh tế. Còn rơi xuống sao thì kệ thây.

* Làm product là vượt qua đỉnh Everest của mình. Rõ ràng không phải ai cũng thành công chinh phục đỉnh vinh quang, có thể bạn sẽ thất bại, sẽ bị lãng quên. Nhưng nếu bạn không ít nhất một lần nghiêm túc xỏ chân vào đôi giày đinh, có một ngày bạn sẽ già, sẽ xệ, nhìn lại và muộn màng hối tiếc. Xác định đỉnh Everest của mình là một nửa trận chiến rồi. Xông lên!

* Làm product để viết câu chuyện của chính mình, một câu chuyện truyền mãi. Nhiều ý tưởng vĩ đại thai nghén từ hành động hoang tưởng. Tin rằng không phải mọi trang web đều bình đẳng và cố gắng chứng minh từ phòng ký túc xá là hành động hoang tưởng - Google. Công khai mã nguồn một trong những chương trình phức tạp nhất trong lịch sử để đổi lại đóng góp từ cộng đồng là hành động hoang tưởng - Linux. Trao đổi hàng triệu tin nhắn chỉ tồn tại trong phút chốc là hành động hoang tưởng - SnapChat. Những câu chuyện này cuốn hút và truyền cảm hứng, vì chúng đi ngược lại suy nghĩ thông thường (tại thời điểm chúng ra đời) và mang cho ta hy vọng. Hy vọng chiến thắng nghịch cảnh của chính mình. Mọi người không chỉ mua sản phẩm bạn làm, họ mua câu chuyện bạn kể, câu chuyện không chỉ có bản thân bạn, mà có cả hình bóng của họ, những gì họ muốn trờ thành.

Saturday, June 28, 2014

[RMIT Alumni Profile] - Nguyen Nam Khang, Bachelor of Information Technology

Know what you want and make it happen

Graduating from RMIT with a GPA of 4.0, organizing educational activities for the non-profit group MultiUni, and working as Vietnam's Chief Representative of Hong Kong software company Cogini, Nguyen Nam Khang knows how to get the best out of himself.
“Know what you want, but never lock yourself into just one thing. Instead, try to develop a variety of knowledge areas and skill sets,” Khang says.

Motivated to learn

Khang always wanted to become a computer programmer, so when the time came he chose the Information Technology program at RMIT Vietnam
“During my three years at the university, besides gaining and extending specialised knowledge, I took every chance to develop other important skills such as self-directed learning, time management, presentation skills and teamwork. These are significant skills for every job."
According to Khang, it was thanks to the student-centred teaching methodology at RMIT that he effectively managed many aspects of his study, including choosing class schedules, learning new methods and deciding his future direction.
“In an environment where students have the chance to interact, discuss and even debate directly with lecturers and classmates, where different learning objectives are respected equally, I felt motivated to dig deeply into IT knowledge from many sources and to apply the learning method that worked best for me.”

Inspired to spread his wings

Khang believes that participating in extracurricular activities is another effective way for students to try various roles. Leading RMITC, the University’s student-run information technology club, was Khang’s first management experience. The club gave him the opportunity to not only expand his IT knowledge but also develop organizational and project management skills.
Khang also participated in educational projects with MultiUni, a non-profit organisation that aims to help young people better transition into the real working world. Khang helped organise the workshops and shared his knowledge and experience of IT with the program’s participants.
“Pursue your passion with all your heart. As long as you try your best and do everything with the fullest enthusiasm, success will come to you sooner or later,” he says.

Realising his dreams

In 2010, one of the IT lecturers at the University introduced him to an internship opportunity at Cogini Hong Kong, an international software development and systems integration company serving clients from all over the world.
“Having studied in the international environment at RMIT, I was able to work well with other colleagues from different countries.”
In February 2011, Cogini established its first office in Vietnam and Khang was appointed as their Chief Representative. He is now in charge of running the office, developing relationships with customers and managing human resources. However, Khang still manages to find time for his true calling as a senior web developer.
Willing to step out of his comfort zone to experience different roles, Nguyen Nam Khang succeeded in pursuing his dream. He is typical of today’s successful youth: dynamic, eager to learn and always devoted to his passion.

[P/v ITViec] - Tính xấu nhất của developer là “Lười”

This dated back to December 2013 when I was working at Cogini, but recently I have some free time and figure that it is nice to keep a copy of this interview for myself. And sorry folks, the interview was in Vietnamese.

=============

Sinh năm 1990, đã đi làm được 3 năm với hiện là trưởng đại diện của Cogini tại Việt Nam với văn phòng khang trang ở quận 7 và hơn 20 nhân viên. Khang Nguyễn là 1 trường hợp dân IT làm ở vị trí quản lý nhanh và sớm so với tuổi. Hãy cùng ITviec khám phá xem anh chàng này có gì đặc biệt.

“Học xong 2 năm đầu ở RMIT, Khang được thực tập 6 tháng tại Cogini Đài Loan nhờ mối quan hệ của các thầy dạy trong trường. Sau 6 tháng, sếp hỏi có muốn về Việt Nam mở chi nhánh Research & Development của Cogini không. Khang về nước, gọi mấy thằng bạn học cùng ở RMIT vào thành lập công ty luôn.”
Làm thế nào để Khang thuyết phục được sếp cho phép mở chi nhánh R&D ở Việt Nam khi còn chưa tốt nghiệp đại học?
Lúc đó Khang cũng chơi liều thôi, dù giờ nghĩ lại thấy cũng có thể hiểu được. Khang đã có kiến thức khá vững về công nghệ, chứng minh được điều đó bằng kết quả làm việc của mình khi ở Đài Loan, và đã có kinh nghiệm thành lập và điều hành CLB IT của RMIT được 1 năm.
Làm rồi mới biết hóa ra điều hành công ty cũng không khác điều hành CLB IT là mấy, trừ chuyện bây giờ mình làm với khách hàng thật và mất tiền là tiền thật.
Vision của Khang cho Cogini là gì?
Là xây dựng Cogini thành 1 nơi làm việc vui vẻ (a fun place to work).
Có rất nhiều điều bạn có thể tập trung vào làm khi xây dựng 1 công ty: lương bổng, chương trình đào tạo, khách hàng… Khang chỉ có thể tập trung vào làm 1 điều và làm thật tốt điều đấy, và Khang chọn yếu tố fun cho Cogini. Mọi quyết định của công ty đều được dựa theo tiêu chí nó có tạo ra 1 nơi làm việc vui vẻ hay không.
Cogini = a fun place to work
Nhưng còn rất nhiều yếu tố khác, như ý nghĩa trong công việc, cảm giác quan trọng, doanh thu… Tại sao lại chỉ là vui vẻ?
Có thể Khang đã sai lắm chứ. Khang không biết hết được, nên Khang cứ làm thôi, rồi có gì sửa sau.
Cogini team building tại Cần Giờ
Ở công ty có nhiều người giỏi hơn Khang?
Hầu hết mọi người đều giỏi hơn Khang ở 1 điểm nào đó. Khang không thể tự mình làm hết mọi việc được, nên muốn mời những người giỏi hơn về để làm việc tốt hơn mình ở các mảng khác.
Vậy Khang có gì hơn họ để Khang tiếp tục ngồi ở vị trí leader của công ty?
Nếu có 1 điều Khang làm đặc biệt tốt, đó là giữ vững vision về môi trường làm việc vui vẻ của công ty trong mọi tình huống, mọi quyết định. Chắc là làm cũng được, nên đến giờ vẫn chưa thấy bị đuổi.
Ví dụ cho điều này?
Nói 1 cách hình tượng vui như thế này, mỗi khi nghĩ đến việc đưa offer cho ai, Khang đều tự hỏi mình: sau 3 tháng làm việc với người này, mình có dám nhìn thẳng vào mặt họ và nói “F you” không, và họ có phản ứng lại theo kiểu “F you, too” không. Trả lời có cho câu hỏi này là điều kiện cần.
Khang là người làm việc cá nhân hay đồng đội?
Khang thích câu “What you do doesn’t matter; whom you do it with matters.” Nói cách khác tính bầy đàn của Khang rất cao. Tất nhiên là đồng đội rồi.
Khang và team mình ở Cogini
Quan niệm của Khang về nghề lập trình viên?
LTV là nghề đưa ra giải pháp, chứ không phải là xây dựng sản phẩm.
Nói theo 1 cách khác là LTV học code không thôi không đủ. Họ phải ra ngoài kia, ngắm nhìn cuộc sống, nhìn ra những vấn đề hiện có và suy nghĩ về việc dùng công nghệ để xây dựng giải pháp cho những vấn đề đó.
Các trường ĐH và kể cả xã hội nói chung quá chú trọng vào việc giới thiệu những công nghệ mới nhất, hiện đại nhất. Điều này làm LTV nhiều khi quên mất rằng bản thân công nghệ chỉ có ý nghĩa khi nó được dùng để giải quyết 1 vấn đề nào đó.
Khanh áp dụng điều này vào công việc thực tế như thế nào?
Nguyên tắc của Khang là không bao giờ tin tưởng khách hàng của mình ngay trong lần gặp đầu tiên, và không bao giờ tự cho rằng khách hàng biết về sản phẩm của họ nhiều hơn mình. Khách hàng thuê mình để giúp họ giải quyết 1 vấn đề mà tư họ không giải quyết được, vậy có gì đảm bảo giải pháp họ vẽ ra cho mình xây là giải pháp tối ưu?
Ví dụ nếu 1 bà chủ quán cà phê đến nhờ Khang xây 1 billing system cho quán. Nếu muốn tìm ra giải pháp tối ưu, người Khang cần nói chuyện với lại không phải là bà ấy, mà là nhân viên quầy thu chẳng hạn.
(Đọc thêm về bài blog của Khang về chủ đề LTV và bài tập về nhà tại đây)
Tính xấu nhất của developer ở Việt nam?
Lười nâng cao giá trị bản thân. Ví dụ như 1 anh chàng sẵn sàng ngồi 5h liền chỉ để chơi Dota, trong khi anh ta có thể chơi 5 games khác nhau để tăng kỹ năng. LTV mà chỉ biết làm đi làm lại một thứ thì sẽ chỉ đứng mãi 1 chỗ, mà nguyên nhân chính chỉ tại chữ “lười.”
Làm thế nào để nâng cao giá trị bản thân?
Khang hay hỏi nhân viên của mình là: “Tao không hứa được là Cogini sẽ ăn đời ở kiếp với tụi bây. Nếu ngày mai Cogini phá sản, tụi bây có chắc chắn mình sẽ tìm được việc gì mới ở 1 công ty tốt hơn và trả lương tốt hơn không?” Nếu câu trả lời là không, tức là họ đang không tự nâng cao giá trị bản thân.
Nói 1 cách sách vở hơn, hãy tự hỏi mỗi ngày là hôm nay mình có làm điều gì có tính rủi ro hay không. Rủi ro chính là thước đo xem bạn có đang học được điều gì hay không.

ITviec muốn phỏng vấn Khang với tư cách là 1 kỹ sư IT trẻ thành công sớm, để truyền lửa và đam mê cho những bạn trẻ khác.
Ồ vậy thì Khang không chắc mình có phải là người ITviec đang tìm kiếm đâu nhé. Khang sợ 1 bạn trẻ lửa cháy hừng hực tìm đến Khang có thể dễ bị dập tắt lửa vì Khang không chém gió giỏi. Ngày xưa Khang nói dối 1 cây đấy, nhưng giờ Khang nhận ra nói dối hay chém gió lúc đầu cuối cùng sự thật vẫn là sự thật.
Khang sẽ không nói về với Khang để cùng xây dựng những sản phẩm có tầm quốc tế, rồi hôm sau giao cho bạn ấy 1 project về quán cà phê nhỏ trên đường Đồng Khởi. Khang có gì nói nấy, và nói “Tôi không biết” rất nhiều, vì thực sự có rất nhiều điều Khang không biết. IT cũng như những ngành khác, có lúc này lúc khác. Tốt nhất là nên nhìn thẳng vào thực tế và tìm ra giải pháp, chứ chém gió quá cũng chỉ đến thế mà thôi ha.

Cám ơn Khang đã có 1 bài phỏng vấn ít gió nhưng vẫn chất lượng.
Cám ơn ITviec.
http://blog.itviec.com/2013/12/cogini-khang-nguyen-phong-van/

Saturday, June 14, 2014

Deploy (aka Đi Đẻ)


(Scroll down for Vietnamese)

The end of the day is approaching, dragging along a dimming sunlight. Breezes from the river bank bring respite to the scorching heat of summer. Despite of that, thousands of exhaust pipes, stuck up in every intersection, are releasing enormous smoke and heat, burning the street like a frying pan. Taking a breath full of the smell of sweat and exhaust gas, he is mumblingly cursing this full-of-construction god-damn city. Moving step-by-step in an endless traffic jam, he is breathing heavily, his heart is missing a beat here and there and his adrenal gland is filling him up with adrenaline. Everything reminds him of the uneasy feeling he had in the dates with his first lover after colleague. But no, he has no date tonight. There is no one in this god-damn city looking for him. Tonight he deploys!

3 hours prior to deploy.

The web site is given the last check. It is hard to keep looking at these web pages with a fresh eye. For many weeks, he has been staring at them as much as his own nose. And just as with the nose, his brain has already decide to remove the web site interface out of its vision. Regardless of Gestalt and his theory, at this moment, he is only capable of noticing tiny, little bugs. Margins left and right are not even. The mouse cursor isn’t changed when hovering over the logo. Some log lines are left in JavaScript.

     PM: Hey why is the new CSS not displaying?
     Designer: Have you cleaned your cache yet? And which browser is that, by the way?
     PM: IE6 ma’am. The client keeps mentioning there is a portion of his users who are still using it so I thought I should give it a try.
     Designer: Bloody hell! Remove that motherfucker browser from the contract next time, ya hear me?! 
     PM: Arggg just fix it. Next time when we do our own product, you can remove as many browsers as you want.
     Designer: Man, this HTML is ugly. This Friday meeting, I gotta repeat the convention of…

An hour prior to deploy.

His brain works best when it is cool down. And in this tropical summer, that is precisely sixty minutes right before the deploy time. The dull mind filled with sweat and exhaust gas earlier suddenly brightens. The spec, as long as the Ramayana, that he has miserably paged through the last few weeks, now becomes transparent and comprehensible. And huge bugs start to slap him right in the face. Handicap load balancing. Undocumented features. And greatest of them all, the specs itself has bugs!

     PM: Dude, why can’t I extract patient medical info from the system?
     Developer: Duh! The other day you said it was for the next release, didn’t you?
     PM: Right right, but without medical info, we can’t draw graphs in the report, which is for this release.
     Developer: That code was written centuries ago, all hard-coded man!
     PM: WTF. I told you to re-write that ancient code months ago!
     Developer: Whaaat?!

15 minutes prior to deploy.

The clock is ticking to a new day. In the small alley, his room is the only left light on. Like nocturnal animals, this is the time the deploy troop most active. In the darkness of the sleeping city, the troop holds a hope of changing its life with a magical deploy. By different means, all the people involving in the project are staring at the website. Client and designer, through browsers' interface, are looking at the glorious outfit of their brainchild. Developer and sysadmin keep looking at the dark terminal, skimming through thousands line of code. And he, running back and forth between the two. The server, resides in an unknown corner of the world, is taking its chance to act as quirky as it can, refusing to work until everything, yes every single thing, is perfect.

     Sysadmin: Holy shit! It is giving a database error! Dude check it out!
     Developer: Hey I can’t access to it! You haven’t created an ssh account for me yet!
     Sysadmin: There you go, hurry up!
     Developer: Oh here it is, the database is empty. Lets upload a dump from your local server.
     Sysadmin: Huh, wouldn’t it be quicker to just use yours?
     Developer: He he, I don’t remember that long command. Sorry... :D
     Sysadmin: WTF are all developers as lazy as you?
     Developer: Well, Bill Gates once said that….
     Sysadmin: Shut up!!!

Finally, after all the troubles, hardware, software, and peopleware, the deploy is completed. One more project is delivered on time. Everyone congratulates each other perfunctorily then quickly retreat to bed, hoping for a short nap before the working day tomorrow. The last light in the alley eventually goes out. The body that has been run on adrenaline since the afternoon refuses to sleep, yet has no energy left for any activity. His eyes half close from sleepiness, dreaming of the heart attacks when server crashes. Taking a deep breath, “the night is long” he talks to himself...

===================================

Tan tầm, trời tắt nắng. Cái nóng bức người mùa hè đã dịu bớt và gió từ bờ sông thổi vào man mát. Nhưng hàng ngàn cái ống bô dồn ứ mỗi ngã tư vẫn nhả khói, phả hơi nóng vào mặt đường như hoả lò. Hít một hơi đặc mùi mồ hôi và khói bụi, hắn lầm bầm chửi rủa cái thành phố chết tiệt đầy những lô cốt và chiến hào. Trong cái điệp khúc chạy-thắng, nhích từng bước một, hắn thở gấp gáp, tim đập loạn nhịp và tuyến thượng thận bơm đầy adrenaline vào máu. Hắn nhớ đến những lần hẹn với cô người yêu đầu sau đại học, hắn cũng nôn nao như vậy. Nhưng không, đêm nay hắn không gặp ai cả. Chẳng còn ai trong cái thành phố chết tiệt này trông mong hắn. Đêm nay hắn deploy!

3 tiếng trước deploy.

Trang web được rà soát lại. Thật khó để nhìn những trang web này với con mắt tươi mới. Từ nhiều tuần nay, hắn đã nhìn chúng nhiều như cái mũi của chính hắn. Và cũng như với cái mũi, bộ não đã quen với việc loại hẳn giao diện trang web ra khỏi tầm nhìn của nó. Mặc kệ thuyết Gestalt của lão Ehrenfels tuốt tận bên Áo Địa Lợi, giờ phút này hắn chỉ nhìn thấy những lỗi vụn vặt. Canh lề trái phải không đều. Logo di chuột lên con trỏ không thay đổi. Code JavaScript còn mấy dòng log.

     PM: Ê bà sao CSS mới không chạy vậy nè?
     Designer: Ông có xoá cache chưa đó? Mà xài browser nào vậy?
     PM: IE6 má ơi. Cái này lần nào họp với client cũng bị nhắc hết nên bữa nay tui test xem.
     Designer: Tiên sư! Lần sau gạch IE ra khỏi hợp đồng đi nghe chưa!
     PM: Mệt quá sửa lẹ đi. Ráng cái này, khi nào làm product của mình rồi bà muốn 1 gạch hay 2 gạch cũng được.
     Designer: Mà sao code HTML gớm quá vậy nè. Họp cuối tuần này phải nhắc lại vụ...

1 tiếng trước deploy.

Bộ não hắn hoạt động tốt nhất khi được làm mát. Mà trong mùa hè miền nhiệt đới này, đó là vào lúc còn vỏn vẹn 60 phút là deploy. Đầu óc ban chiều đặc lại trong mùi mồ hôi và khói bụi giờ minh mẩn hẳn. Bản spec dài như bộ Ramayana mà nhiều tuần qua hắn khổ sở lật qua lật lại, dò tới dò lui giờ rõ ràng, dễ hiểu. Và những lỗi to vật vã đập vào mặt. Không có cơ chế cân bằng tải khi nhiều người cùng truy cập. Tính năng không theo spec, thiếu trước hụt sau. Và vĩ đại nhất, ngay trong spec cũng có lỗi.

     PM: Ủa sao không trích thông tin từ hồ sơ thăm bệnh của bệnh nhân được vậy nè?
     Developer: Ơ chưa. Hôm trước ông chẳng bảo cái đấy đến kỳ sau mới làm là gì?
     PM: Ừ thì có, nhưng mà không lấy thông tin được thì sao mà vẽ đồ thị báo cáo?
     Developer: Cái code đấy viết từ đời thuở nào rồi, toàn hard-code nấy nệ thôi!
     PM: Đậu xanh!!! Cái code cũ đấy tao bảo viết lại từ đời tám hoánh rồi mà!
     Developer: Thế đ-o nào...

15 phút trước deploy.

Đồng hồ sắp chuyển sang ngày mới. Trong con hẻm nhỏ, chỉ còn phòng hắn sáng ánh đèn. Như con cú ăn đêm, giờ là lúc bọn deploy đêm như hắn hoạt động mạnh nhất. Cơ hồ đều mong trong bóng tối của thành phố say ngủ làm một cú đổi đời. Lúc này đây, những con người nhiều tuần qua cày cuốc với trang web nhìn vào nó chằm chằm, qua những phương thức khác nhau. Client và designer, qua browser, nhìn vào cái vẻ ngoài trau chuốt. Developer và sysadmin dán mắt vào màn hình terminal đen sì, những dòng lệnh chạy ngang dọc. Còn hắn, lăng xăng giữa hai bên. Cái máy chủ, quanh năm nằm trong xó một data center nào đó chẳng ai rõ, được dịp đỏng đảnh, từ chối hoạt động cho đến khi mọi thứ, xin nhắc lại là mọi thứ, thật hoàn hảo.

     Sysadmin: Chết cha! Sao báo lỗi database vậy nè? Ku, vô máy chủ xem coi sao!
     Developer: Không vô được ông ơi! Ông chưa tạo account cho tôi này!
     Sysadmin: Xong rồi đó, vô lẹ đi.
     Developer: À đây này, database trống không, chưa có dữ liệu gì cả. Chép dữ liệu từ máy ông lên đi.
     Sysadmin: Ủa, sao không chép từ máy mày luôn đi?
     Developer: Hè hè, tôi không có nhớ lệnh đấy, dài quá, ông thông cảm.
     Sysadmin: Trời đất, developer mà lười như quỉ vậy?
     Developer: Ông không nghe Bill Gates nói là…
     Sysadmin: Im ngay và luôn!!!

Lục đục mãi, deploy cũng xong. Dự án lần này coi như giao đúng hẹn. Hai bên chúc tụng nhau lấy lệ rồi rút lẹ đi ngủ, mong chợp mắt chút mai lại đi làm. Ánh đèn cuối cùng trong con hẻm rồi cũng tắt. Cái cơ thể suốt từ chập tối đã chạy bằng adrenaline giờ không chịu đi ngủ, nhưng cũng chẳng còn sức mà thức. Hắn lim dim, nửa tỉnh nửa mơ nhớ về những lần đau tim khi server sập. Hắn thở dài, tự nhủ đêm còn dài…

Sunday, April 27, 2014

On being busy


I am busy, you are busy, everybody is busy. Being busy and working hard are conventional indicators of a workplace hero, a model managers want their subordinates to follow. In his book, Outliers, author Malcolm Gladwell stated that it takes roughly ten thousand hours of practice to achieve mastery in a field. By the point the book gained its fame, many arguments against the point, that ten thousand hours may not make a master after all, were made. While Gladwell made a solid point that everyday hard work beats natural talent, I believe that mastery is a complex entity that can’t be measured by a single-dimensional unit. And here is why.

If we understand being busy as doing more work, for longer hours, giving up evenings and weekends, then the busier an engineer is, the closer she is to master her craft? Interestingly, this instinctive appreciation of hard work turns out to be a problem when it comes to managing knowledge workers. 

Imaging there are two developer teams, same environment, same requirement.

Team Hercules appear to work really hard. There is constant activity in the team. They would often be seen working into the night and at weekends. Everyone would drop what they were doing to help production errors, often by offering their guesses on what could have gone wrong. Every deploy is a herculean joint effort of everyone. Their code base has long procedures here and there where all the stuff happens.

Team Apollo work no more than eight hours a day. They never work weekends and rarely spend hours around each other’s desk throwing out guesses about system errors. They deploy every day with an engineer or two. Their code base consists of small classes and methods with just a few lines of code. The work is a collection of design patterns, the SOLID principles and unit testing.

To a casual observer, the first team is working really hard and the second one isn’t. Hard work is good and laziness is bad, no? And if pay rises are given based on performance, which team is qualified? Team Hercules are putting together all what they have got for success, time and effort. But in the nutshell, they seem to be in a death match, burning their stamina to the last drop. The journey of mastering a craft is not one crazy intensive stressful period but years of practice. One needs to maintain a sustainable pace so that she wouldn’t be burned out by the time her effort bears fruit. 

Software development is new, unfamiliar to anything man kind have done in previous centuries. Conventional metrics that have been hard wired into our instinct won’t work in that new found land. Software developers should by judged by results, by working software, not by how hard they appear to be working. I would submit that the appearance of hard work is often an indication of failure. Being good at virtually anything is like figure-staking - the definition of being good at it is being able to make it look elegantly easy. But it never is easy, just that’s what people conveniently stupidly forget.

==========================



Tôi bận, anh bận, ai cũng bận. Bận rộn và làm việc chăm chỉ là hình ảnh tiêu biểu của một siêu nhân văn phòng, hình mẫu các sếp luôn muốn nhân viên mình noi theo. Trong cuốn Outliers, tác giả Malcolm Gladwell nhấn mạnh rằng cần xấp xỉ mười ngàn giờ luyện tập để thành thục một lĩnh vực bất kỳ. Khi cuốn sách tạo được tiếng vang trong đọc giả, đã có những quan điểm trái chiều xuất hiện, rằng mười ngàn giờ suy cho cùng không làm nên tài năng. Dù Gladwell hoàn toàn đúng khi chỉ ra rằng làm việc cần cù quan trọng hơn khả năng thiên bẩm, cá nhân tôi tin rằng một hoá trình luyện tập phức tạp thì khó đo đếm bằng một đại lượng đơn chiều. Tại sao?

Nếu hiểu bận rộn là làm nhiều việc hơn, nhiều giờ hơn, và, hy sinh ngày đêm và cuối tuần, vậy một kỹ sư càng bận rộn sẽ có tay nghề càng cao? Ngộ cái, tiềm thức đánh giá cao việc cày ải lại mang đến nhiều rắc rối khi quản lý giới trí thức. 

Tưởng tượng hai đội developer, cùng môi trường, cùng yêu cầu.

Đội Hercules rất chăm cày bừa. Trong đội, luôn có dòng chảy công việc cuồn cuộn. Họ thường làm việc ngày đêm và cả cuối tuần nữa. Mọi người luôn sẵn sàng bỏ ngang việc của mình để giúp sửa lỗi trong hệ thống, thường bằng cách đoán xem điều gì đang diễn ra trong những đoạn code hàng trăm dòng. Mỗi lần "đi đẻ” (deploy) là một đêm trắng của mọi người.

Đội Apollo làm ngày không quá tám tiếng y như tinh thần ngày 1/5. Hiếm khi bu lại "diệt sâu bọ” và chẳng khi nào làm việc vào cuối tuần. Ngày nào cũng có một hai người deploy code mới lên server. Nhìn code của Apollo, thấy toàn classes nhỏ, mỗi methods có vài dòng. Dự án có đủ design patterns, nguyên tắc SOLID và unit testing.

Từ bên ngoài, Hercules rất chăm chỉ, còn Apollo thì không. Chăm chỉ tốt, lười biếng xấu. đúng hông? Và nếu mức lương phản ánh năng lực làm việc, đội nào nên được thưởng cho nỗ lực của mình? Đội Hercules có lẽ đang dành tất cả tâm huyết của mình vào dự án, nhưng cách họ làm việc không phải là cách mà người ta nuôi dưỡng sức bền. Không ai liên tục làm việc như cảm tử quân được quá vài năm cả. Phần lớn mọi người cần nuôi dưỡng tinh anh của mình theo một tốc độ bền vững, để khi nỗ lực thành công, vẫn còn trẻ, khoẻ và đẹp lão.

Nghề lập trình là một nghề mới, khác lạ với cách lao động của con người trong nhiều thế kỷ trước đó. Những đại lượng truyền thống thâm canh cố đế trong tiềm thức con người phản tác dụng trên mảnh đất chưa khai phá này. Developers cần được đánh giá theo kết quả, theo sản phẩm, chứ không phải bằng việc cày ải. Tôi thực sự tin rằng, trong nghề này, cày cuốc là một dấu hiệu đáng ngại. Giỏi bất kỳ việc gì cũng giống như trượt băng nghệ thuật - càng giỏi càng trông thật dễ dàng. Nhưng thực chất chẳng bao giờ dễ dàng cả. Đây là điều những kẻ ngớ ngẩn toàn quên.

Monday, March 24, 2014

7 things I learned from software industry



  1. An old fox ain't safe to trap. There are people with 10 years of experience in their CVs, but actually have a year of experience repeating 10 times. Each language, framework is meant to solve its own set of problems. A developer who fails to renew his knowledge everyday is like a carpenter without a toolbox, resorting to hammer a nail with a wrench. Usable, but simply not what someone in his right mind would do
  2. Get out of your station once in a while. Meet more people, from all kind of careers and classes. Information Technology doesn't exist on its own but forms symbiosis relationships with other industries by providing additional values. In every career, people with rich experience outside of their professions are always appreciated. Especially in IT, the more a developer understands his users, the more down to earth his solutions are.
  3. Quality is free, if you invest heavily for it. That being said, a good product isn't built by money. A good product is a result of multiple factors, such as capable developer, sufficient hardware power, suitable working environment, etc. and each of them needs (lot of) money. Interesting enough, investing in quality is a long-term cost reduction solution. Developers who compromise the quality of their work for the sake of cost reduction can look up to Japan, the country where the idea quality and cost reduction are two sides of a coin is well spread.
  4. This is a hard job. Don't let luxurious office like that of Google or cool gadgets fool your mind. Developers are 21st century farmers. For one thing, I am pretty confident that developers kill just as many bug as farmers do. While farmers can sleep tight at 2AM, the risk for a developer to be waken up because of a crash server is very real. Even worse, everyday some where in the earth, a developer is tearing his hair off, for his hard written code is to be removed as the spec has changed. Big thank to clients who have "mastered" the art of Lean Startup.
  5. "Good developer doesn't need test". Together with "I will get back to it tomorrow" are the two biggest lies in the whole IT industry. Unless you are the almighty Chuck Norris. Chuck Norris' code doesn't have bug. His code always works. ALWAYS. He kills bugs by staring at them.
  6. Argument is good. I am not criticizing walking away from an intensive argument as a cowardly act. I believe in a healthy argumentative and non-consensus culture where the need to follow courtesy and command from upper level is not overrated. Argument needs to be based on the good will of understanding and sharing. An argument whose goal is to win the fight is intellectually bullshit and no better than a trivial slander.
  7. The high-tech illusion. In their casual conversations, developers tend to drop phases such as "in computer science" or "the IT people", implying they are part of the high-tech world. Just among us, we usually aren't. The researchers who made fundamental breakthroughs are in the high-tech world. The rest of us are appliers of their work. And because we go about this work in teams and projects, we are more like in the human communication business. Our successes stem from good interactions between team members and our failures stem from poor ones. So the next time you are in a death match, it might not because your developers don't know how C pointer works, they might haven't read "How to win friends and influence people".

===================================================


  1. Sống lâu không lên lão làng. Có những người CV 10 năm kinh nghiệm nhưng thật ra là 1 năm kinh nghiệm lặp lại 10 lần. Mỗi ngôn ngữ, framework được tạo ra để giải quyết một bài toán của riêng mình. Developer kiến thức hạn hẹp, không được làm mới mỗi ngày cũng giống như anh thợ mộc không đủ đồ nghề, dùng cờ lê để đóng đinh. Vẫn dùng được, nhưng méo mó vặn vẹo và dễ lên tăng-xông.
  2. Đặt bàn phím xuống và đi. Gặp nhiều người hơn, những con người đủ loại ngành nghề và tầng lớp. Công nghệ thông tin không tồn tại riêng lẻ, mà tựa lưng vào những nhóm ngành khác, đóng góp giá trị gia tăng. Bất kỳ nghề nghiệp nào cũng hoan nghênh những con người có vốn sống đa dạng. Đặc biệt với CNTT, vốn sống là vựa ý tưởng, đưa sản phẩm đến gần hơn với người dùng.
  3. Chất lượng không mất tiền mua; nhưng tiền không có, chẳng thấy chất đâu. Sự thật, sản phẩm tốt không mua được bằng tiền. Để có sản phẩm tốt, bạn cần có developers giỏi, server mạnh, môi trường làm việc phù hợp, etc, và mỗi thứ đó đều cần (rất nhiều) tiền. Thú vị hơn đầu tư vào chất lượng là giải pháp giảm chi phí lâu dài. Những developers thoả hiệp chất lượng để giảm chi phí nên học tập người Nhật, nơi quan điểm chất lượng và giảm chi phí song hành.
  4. Đời rất dở nhưng vẫn phải niềm nở. Lập trình là một nghề vất vả. Đừng bị văn phòng lung linh như Google và đủ thứ đồ chơi làm mờ mắt, làm nghề này cực chả khác đi đồng. Ngoài chuyện bắt sâu bọ, developer còn có cơ bị lôi đầu dạy lúc 2 giờ sáng vì server sập. Hãi nhất là khách hàng "quán triệt” tư tưởng Lean Startup, specs đồi xoành xoạch. Lợi thì có lợi nhưng răng không còn. Nay làm mai sửa, mà vẫn phải cắm mặt làm, code vị nhân sinh anh ơi!
  5. "Developer giỏi không cần test". Cùng với câu "Để đó mai sửa" là hai câu nói dối vĩ đại nhất trong lịch sử nghề lập trình. Trừ khi bạn là lão Chuck Norris xứ Mỹ. Code của lão khi nào cũng chạy và luôn luôn đúng. Giai thoại đồn rằng lão chỉ cần nhìn code chằm chằm là nó tự sửa.
  6. Trang luận là tốt. Không phải tôi chê "một điều nhịn là chín điều lành", cũng không cổ suý "một điều nhịn là chín điều nhục". Tôi tin vào một văn hoá tranh luận và không nhất trí khoẻ mạnh, nơi sự lịch thiệp và mệnh lệnh ở trên truyền xuống không quá quan trọng. Tranh luận có văn hoá lấy chia sẻ và thấu hiểu làm nền tảng. Bước vào cuộc tranh cãi với mục đích duy nhất là dành phần đúng về mình thì đó là một cuộc mạt xát và thoá mạ.
  7. Ảo tưởng vĩ đại. Trong các buổi chuyện trò, dân máy tính thường có những câu đệm "trong ngành khoa học máy tính" hay "giới công nghệ thông tin", hàm ý mình góp một phần trong bức tranh công nghệ cao. Thực chất ta không "công nghệ cao" như mơ. Ngoài một nhóm nhỏ các nhà nghiên cứu đầu ngành, đại đa số dân công nghệ dừng lại ở ứng dụng các nghiên cứu đó. Và việc này ta làm theo nhóm, theo dự án. Tất thảy chúng ta đều trong ngành nhân sự thì đúng hơn. Thành công trong công việc đến từ sự liên kết của các cá nhân trong tập thể, và thất bại từ sự lỏng lẻo trong chính các liên kết ấy. Vậy nên lần tới dự án sa lầy, có thể không phải vì các developers không biết con trỏ trong C, mà vì họ chưa đọc "Đắc nhân tâm".

Wednesday, January 8, 2014

RMIT high school tour speech

The speech was to commence the RMIT high school tour for Tran Khai Nguyen, December 2013, and from then, has been revised multiple times for subsequent tours.


Hi guys,

My name is Khang, I am an RMIT alumnus and a software engineer. The slide behind me is showing all the major achievements I have acquired over the last 5 years. But I know that no one really cares about those, neither do I and that isn't the reason why I am here today. I was asked by the school to share about my studying and working experience. That is quite a challenge. I graduated from high school in 2008 and my memory about that period is vague. But I do remember the confusion I felt during those years, overwhelmed by all the options of life. So today I want to tell you three stories of my life, over a course of events that eventually define me as who I am.

The first story is about surviving high school.

High school was always a bit lonely to me. Don't get me wrong, I had friends in at school and I love them. We still hang out with each other very frequently. But there wasn't anyone who shared the same interests with me. My friends were at the age when girls knew about the names of Taiwanese F4 better than the names of boys in their class, and boys were all crazy about cool gadgets, mp3 and mobile phone. I don't know how much the situation has changed, perhaps it is about Kim Tan and iPhone now?
I was a little bit different. I spent most of my time with books, found the "boring" subjects like history and geography quite interesting and sometimes enjoyed talking with my teachers more than with my friends. So I was quite a misfit. But all of sudden, thing changed when I went to college. I started to meet other computer geeks and book lovers, and what I wanted to do in my life began to get in shape.
I think there have also been moments in your life when you feel left out and don't know where you are supposed to be. Don't worry, that is just the way high school is. There will be times when your life sucks, but one day you will be given the chance to determine how the story of your life would be written. Until there, be prepared.

My second story is about understanding what I want.

After high school, I got accepted to both HCM University of Technology and FTU (Bách Khoa and Ngoại Thương respectively), two of the most prestigious education institutes in south of Vietnam. Didn't really like FTU but my father did, so I tried anyway. And you know how the days at FTU felt like? Felt like high school. The young kids around me were all excited about being bankers, brokers or marketers and I was like "how is Windows Server different from the one I am having on my desktop?". And I was certain that I didn't want to experience being a misfit again. I dropped out after 3 days and went to HCM UT instead. And I thought I would be happy now, I was in an engineering school and supposed to eat, pray, love with computer science over the next 5 years. It turned to be, well, quite misleading. The staff were bureaucratic and unfriendly. And I couldn't understand how the courses would possibly make me a better engineer. I was learning the exact same stuff my father was, 30 years ago (given the speed of technology, 30 years is a very long time, it is pre-internet era).
I don't remember if I have ever been more scared and lost and confused in my life. I had two options, and both didn't work out. Fortunately, at that difficult time, I received a scholarship offer from RMIT, the school which I applied 2-3 months before. I was saved. I am not going to brag about RMIT from this point on, but as you proceed on the tour, I hope you will get the same excitement I got when I came to RMIT.
So I have learned that when life gives you the chance to write your story, make sure you follow no one else wish but the call of your heart. Or else you will suffer.

The last story is about connecting the dots.

As you can see on the list, acquiring an internship in Taipei, Taiwan is one of the most important milestone in my career which leads me to the position I am today. But the actual story began far before that. During my years at RMIT, I had done quite a few things. I founded the IT Club (which I am happy to announce that is still strong and operating till today). I engaged into multiple discussions with my professors (I am still the same kid who enjoys talking with older people). And I organized MultiUni and was a TA in the first iOS programming course ever in Vietnam. I had no hope for a practical application in my life from doing these things. I did them because they were fun. And I loved it, I was satisfied just by doing what I loved. But gradually, somehow the dots of my life connected together. One of my professors acknowledged my ability and arranged me an overseas internship. That was just amazing.
I have learned that we can't connect the dots looking forward, it only starts to make sense when we look at them backwards. So you have to trust that the dots will somehow connect in your future, You have to trust in something, your gut, destiny, love, whatever. And life will put the rest into the right place.

If there is a common theme in my three stories, I believe it is figuring what you want to do in your life and work your way towards that. And for a high school student, I know it is easier said than done. But again don't worry, the fact that you are worried for your future is indeed a good sign. It shows that you are mature enough to be responsible for your life, and people with that attitude are destined to be successful. And whenever you feel lost, remember that you are not alone. You always have your family, school and friends by your side, supporting you on the rough journey ahead.

Now go exploring what RMIT has to offer.

Thank you very much.