Định viết một bài thôi mà không ngờ dài quá nên phải chia làm 2 phần luôn. Nội dung phần 2 này sẽ chia sẽ một chút về technical, trải nghiệm khi pair-programming và ăn nhậu với team ;).
Đống code như đống *beep*
Nói chuyện con người đủ rồi, giờ nói chuyện technical một chút nào. Ứng dụng của team được xây dựng trên framework CampusM. Framework này là cũng tương tự Ionic Framework, hỗ trợ viết app di động kiểu hybrid-app bằng HTML, CSS, JavaScript. Vì nó khá mạnh, tích hợp được nhiều thứ nên được một số trường Đại học ở UK sử dụng, trong đó có trường mình. Ngày xưa, team sử dụng phiên bản 1 của framework (AEK 1) để viết các chức năng. Gần đây, framework ra phiên bản AEK 2 (Tích hợp React, Redux và ES6 khá hầm hố), một số chức năng mới lại viết bằng AEK 2. Thế là code chia ra làm “code cũ” và “code mới”, cái nào cũng đủ chuyện nhức đầu.
Ở phiên bản AEK 1, mỗi chức năng được viết trong 1 file duy nhất, chứa hết cả HTML, CSS, JavaScript. Nhìn code rối một cục mà mình chỉ biết lắc đầu thở dài ngao ngán. Chưa kể, các bác developer cũ khá thần thánh khi để HTML trong String, sau đó chơi trò cộng chuỗi HTML trong JavaScript. Do framework AEK có sử dụng dấu {{}} nên các template Javascript như Handlebar bó tay, báo hại mình phải dùng Underscore template để làm code rõ ràng, trong sáng hơn.
Qua phiên bản AEK 2, mỗi module có chia folder riêng, tách component rõ ràng, cảm giác sướng hơn hẳn. Khổ nỗi mình trước giờ có biết React là cái khỉ gì đâu, thế là phải lên pluralsight cài gấp 2,3 khóa về React. Cũng may là nhớ có một vài kiến thức nền tảng và kinh nghiệm nên việc học cũng tương đối dễ dàng, mình chỉ mất thứ bảy chủ nhật để xem clip là hiểu và tham gia ngay việc code được. Song có vấn đề khiến mình bực mình: framework mới ra nên bọn này viết document chưa đầy đủ rõ ràng. Nhiều chỗ không biết hỏi ai, lên google cũng không thấy (vì framework ít người dùng), đành phải lục source code để xem bọn nó hoạt động thế nào, vừa lục lôi bọn viết framework ra mà chửi.
Do sử dụng framework nên ứng dụng phải chạy được trên cả Android, iOS và Web. Tuy nhiên, căn chỉnh responsive để ứng dụng hiển thị tốt trên toàn bộ thiết bị là một cái chuyện sida và mệt mỏi. Team có nguyên 1 tủ chứa đầy device để test nhưng do lười nên mình chưa lấy device ra test bao giờ, chụp tấm hình làm cảnh thôi.

Tuy nhiên, mình học được vài điều khá thú vị thông qua dự án, đó là phải “đặt mình vào vị trí của user”. Mỗi người thường implement đầu đủ một chức năng từ đầu tới cuối. Mỗi khi viết code xong, admin (bé Alice) sẽ xem xét và đưa lên môi trường production để người dùng có thể dùng ngay, nhận feedback và cải tiến. Nhờ vậy, mình có cảm giác là “Thứ mình code ra có người dùng, phải code có lương tâm, từ UI/UX cho đến function”, chứ không chỉ là viết mấy dòng code xong để đó như ngày xưa nữa.
Lần đầu pair programming
Thế rồi một sáng t6 nọ, khi mình ngơ ngác chuẩn bị đi làm thì nhận được mail từ bác Brian – product owner. Mail bảo rằng hôm này có một thằng cu mới tên Geogre gia nhập team, buổi sáng nó sẽ được training sơ và framework, chiều thì pair programming với mình để học hỏi. Trước giờ mình có pair-programming đâu mà biết, mà “sếp” bảo thế thì thôi cứ làm đại vậy. Lên tới chỗ làm mới thấy Geogre là 1 thằng mập mập, học năm nhất ngành CS. Cơ mà thằng này cũng khá trâu so với tuổi, ngồi vừa pair-programming vừa nói chuyện mới biết nó code từ năm lớp 9, đã kinh qua VB, PHP, Java, JavaScript hết cả. Bố khỉ! Anh mày mới ra trường đi làm được 2 năm mà mày code đã được 3 năm rồi :v.
Pair-programming tính ra cũng vui, mỗi người code nửa tiếng, người bên cạnh xem và góp ý, sau đó đổi lượt. Thằng Geogre tính ra cũng khá thông minh sáng dạ, suy nghĩ logic tốt, chỉ gì hiểu nấy, không biết là hỏi liền. Ban đầu mình cứ nghĩ là vừa code vừa giải thích sẽ mệt và mất thời gian, không ngờ việc suy nghĩ, tìm cách giải thích cho nó lại giúp mình suy xét vấn đề cẩn thận hơn, nghĩ ra cách giải quyết tốt hơn.
Tuy nhiên để không mất mặt đàn anh, có vài lần mình dùng hotkey, viết JavaScript cú pháp ES6, dùng code đặt debugger, làm thằng ku ngơ ngác phải hỏi “How can you do that?”, tính ra mấy trò lòe thiên hạ này cũng hữu dụng vãi. Trước mình cứ nghĩ trò này tốn thời gian mà không ngờ hiệu suất lại cao phết, code 1 mình nhiều lúc mệt mệt lười lười lại code chậm, có thêm người nữa suy nghĩ cùng vừa vui lại vừa nhanh.
Quẩy – hay còn gọi là Social
Ngày trước, team chỉ có khoảng 5-6 thành viên. Dạo gần đây, do tuyển thêm vài người nên team trở nên “hơi bự”. Do đó, bé Alice tổ chức một bữa social (bên này gọi là social, ở VN mình gọi là nhậu hoặc teambulding). Ở bên này dân nó uống bia còn khiếp hơn cả mình, toàn uống bia cốc bự và không thèm uống đá, uống nhiều mà chẳng thấy say hay đỏ mặt. Team toàn dân kĩ thuật nên các bạn cũng ít chém gió, hầu như chỉ có bác Brian và anh Liam nói nhiều (mình thì mải ngắm vòng 1 bé Alice thôi :v).
Đồ ăn bên này cũng chả có gì ngon nên mình cũng không thèm chụp hình đăng facebook. Sau bữa ăn, các bạn còn ra làm thêm chầu bia trước khi chuyển qua pub quẩy. Vì tuổi già sức yếu, tửu lượng có hạn nên mình đành ngậm ngùi về sớm, không đi tiếp tăng 2 với team được. Chụp tấm hình tự sướng kỉ niệm sẵn giới thiệu bác Brian, anh Liam đập chai và bé Alice cho các bạn luôn.

Môi trường làm việc của bạn thật sự là một thiên đường cái mà tôi từng có cách đây vài năm
LikeLike
bé alice dáng cao bưởi khủng…:v
LikeLike