Suy nghĩ tích cực làm thay đổi cuộc đời

Tuesday, January 19, 2010 3 phản hồi

Có nhiều bạn từng tâm sự với tôi:
"Tại sao em làm ở công ty X lâu quá mà em chưa được lên chức? Lương thì bèo bọt. Em thấy em biết nhiều kiến thức, làm cũng tương đối được việc mà sếp ko đả động gì đến. Chán quá."

Đây có lẽ là một câu hỏi chung của rất nhiều bạn, mà cũng có thể là của rất nhiều bạn đồng nghiệp của tôi. Vì vậy, tôi muốn chia sẻ với các bạn những ý kiến dưới góc độ của một người trong cuộc qua bài viết này.

Thoát khỏi bế tắc từ suy nghĩ


Cách đây 5 năm, tôi luôn bị ám ảnh bởi suy nghĩ: làm sao để thành đạt, làm sao kiếm được nhiều tiền? Tôi làm project outsource liên tục, thay đổi công ty liên tục. Trung bình một ngày chỉ ngủ 4-5 giờ vì phần còn lại tôi dành cho công việc và cập nhật những kiến thức cho công việc. Mỗi lần thay đổi công ty tất nhiên mức lương mới sẽ cao hơn ở công ty cũ. Trong hơn 5 năm đi làm, tôi đi qua liên tục 5 công ty, làm những vị trí, vai trò khác nhau. Có một điều sau này tôi nhận ra rằng: mình vẫn ko thoát khỏi sự bế tắc trong cuộc sống. Mỗi khi qua công ty mới, mọi thứ phải setup lại từ đầu. Không tên tuổi, không thương hiệu. Thanh gươm kiến thức trong tay cũng đã mòn vì không đi chuyên sâu vào bất cứ lĩnh vực nào.

Có một lúc tôi chợt tỉnh giấc và hiểu ra rằng: nếu mình ko thay đổi suy nghĩ, thì mãi mãi vẫn chỉ sống trong cái vòng lẩn quẩn này. Đến một lúc nào đó, sức cùng lực kiệt - liệu có thể phiêu lưu mãi nữa hay không?

Kể từ đó, tôi rũ bỏ đi bớt những suy tính cá nhân, lao vào trau dồi những kiến thức nền tảng để củng cố lại mình. Tôi chấp nhận một mức lương thấp hơn nhiều so với công ty cũ. Mỗi giờ làm việc ở công ty, tôi dồn tất cả sự đam mê và tâm huyết. Tôi mở lòng mình ra để chia sẻ với mọi người những gì tôi biết và mong muốn cả tập thể cùng tiến bộ. Càng lúc tôi càng hiểu ra rằng: càng suy nghĩ đến tiền, danh vọng sẽ không đem lại cho mình ích lợi gì cả. Vì về bản chất, tiền bạc và danh vọng chỉ là hệ quả của sự nỗ lực cho một mục tiêu. Ở đời, không có gì nguy hiểm bằng việc không biết mục tiêu của mình là gì.

Thật ra tôi chỉ đạt được một phần của mục tiêu mà tôi đang theo đuổi. Tuy nhiên, tôi cảm nhận rằng chính từ sự thay đổi cách suy nghĩ đã giúp tôi thoát khỏi những bế tắc trong cuộc sống.

Những căn bệnh về suy nghĩ làm cho bạn không thể thành đạt trong công việc


Căn bệnh 1: nhầm tưởng rằng có nhiều kiến thức là có thể thành đạt.
Thật sự đây chỉ là một điều kiện cần, chứ không phải là điều kiện đủ. Không có công ty nào trả lương cho bạn vì những gì bạn biết, mà là vì những gì bạn đóng góp. Nếu có nhiều kiến thức, nhưng bạn không đóng góp nhiều cho công ty, thì kiến thức của bạn đối với họ chỉ là con số 0.

Tôi không phản đối việc bạn phải học thêm kiến thức, nhưng tôi muốn nói đến yếu tố: nên học cái gì?
Có nhiều bạn từng hỏi tôi rằng: lĩnh vực kĩ thuật quá rộng, làm sao em học hết để đáp ứng nhu cầu công việc.


Trả lời: 
Kiến thức về cơ bản có thể phân tách thành: nguyên lý (principles), ứng dụng (practices), và giá trị mà nó đem lại (values).  Nguyên lý thì thay đổi chậm theo thời gian và thật sự chỉ thay đổi khi có sự đột phá từ những cuộc cách mạng về công nghệ/ nghiên cứu lý thuyết. Ứng dụng và giá trị thì thay đổi liên tục và nhiều vô tận.

Nói ví dụ cho dễ hiểu trong phần mềm:

+ Kiến thức về OOP, Design pattern, các phương pháp luận làm phần mềm, các nguyên lý thiết kế hệ thống, .. được xem là những principle.
+ Các ngôn ngữ lập trình, các framework phát triển ứng dụng, cách xài các thư viện hỗ trợ phát triển, .... là những practice và cũng cung cấp cho bạn những value khác nhau tùy vào lĩnh vực.

Trau dồi principle là cách giúp bạn có nền tảng và nhanh chóng nắm bắt tất cả các practices trong nhiều mảng khác nhau. Nhiều bạn đã quan tâm quá nhiều đến "chiêu" (practice) mà bỏ quên nền tảng sẽ dễ dàng bị fail trong các kì phỏng vấn, và thậm chí không được đánh giá cao trong tổ chức.

Bên cạnh đó, bạn cũng cần phải quan tâm đến những mảng kiến thức mà công ty đang cần. Suy nghĩ nhiều hơn về cách để đón đầu những cơ hội sắp tới và trau dồi kiến thức cần thiết cho mục tiêu của bạn.

Căn bệnh 2: quá chú trọng vào cá nhân mà không nghĩ đến tập thể
Ví dụ 1: Khi viết code, có người nghĩ: chỉ cần viết cho xong, chạy đúng. Code mình, mình hiểu. Cần gì viết cho ai hiểu.

Phân tích: Sai rồi bạn ạ. Thời của những lập trình viên anh hùng đã đi qua. Ở thời đại này, bạn không thể làm được gì nếu không làm việc cùng đồng đội (teamwork). Thứ hai, chất lượng code đánh giá chất lượng một lập trình viên. Bạn không muốn hoàn thiện sản phẩm mình làm ra, thì liệu bạn có được tổ chức đánh giá cao không nhỉ?

Ví dụ 2: tôi thích mọi người phải theo ý tôi cơ. Tôi luôn đúng và phải chứng tỏ cho mọi người thấy điều đó. Tôi phải luôn thắng trong mọi cuộc thảo luận.

Phân tích: áp đặt ý kiến là một điều không tốt. Hơn nữa, bạn không thể là thánh, nên không thể tránh khỏi sai sót. Khi một người đồng nghiệp phát biểu một ý không đúng với những gì tôi nghĩ. Tôi luôn đặt ra 2 trường hợp:

+ Tôi và anh ta đang nhìn ở 2 góc nhìn khác nhau trên cùng một vấn đề. Có thể đây là một góc nhìn mới mà tôi chưa nhận ra. Tôi ghi nhận và vẽ nó ra trên bảng để chúng tôi cùng xem xét.

+ Có thể một trong 2 chúng tôi đang nhìn về một sự vật, nhưng mỗi bên có một suy nghĩ méo mó khác nhau. Có thể có người sai. Nhưng theo thuyết tương đối mà nói: luôn có khả năng để điều sai trở thành đúng trong một tình huống đặc biệt.

Tôi luôn khuyến khích mọi người trình bày về quan điểm của mình, và nếu cần thì nhờ họ đưa ra những chứng minh và hành động để phân tích một cách cụ thể.

Một điểm quan trọng nữa: mục tiêu của thảo luận là để tìm giải pháp cho vấn đề, chứ không phải là một buổi trình diễn âm nhạc. Thảo luận sẽ trở thành vô nghĩa nếu nó đi quá xa mục tiêu ban đầu của nó.

Căn bệnh 3: không thích chia sẻ

Ví dụ 1: tớ biết cái này hay lắm, nhưng bí mật. Chỉ mình tớ biết thôi đấy nhé. Thấy tớ có hay không?

Phân tích: Đây là căn bệnh trầm kha của dân IT Việt Nam. Bạn làm được nhiều điều rất hay, bạn có nhiều kinh nghiệm quý báu. Bạn giữ nó làm gì cho riêng bạn? Thế giới Internet phát triển quá xa rồi, bạn có chắc rằng điều bạn đang giữ thực sự là một bí mật về công nghệ. Chia sẻ để cùng nhau phát triển và nhận được nhiều hơn, đó là trách nhiệm và quyền lợi của mỗi cá nhân trong tổ chức.

Ví dụ 2: mình mới làm xong một product/ hoặc có idea khá hay. Nhưng mà nhát quá, nói ra thấy ngại ngại sao á. Có cần nói cho sếp ko nhỉ? Thôi khỏi, chắc chắn ổng biết mình giỏi rồi.

Phân tích: không ai biết bạn đã làm được gì nếu bạn không nói. Âm thầm đóng góp là một điều tốt, tuy nhiên sẽ thiệt thòi nếu không ai công nhận. Mạnh dạn lên bạn nhé. Hơn 20 rồi đấy, nhát thế thì làm sao ... tán được gái nhỉ?

Căn bệnh 4: thiếu thái độ nhiệt huyết và chủ động trong công việc

Ví dụ 1: sếp giao cho 1 task. Nhưng chưa biết làm có được không nữa, chừng nào biết chắc chắn làm được hoặc làm xong thì báo luôn thể.

Phân tích: có biết rằng sếp đang run lắm khi chờ đợi bạn trả lời ko nhỉ? Ít ra bạn phải chủ động báo cáo tiến độ định kì. Nếu sau vài lần như vậy, có lẽ bạn sẽ không nhận được task quan trọng hay cơ hội nào nữa đâu.

Ví dụ 2: cái task này khó quá, mà cũng chả bổ ích gì đối với mình hết. Thôi, không làm đâu.

Phân tích: không ai trả lương cho bạn để bạn làm cái bạn thích cả, họ trả tiền cho công việc mà họ cần. Từ chối một thử thách chính là từ chối đi cơ hội của chính bạn. Hãy tập vượt qua thử thách, đó chính là những kinh nghiệm bổ ích cho cuộc đời bạn.

Ví dụ 3: chán quá, chán quá, chả có việc gì làm hết.

Phân tích: chán là một biểu hiện tâm lý của việc không còn đam mê trong công việc. Không có đam mê = failed. Những người thành đạt luôn tao ra task cho chính mình để cải tiến bản thân hoặc tổ chức, cơ bản vì họ luôn có đam mê và khát khao. Đó là yếu tố giúp họ thành công.


Lời kết

Viết mệt quá, còn nhiều bệnh nữa. Nhưng chắc để update sau đi. Hôm nay vầy đủ rồi.

Lập trình game và 3D trên iPhone

Tuesday, January 5, 2010 0 phản hồi

Gần đây tôi nhận được nhiều email của các bạn hứng thú với lập trình 3D/ game trên iPhone. Các bạn hỏi tôi khá nhiều câu hỏi rất thú vị - đặc biệt là về tài liệu và cách tiếp cận. Tôi sẽ cố gắng giải đáp thắc mắc của các bạn trong nội dung bài viết này.

Phân biệt 2 khái niệm: game engine và 3D engine

Về bản chất, đây là 2 khái niệm khác biệt. Tuy nhiên đôi lúc cũng có chút nhập nhằng.
3D engine: là những thư viện giả lập môi trường 3D trên máy tính. Trong đó đặc thù bao gồm:
+ Mô phỏng/định nghĩa các thực thể 3D.
+ Ánh sáng, đổ bóng.
+ Phủ vật liệu.
+ Giả lập camera.
+ Hiện thực quá trình render ảnh từ môi trường 3D để thành kết quả cuối cùng và hiển thị lên màn hình.

Game engine: là những thư viện hỗ trợ cho quá trình lập trình game. Thông thường một game engine thường bao gồm:
+ 3D/2D engine hỗ trợ cho việc lập trình trên môi trường 3D hoặc 2D.
+ AI (Artificial Intelligence) engine: hỗ trợ cho việc lập trình các yếu tố liên quan đến AI trên game.
+ Physic engine: hỗ trợ việc giả lập các yếu tố vật lý trong môi trường game.
+ Tool hỗ trợ cho việc tạo ra/import các "vật liệu" sử dụng trong game. Ví dụ: tạo terrain (địa hình), tool convert hoặc import các file mô hình, ...

Những thư viện lập trình game/3D trên iPhone

Các bạn có thể tham khảo bài viết này (liệt kê tương đối đầy đủ):
http://www.neverreadpassively.com/2009/03/review-of-iphone-3d-engines.html

Tôi muốn trở thành một expert về lập trình game (đặc biệt là trên iPhone). Cần tiếp cận như thế nào?

Tôi sẽ không trả lời câu hỏi này một cách trực tiếp vì nó khá nhiều cho phạm vi một bài viết. Tuy nhiên, tôi sẽ gợi một số câu hỏi để các bạn tự tìm lời giải đáp.

1. Những kiến thức nào một lập trình viên game cần trang bị? Những vấn đề nào được gọi là nan giải về kĩ thuật trong việc lập trình game?
2. Ngành công nghiệp game của thế giới đang phát triển như thế nào? Quy trình làm một game ra sao (từ ý tưởng đến hiện thực)? Có những role nào trong một game project?
3. Phân tích xu hướng hiện tại và tương lai của thị trường game (và game trên iPhone)?
4. Vòng đời của một sản phẩm game?
5. Các mô hình mà những nhà phát triển game đang tiến hành để thu lợi nhuận?
6. Phân chia các thể loại game và những đặc trưng kĩ thuật/ý tưởng liên quan?
7. Lập trình game trên iPhone có gì khác biệt so với các môi trường khác?
8. Các engine và công cụ nào hỗ trợ lập trình game (nói chung) và trên iPhone (nói riêng)

Tôi muốn trở thành một expert về lập trình 3D trên iPhone. Cần tiếp cận như thế nào?

Tương tự, tôi cũng sẽ đặt một vài câu hỏi để các bạn tự tìm lời giải cho mình.
1. Lập trình 3D (nói chưng) và trên iPhone (nói riêng) được ứng dụng như thế nào?
2. Những kiến thức nào về lập trình 3D cần được chuẩn bị?
3. Những điểm khó khăn/ thuận lợi trong việc lập trình 3D trên iPhone?

Tài liệu tham khảo

Tôi liệt kê một vài quyển sách được gọi là khá hay cho lập trình 3D/game (nói chung) và cả trên iPhone. Các bạn có thể tìm thấy những quyển sách này trên trang: http://gigapedia.com/ (cần đăng kí thành viên trước khi search)

+ AI for Game Developers
+ AI game wisdom
+ 3D Math Primer for Graphics and Game development
+ Game creation and career
+ Game Development and Production
+ Physic for game programmer.
+ iPhone game project
+ Unity Game Development Essentials

Thân.

Tôi đọc như thế nào?

Wednesday, December 30, 2009 2 phản hồi

Những ngày gần đây, tôi phát hiện ra nhiều điều thú vị từ thói quen đọc sách của chính mình và những điểm thiếu sót mà trước đây tôi từng vấp phải khi đọc. Tôi viết lại vài dòng để chia sẻ với các bạn. Tuy nhiên, tôi mong đợi nhiều hơn nữa là có thể truyền cho các bạn niềm đam mê khám phá những kiến thức từ sách. Vì vậy, tôi sẽ viết … nhiều hơn một chút so với thường lệ.

Lịch sử thói quen đọc sách của tôi – những câu chuyện cười ra nước mắt

Có thể nói đọc sách là một thói quen tôi được ba mẹ truyền cho từ thưở bé. Khi tôi còn chưa biết đọc, quyển sách đầu tiên ba mua cho tôi là “Sát thát” – một quyển truyện tranh viết về lịch sử thời Trần. Vì không biết đọc, nên tôi phải nhờ mẹ đọc từng dòng và chỉ hình, rồi giải thích cho tôi nghe. Có lẽ vì quyển truyện tranh ấy khá phù hợp với trí tưởng tượng của tôi lúc nhỏ (thích tưởng tượng mình cầm quân đánh trận), nên những chi tiết của nó đọng lại trong tôi thành một nỗi ám ảnh. Tôi vẽ những nét nguệch ngoạc theo trí nhớ về câu chuyện: nào là Trần Quốc Toản bóp nát quả cam, nào là Trần Khánh Dư cướp thuyền lương của giặc, Ô Mã Nhi bị bắt sống, … Tất nhiên là vẽ xấu hoắc, nhưng những nét vẽ ấy đã thắp cho tôi một niềm đam mê khám phá những chân trời mới từ sách.

Lớn lên một chút, ba mua cho tôi rất nhiều sách. Thời đó, các tác phẩm văn học Nga khá phổ biến. Năm tôi 7 - 8 tuổi, tôi được đọc “Vasca – người bạn nhỏ của tôi”, “Timua và đồng đội”, “Ông già Khốt-ta-bit”, “Cuộc phiêu lưu của Mít Đặc và các bạn”, … Những quyển sách ấy trở thành người bạn quen thuộc trong kí ức tuổi thơ tôi.

Có một điều tai hại mà sách mang đến cho tôi là làm cho tôi biết yêu quá sớm. Năm học lớp 2, tôi đọc quyển “Những cuộc phiêu lưu của Tom Sawyer” (quyển này ngoài bìa có ghi là “dành cho các bạn tuổi thiếu niên >=15 tuổi”). Tình yêu trẻ con và những cuộc phiêu lưu kì thú của cậu bé Tom Sawyer làm tôi bị ám ảnh và … “bắt chước”. Trong lớp có một cô bé rất xinh cứ làm tôi cứ tưởng tượng đến Becky – nhân vật “bạn gái” của Tom Sawyer. Tôi quyết định viết thư “tỏ tình” với nàng. Thật tình là trí tưởng tượng của tôi thời đó bị lai tạp từ rất nhiều quyển sách, kể cả chuyện cổ tích. Do đó, trong bức thư tôi viết có những đoạn đại loại như:
Mình muốn trở thành chàng hoàng tử bên cạnh bạn, cô công chúa xinh đẹp ạ.… (hic, giờ nghĩ lại thấy phát sốt với mình luôn).

Bức thư tỏ tình của tôi đã không đến được tay người đẹp. Nó rơi vào tay cô Kim (em họ của ba tôi sang ở nhà tôi để học may). Tất nhiên là cô đọc bức thư đó cho cả nhà cùng nghe. Xấu hổ đến mức muốn chui xuống đất. Đó là “tai nạn nghề nghiệp” đầu tiên đến với tôi từ sách.

Lúc học phổ thông tôi thích đọc truyện Nguyễn Nhật Ánh (ông này làm tôi chuyển hướng qua trường phái “yêu thầm” – có lẽ sẽ tiếp tục chủ đề này ở bài khác), tiểu thuyết văn học, đọc thơ, truyện ngắn,… Do đọc nhiều, nên cách tôi làm văn, cách tôi viết cũng “già” hơn so với bạn bè cùng trang lứa. Thầy dạy văn tôi năm lớp 9 sau khi chấm bài xong, phán một câu xanh rờn: “thầy đọc bài của em thấy có rất nhiều những ý tưởng, cách nghĩ mà ở lứa tuổi em không thể có được. Nếu bài kiểm tra này không phải ở trong lớp, có lẽ thầy đã nghĩ rằng em “đạo văn” từ sách rồi.”


Cái gì khiến tôi thích sách?

Lúc còn nhỏ, khi đọc một tác phẩm văn học, điều làm tôi thú vị nhất là khám phá được chính mình hoặc một thế giới khác từ nội dung câu chuyện. Nó kích thích trí tưởng tượng của tôi để lạc vào những cuộc phiêu lưu kì thú trong thế giới sách.

Lớn lên một chút, ba phát hiện tôi không hào hứng lắm với những giáo trình về lịch sử, khoa học trong lớp. Ba bảo tôi rằng: nếu con tập cho mình thói quen và niềm đam mê khám phá những tri thức mới (chứ không chỉ là những câu chuyện giải trí đơn thuần), con sẽ thấy sách hấp dẫn và bổ ích hơn nhiều. Và … tôi đã tập. Mỗi khi biết thêm một điều mới, khám phá một quan điểm hay cách nghĩ mới từ một quyển sách – tôi cảm thấy thực sự mình trưởng thành hơn một chút. Rồi từ đó, những quyển sách về lịch sử, xã hội, và cả những chủ đề khoa học cũng trở thành một sở thích của tôi: “Những điều kì thú quanh em”, “175 thí nghiệm khoa học dành cho trẻ em”, Việt Nam sử lược, … kể cả sách thuốc: Hải Thượng Y Tông Tâm Lĩnh, Những cây thuốc và vị thuốc Việt Nam, …

Năm tôi học lớp 7, tôi biết cách tạo ra những cánh hoa mười giờ với những màu sắc khác nhau kết hợp (trên cùng một cây) bằng cách tiêm nhựa từ thân của các loại hoa mười giờ khác màu vào thân chúng. Thí nghiệm đó chỉ ngẫu hứng từ một quyển sách viết về di truyền học và gen (giờ quên mất tựa rồi).
Những quyển sách, những câu chuyện đã trở thành một phần những ví dụ minh họa mỗi khi tôi truyền đạt vấn đề cho người khác. Chúng làm cho vấn đề truyền đạt có sức hút hơn, hấp dẫn hơn.

Bên cạnh đó, việc đọc làm cho khả năng viết của tôi tốt hơn. Những bài làm văn của tôi thưở bé không bao giờ ít hơn 3 trang, và không bao giờ < 7 điểm.
Ngoài ra đọc sách cũng là một trong những cách giúp tôi giảm stress và “mềm” đi sau những giờ làm việc mệt mỏi và căng thẳng. Có người bảo: dân IT khô khan như ngói. Ít ra đến thời điểm này, tôi không cảm thấy mình là một mảnh ngói như vậy.

Một lợi ích nữa của việc đọc sách (đặc biệt là các sách tiếng Anh) là giúp tôi mở rộng vốn từ trong giao tiếp đặc biệt là khả năng viết. Khi đọc nhiều, cách viết, cách vận dụng câu cú để diễn đạt đã nhập vào đầu một cách tự nhiên mà tôi không cần phải gắng sức suy nghĩ.

Điều quan trọng hơn nữa, tôi vận dụng những điều đã đọc vào công việc, cuộc sống. Nó đem lại cho tôi những kết quả bất ngờ ngoài sự mong đợi. Khi kiến thức được trải rộng ra nhiều mảng, tôi có thể dễ dàng vận dụng để giải quyết nhiều vấn đề, và tư duy nhanh để tiếp nhận những kiến thức mới.

Nếu bạn cảm thấy mình chưa thích sách, hãy thử và trải nghiệm xem. Biết đâu bạn có thể khám phá ra nhiều lợi ích khác nữa từ sách hơn tôi.

Những sai lầm của tôi (cũng có thể là của một số bạn khác) khi đọc sách

Những ngày đầu tiên đi làm, tôi vấp phải một sai lầm khi đọc những quyển sách về kĩ thuật. Tôi đọc chỉ để ứng dụng trong công việc, kiếm tiền. Đặc biệt trong lĩnh vực IT, tâm lý phổ biến của developer là thích đọc code nhiều hơn đọc nội dung sách. Cái trường phái tips-and-trick đó đã làm tôi bị hoang mang. Có thể “code” được, nhưng khi bị hỏi những câu hỏi sâu về kiến thức là mù tịt. Nó giống như luyện võ chỉ biết chiêu, mà không có nội công căn bản, múa được quyền rất đẹp, nhưng khi đụng đến là ngã – vì không có nội lực.

Một thằng bạn đồng nghiệp thời đó đã truyền cho tôi cảm hứng về việc đào sâu “bản chất vấn đề”. Thực sự trong những người tôi từng gặp trong đời, ít có ai có khả năng tư duy và kiến thức rộng về các mảng kĩ thuật như anh chàng này. Tôi đặt một câu hỏi lớn trong đầu mình: cùng một tuổi với mình, tại sao hắn có thể biết nhiều và sâu như vậy?

Dần dần tôi phát hiện ra rằng, trong thói quen đọc của hắn không những chỉ quan tâm “làm như thế nào” , mà còn chú trọng đến những câu hỏi về bản chất “Tại sao vấn đề được đặt ra?”, “Tại sao họ làm như vậy?”, “Những khái niệm cơ bản của vấn đề này là gì?”… Khi đã hiểu được bản chất của vấn đề thì hoàn toàn có thể lý giải và biết “cách để giải quyết nó”.

Sai lầm thứ hai của tôi là đi theo trường phái thực dụng. Khi đọc sách về kĩ thuật, tôi luôn đặt câu hỏi: tại sao mình nên đọc quyển sách này? Sau khi đọc mình ứng dụng được gì trong công việc hiện tại? Càng về sau này, tôi cảm nhận được rằng: thực sự ta không biết tương lai sẽ diễn ra như thế nào? Tuy nhiên, những gì ta biết ngày hôm nay sẽ là thuận lợi của ta vào ngày mai. Chỉ có trời mới biết được điều đó.
Ngoài ra còn một số điểm sai lầm khác khi đọc sách kĩ thuật rất thường thấy của dân IT Việt Nam :

- Ngại đọc nội dung chi tiết, vì lười tra từ tiếng Anh.

- Thích đọc code/ xem hình ảnh và chỉ focus vào code/ hình ảnh minh họa mà không quan tâm đến tính cốt lõi và tinh túy của vấn đề. Để biết mình có thuộc tuyp người này hay không, hãy thử lấy random một cuốn sách đã từng đọc, và dùng tối đa 3-5 câu để phát biểu về core value của quyển sách. Nếu bạn không thể trả lời được, có nghĩa là bạn đang mắc vào hội chứng này.

- Đọc chỉ đơn thuần là để hiểu mà không vận dụng vào thực tiễn.

- Bị ám ảnh bởi những thứ tưởng là mình biết, dẫn đến không thể tiếp thu được kiến thức mới từ sách. Khi xem phim 2012, tôi bị tác động bởi một chi tiết nhỏ mang tính triết lý trong bộ phim. Anh chàng học trò hỏi thầy (một nhà sư): “thế giới sắp diệt vong, liệu có cách nào cứu vãn không thầy?” Nhà sư chỉ im lặng rót trà vào tách. Đến khi tách trà tràn cả ra ngoài, ông vẫn cứ rót tiếp. Anh chàng học trò giục thầy: ơ kìa, sao thầy cứ rót mãi thế? Thầy không thấy trà tràn ra ngoài sao? Nhà sư chỉ lẳng lặng đáp: mọi thứ trên đời này giống như một tách trà. Khi nó đầy, nếu con không đổ bớt trà ra, thì con không sẽ không thể rót thêm trà vào tách.


Khi đọc sách cũng thế, những gì ta cho rằng ta biết sẽ là “quán niệm” (những ý niệm làm ta ì đi trước những quan điểm mới của sách). Nếu đầu bạn đã đầy ắp những quán niệm, bạn sẽ không tiếp thu được gì cả. Tôi thường biến mình thành một đứa trẻ ngây thơ khi đọc sách. Như vậy, mới có thể giúp tôi dễ dàng đón nhận những điều mới mẻ từ chúng.


Tôi đang đọc sách như thế nào?

Thật sự mỗi người đều có một cách riêng của mình khi đọc sách. Tôi cũng vậy. Những cách mà tôi đang practice thực sự là hiệu quả đối với tôi. Tôi hy vọng nó cũng có thể hiệu quả đối với bạn. Nhưng có thể bạn sẽ khám phá ra nhiều cách hơn. Mọi thứ trên đời để hiểu được đều cần sự trải nghiệm. Đúng không nào?

Thói quen 1: khi bắt gặp những câu nói, lý thuyết khó hiểu, tôi bắt đầu đi từ khái niệm. Khái niệm là những viên ngọc cấu thành của mọi vấn đề. Hiểu được nó, ta sẽ hiểu được lý thuyết. Đây chính là điểm làm cho nhiều người nghĩ rằng tôi quá “hàn lâm”. Tuy nhiên, nếu bạn gặp những vấn đề tương tự, hãy thử cách này xem.

Thói quen 2: cố gắng nắm bắt core values của một quyển sách. Đọc xong một quyển sách, nếu không trả lời được giá trị của nó là gì, thì những điều bạn đọc có thể trở thành vô nghĩa.

Thói quen 3: rũ bỏ hết chấp nê (“biến mình thành một kẻ khờ khạo”) để sẵn sàng đón nhận những tư tưởng mới.

Thói quen 4: luôn đặt ra những câu hỏi khi đọc sách và háo hức chờ đợi nó được trả lời trong nội dung sách (có thể là ở những chương kế tiếp).

Thói quen 5: phân tích cách đặt vấn đề của tác giả.

Thói quen 6: ghi chú lại những điều tâm đắc hoặc nội dung chính của quyển sách. Mỗi người có một cách khác nhau. Riêng tôi, mỗi khi đọc – tôi sử dụng XMind làm công cụ để ghi chú và cấu trúc hóa lại những gì đã đọc. Xmind phiên bản mới có một template khá chuẩn là Reading Journal. Nếu đọc xong sách mà bạn có thể fill hết nội dung vào file tạo ra từ template này, có nghĩa là bạn đang đọc “đúng hướng” (thanks anh Vinh đã phát hiện và giới thiệu).

Lời kết

Tôi thường nói với những người bạn một câu đã trở thành triết lý sống mà tôi đang theo đuổi:

Muốn thành công phải có sự đam mê và lòng kiên nhẫn.
Thật sự, cái khó nhất của một đời người là thắp cháy lên ngọn lửa đam mê cho chính mình. Hãy tập thắp cho mình đam mê từ những thói quen tốt nhỏ nhất. Chắc chắn bạn sẽ thành công. Trong đó, đọc sách là một thói quen tốt mà bạn nên thử. Nó cũng rèn luyện cho bạn cả đức tính kiên nhẫn để theo đuổi đến cùng một chân trời tri thức đang rộng mở.

Bản thân tôi (vì những lý do riêng) không thể dành nhiều thời gian để tận hưởng những giây phút hạnh phúc của riêng mình – sách với tôi đã trở thành những người bạn. Mỗi lần đọc sách, tôi tưởng tượng mình đang mài vũ khí của chính mình (vũ khí đó chính là tri thức) – để nó trở nên sắc bén hơn và giúp tôi đối mặt với những trận chiến mới trong cuộc sống.

Hỡi những người bạn lập trình viên trẻ, đừng để tuổi trẻ của mình trôi đi quá nhanh. Đến khi bạn nhận thấy mình đã già, mà gươm vẫn không sắc. Lúc đó đã quá muộn, sao có thể chiến đấu được nữa? Đúng không nào?

Cơ hội và thử thách cho lập trình viên iPhone ở Việt Nam

Sunday, December 20, 2009 1 phản hồi

Bài viết này xuất phát từ một câu hỏi của Tiến Khoa (một anh bạn đồng nghiệp) sau buổi seminar về iPhone programming của mobile group.

Lập trình trên iPhone là một mảng kĩ thuật khá mới mẻ và rất thú vị. Tuy nhiên, hẳn nhiều bạn sẽ rất băn khoăn:
1/ Liệu đây có phải là một lựa chọn đúng đắn cho tương lai của mình không?
2/ Tương lai của các lập trình viên iPhone ở Việt Nam sẽ như thế nào?
3/ Liệu ở Việt Nam, các ứng dụng trên iPhone có trở nên phổ biến và tôi có thể kiếm được tiền trên đó không?

Bài viết này sẽ lần lượt trả lời từng câu hỏi trên.

1/ Lập trình iPhone có phải là một lựa chọn đúng đắn cho tương lai của mình không?
Thật sự câu hỏi này chỉ duy nhất bạn mới có thể trả lời chính xác. Vì không ai quyết định được tương lai ngoài bạn được. Làm bất kì việc gì thành công cũng đều đòi hỏi phải có lòng đam mê. Nếu lòng đam mê của bạn đủ lớn, cộng thêm nhiệt huyết và sự kiên nhẫn, chắc chắn bạn sẽ thành công.

Hiện nay số lượng lập trình viên iPhone ở Việt Nam không nhiều. Điều này mở ra rất nhiều cơ hội nghề nghiệp cho các bạn lập trình viên trẻ. Tuy nhiên, yếu tố này chỉ mang tính chất tạm thời. Giống như .NET/Java, khi nó mới ra đời, thì đây là một job rất hot. Tuy nhiên, khi số lượng người biết lập trình trên các mảng kĩ thuật này tương đối nhiều, bạn phải nỗ lực nâng cao kĩ năng, kiến thức và tạo ra điểm khác biệt để thành công trên con đường bạn đã chọn.

2/ Tương lai của lập trình viên iPhone ở Việt Nam sẽ như thế nào?
Hiện nay các project về iPhone ở Việt Nam thường được outsource từ nước ngoài về. Lý do cơ bản vẫn là VN sở hữu một nguồn lập trình viên khá rẻ. Các dự án trên iPhone cũng thường đi với thời gian khá ngắn (thường từ vài tuần đến vài tháng) và phục vụ chủ yếu cho các mục đích về marketing, du lịch, ...

Tuy nhiên, hiện nay iPhone application đang là một trong những xu hướng phát triển trên thế giới (bên cạnh các mảng kĩ thuật về mobile khác). Trong tương lai (ít nhất 1-2 năm tới), lĩnh vực lập trình iPhone sẽ tiếp tục phát triển mạnh ở Việt Nam và được đầu tư nhiều hơn.

Các công ty lớn về outsource hiện nay ở Việt Nam như Global CyberSoft, CSC, Pyramid Consulting VietNam cũng đã xây dựng những nhóm research và phát triển các ứng dụng trên iPhone.
3/ Liệu ở Việt Nam, các ứng dụng trên iPhone có trở nên phổ biến và tôi có thể kiếm được tiền trên đó không?

Bạn khó kiếm được tiền từ end user ở Việt Nam. Vì thực tình mà nói, các ứng dụng trên iPhone ở VN đều được cài phần lớn qua con đường crack/hack. Tuy nhiên, trong tương lai nếu iPhone được sử dụng phổ biến ở VN, bạn có thể nghĩ ra các dịch vụ/ứng dụng mà bạn có thể kiếm tiền qua quảng cáo/ bán các gói dịch vụ/sản phẩm nâng cao,...

Bên cạnh đó, bạn vẫn có cơ hội kiếm tiền từ những user nước ngoài trên AppStore. Một application khi đưa lên bán trên AppStore, bạn sẽ được hưởng 70% doanh thu. Nếu bạn có một application hay, và có khoảng 1 triệu lượt download. Ái chà, sắp giàu rồi đấy!

Ngoài ra, kiếm tiền bằng cách làm freelancer developer cho các project iPhone cũng có thể giúp bạn kiếm được kha khá. Tôi có biết một ltv ở Hà Nội, có thể kiếm được 2000-3000$ một tháng nhờ tham gia các project outsource về iPhone.

Tôi chỉ muốn gợi lại một câu của Lỗ Tấn trong "AQ chính truyện":
"Thật ra trên đời này làm gì có đường, người ta đi mãi rồi thành đường đó thôi".

Tôi tin rằng các bạn - những lập trình viên trẻ nhiệt huyết, đam mê, và ham thích học hỏi - sẽ tự mở ra con đường của chính mình.

Nếu bạn có câu hỏi hoặc thắc mắc nào khác, bạn có thể comment trên bài viết này.

Không đề

Friday, December 18, 2009 3 phản hồi

Không đề

Không có ai đi cạnh cuộc đời
Giờ tôi đơn độc chỉ mình tôi
Tình yêu là lá bay theo gió
Bỏ lại cành khô đứng ngậm ngùi

Một thoáng cuộc đời ta có đôi
Phút vui đã lỡ mất đi rồi
Một mai em có theo duyên mới
Nhớ gửi tặng anh một nụ cười

Đời anh quả thật chẳng gì vui
Nên chỉ xin em một nụ cười
Để thấy lòng mình thêm ấm lại
Vững bước độc hành …
chỉ thế thôi


(Viết trong những ngày sắp Noel mà tôi mong rằng sẽ không bao giờ đến)

Viết cho Long Xuyên

1 phản hồi

Tình cờ đọc vài dòng về Long Xuyên trên một group facebook, tự nhiên thấy nhớ nhà quá. Tôi sinh ra không ở An Giang, nhưng hơn 15 năm ở mảnh đất này đã biến nó thành một phần quê hương trong máu thịt của tôi.

Ở nơi đó, có mối tình đầu của tôi. Một tình yêu thầm lặng suốt nhiều năm.Cái tình yêu trẻ con ngày ấy thật ngọt ngào, nhẹ nhàng như những cánh phượng hồng thời áo trắng. Mãi đến bây giờ, có lẽ người ấy cũng không biết đến tình cảm của tôi dành cho nàng.

Ở nơi đó, có một bờ hồ (mà lũ chúng tôi hay gọi hồ con Rùa) nho nhỏ. Mỗi chiều tan trường chúng tôi lại xách xe chạy lòng vòng quanh hồ, đón những cơn gió từ con sông Hậu thổi vào mát lạnh. Thỉnh thoảng chúng tôi lại đi ăn kem, bún cá ở dọc bờ hồ. Tiếng cười ngày ấy giòn tan và trong trẻo lắm.

Tôi cũng yêu ngôi trường của tôi. Mái trường Thoại Ngọc Hầu dấu yêu, nơi tôi đã học suốt 3 năm cấp ba. Ở đó, có những người bạn đã cùng tôi đi qua những khoảnh khắc đẹp nhất trong cuộc đời.

Một người bạn đã viết tặng tôi một bài thơ vào những ngày cuối cùng trong quyển lưu bút:

Ngày nào gặp chỉ lặng im.
Ba năm ngọn lửa cháy vào ước mơ.
Buổi chia tay nhớ buổi xưa.
Luyến lưu chợt nhớ thưở chưa dám gần.


Tôi nợ ai đó lời hứa về ngôi nhà chất đầy gấu bông nếu sau này tôi trở thành ... tỷ phú.
Tôi nợ ai đó những chú bướm xinh xếp bằng những cánh phượng rực rỡ đầu mùa hạ.
Tôi nợ ai đó những giây phút chạnh lòng ...
Tôi nợ cô bạn lớp trưởng của tôi một lời tỏ tình mà tôi ấp ủ ngày đêm chưa dám ngỏ.

Giờ đây, chúng tôi mỗi đứa đi một phương. Năm thì mười họa mới gặp lại nhau giữa cuộc đời tất bật. Có những lúc tôi mơ ước có một ngày chúng tôi được trở về mái trường xưa, được mặc áo trắng và ngồi vào lớp học cũ như thời chúng tôi còn đi học.

Thỉnh thoảng, tôi thích ngồi quán cafe, nhìn những tà áo trắng tung bay trước sân trường. Chỉ đơn giản để thấy mình được sống lại những khoảnh khắc hoài niệm về thời xa xưa.

Có ai đó nhớ Long Xuyên như tôi không?

Agile leader - anh là ai?

Wednesday, November 4, 2009 0 phản hồi

Agile leader - là một cụm từ tôi nghĩ ra trong những ngày gần đây. Tạm diễn đạt theo nghĩa tiếng Việt: người lãnh đạo theo trường phái Agile (chữ agile không muốn dịch - vì dịch ra có thể không hay).

Agile là một trường phái phát triển phần mềm được khởi xướng từ bản tuyên ngôn Agile do 17 bậc lão làng trong ngành phần mềm: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff SutherlandDave Thomas.

Bản tuyên ngôn này được phác thảo từ 11-13/02/2001 tại Snowbird/Uhtar.

Agile được hiện thực bởi nhiều phương pháp luận (Extreme Programming, Scrum, Crystal, Feature driven,...). Tuy nhiên bài viết này không đi vào một phương pháp luận cụ thể nào. Bạn có thể đọc về chúng trong rất nhiều sách và tài liệu trên Internet.

Tôi không thích sách vở suông. Sách vở chỉ là tờ giấy vứt đi nếu nó không được áp dụng vào thực tiễn và mang lại hiệu quả. Ở đây tôi viết về những practices để trở thành Agile leader dựa trên 2 phát biểu đầu tiên của tuyên ngôn Agile. Tôi không viết các practices cho 2 phát biểu kế tiếp vì một số lý do nhạy cảm. Tất nhiên, các practices này chỉ là do tôi đúc kết từ những kinh nghiệm chủ quan trong những dự án tôi tham gia.

Phát biểu 1: Individuals and interactions over processes and tools
(Cá nhân và giao tiếp được đánh giá cao hơn quy trình và công cụ)

- Tôi coi trọng việc giao tiếp với những thành viên trong nhóm đặc biệt qua hình thức nói chuyện mặt đối mặt. Tôi muốn nhìn thấy cảm xúc/ nghe giọng nói/ đọc những dòng code bạn tôi viết/ cảm nhận được khó khăn mà bạn tôi vấp phải. Thông qua cách này giúp tôi hiểu và chia sẻ được với đồng sự của tôi nhiều hơn việc sử dụng những công cụ vô cảm như email/skype/phone.
- Tôi không viết ra những tài liệu nếu nó không phục vụ cho mục đích giao tiếp/ truyền đạt. Nếu phải viết ra một thuật toán/ xử lý phức tạp, tôi sẽ trao đổi trực tiếp và nếu cần thiết sẽ cùng đồng sự của tôi code ra nó trên bàn của anh ta/ hoặc của tôi.
- Tôi không đưa cho ai bất kì một tài liệu mà không có giải thích trực tiếp để đảm bảo họ hiểu nhanh những gì tôi đã viết.
- Tôi sẵn sàng di chuyển để được ngồi và làm việc bên cạnh những đồng sự của tôi trong cùng một dự án.
- Nếu bạn tôi gặp khó khăn, tôi sẽ ngồi bên anh ta để cùng làm và giải quyết vấn đề.
- Tôi luôn muốn tạo điều kiện và phấn đấu để giúp cho đồng sự của tôi/ và cả tôi phát triển vì tôi tin rằng: chỉ có những con người giỏi mới tạo ra được phần mềm tốt. Không có công cụ/ quy trình nào có thể giúp sản xuất ra những phần mềm hoàn hảo với những con người yếu kém.

Phát biểu 2: Working software over comprehensive documentation
(Phần mềm chạy được được đánh giá cao hơn việc viết ra tài liệu dễ hiểu).
- Tôi đặt mong đợi ở chất lượng code và thiết kế hơn những xấp tài liệu system architecture dày cộm. Thiết kế hệ thống sẽ thay đổi theo thời gian. Vì vậy nếu cần bản thiết kế hoàn chỉnh, tôi sẽ viết ở những giai đoạn cuối dự án khi thiết kế đã hoàn chỉnh.
- Tôi chứng minh cho khách hàng nhìn thấy phần mềm chúng tôi viết chạy được bằng cách cho họ nhìn thấy càng sớm càng tốt và liên tục những gì chúng tôi đã làm được để có những phản hồi sớm nhất.
- Để có một phần mềm chạy được, tôi cập nhật/đánh giá/giải quyết những rủi ro kĩ thuật sớm nhất trong từng vòng lặp phát triển.