Tản Mạn: Chuyện Nghề
Tuần này sẵn có một ngày lễ (public holiday) nên mình xin nghỉ luôn 4 ngày còn lại cho đủ nguyên tuần. Cộng thêm mấy ngày cuối tuần nữa thành ra mình nghỉ nguyên một lèo 9 ngày. What a long holiday! Tưởng là dài vậy mà nó trôi qua nhanh cái rẹt, chuẩn bị quay lại mần việc rồi. Mình tranh thủ viết chút xíu nhân dịp đầu óc vẫn còn thư thái, thoải mái.
…
1 Mình từng đề cập trong review nửa năm đầu 2020 là trong 6 tháng rồi, mình rất ít khi viết dòng code iOS (Swift/Objective-C) nào. Vai trò của mình trong team là đi mua vui cho đồng nghiệp. Ủa lộn, đó là công việc mình thích làm mà không ai muốn mình làm. Nói chung lâu lắm rồi mình không làm product features nên có ai ping hỏi thì đoạn hội thoại nó sẽ kiểu như thế này đây:
- “Ê mày, cái flow này, nếu fail thì behavior của app như thế nào?”
- “Hmm… Thiệt chứ tao không nhớ cái mô tê gì hết”
- “Ủa xưa mày làm cái này mà”
- “Ủa… Tao code hả”
Thú thật mình không thích làm product features cho lắm bởi một vài lý do:
- Thứ nhất, làm product features thường liên quan nhiều đến giao diện (UI), mà mình thì code UI hơi bị dở. Nhiều lúc code mấy cái scrollView hay tableView mà content động và có animation thì mình thấy chán ngán. Bỏ ra 2 tiếng đồng hồ để code và unit tests một cái logic nào đó thì thấy đáng, còn bỏ ra 2 tiếng đồng hồ chỉ để chỉnh cho content của scrollView nó hiển thị, animate cho đúng thì mình thấy hơi lãng phí thời gian. Điều này không có nghĩa là mình cho rằng UI không quan trọng, mà đơn giản là app UI đối với mình không có độ ưu tiên cao.
- Thứ nhì, làm product features cần giao tiếp (communicate) với nhiều bên liên quan (stakeholders). Những stakeholders này thường là product managers (PM), testers (QA/QC), và những kỹ sư team khác. Nhiều lúc discussion với những stakeholders, đặc biệt là những người không phải kỹ sư, rất dễ khiến mình nổi quạo. Dev-QA là câu chuyện nghìn lẻ một đêm trong nghề kỹ sư mà. À, không phải ai cũng có mức độ gây-khó-chịu ở mức cao. Nói chung cũng có người “this” người “that”.
Mà “ghét của nào trời cho của đó”. Vì một vài thay đổi nên team thiếu resources, mai mốt mình bị hốt về làm product features lại, mặc dù không phải làm full-time về products. Nếu hỏi mình thích thay đổi này hông thì câu trả lời dĩ nhiên là hông rồi :). Nhưng mà zao ôi, con người khó hiểu lắm, đôi khi cái mình không thích lại là cái cần thiết. Tự do quá cũng không tốt, áp đặt quá cũng không tốt. Cân bằng giữa cả 2 luôn là tốt nhất… Nhìn về mặt tích cực thì: khi tôi luyện chữ “nghệ” thì cũng phải tôi luyện chữ “nhẫn” một chút.
…
2 Ngoài product features còn có engineering work. Engineering work thì gồm nhiều loại, có thể:
- Liên quan tới product features như: refactor code liên quan, viết tests (unit tests + UI tests)…
- Hoặc là platform work như xây dựng/đề xuất/cải thiện: app architecture, testing solution (viết test ra sao), build time improvement, CI/CD…
Đối với project hiện tại, kỹ sư từ các tech families khác thì làm chủ yếu về product features liên quan đến tech family (TF) đó, hoặc engineering work liên quan đến các features đó. Còn về platform work thì hiện giờ do team mình làm.
Làm platform work, khách hàng mà tụi mình phục vụ không ai khác, chính là các kỹ sư trong team và từ các tech families khác. Như vậy, với một kỹ sư iOS bình thường, có một số cái work tinh xảo ở phía sau (trong một bức tranh tổng thể nào đó) mà bạn không nhất thiết phải biết đến. Hệ quả của điều này là, khi có issues hoặc có khúc mắc gì đó về platform work, team mình sẽ support để unblock issues hoặc giải đáp thắc mắc nếu có thể. Team có tạo cái slack channel riêng #ask-dax-ios
cho mụch đích hỗ trợ này. Trên thực tế thì không chỉ có developers mà QA hay PM cũng hay lên đây hỏi nữa.
Khi một kỹ sư từ tech families khác ping mình hỏi về một issue nào đó, hết 9 trên 10 trường hợp mình sẽ bảo bản lên cái slack channel kia để hỏi rồi mình vào đó trả lời. Trừ phi bạn hỏi về cái gì đó đặc biệt mà người khác không gặp thì ok. Còn nếu là một issue gì đó mà người khác có thể cũng sẽ gặp phải thì hỏi trên group sẽ có tính tái sử dụng cao hơn. Cụ thể, nếu một người thứ 2 hỏi cùng vấn đề, mình chỉ cần loop người ta vào cái thread của người hỏi trước đó… Bạn bè của mình “được” người ta ping hỏi gì đó, xong ping hỏi lại mình, thì mình cũng hay bảo “anh/em ơi, làm ơn bảo nó hỏi trên group đi, rồi em vào đó trả lời”.
Nói về chuyện hỏi, hồi xưa mình có viết bài “Tản mạn: Câu hỏi tồi hay là sự hời hợt”. Chắc 50 năm sau, bài này cũng không cũ đi chút nào. Có nhiều trường hợp hỏi nhờ hỗ trợ mà thấy thiếu thông tin ghê gớm. Ví dụ như “hổng biết sao trên CI, tao bị fail lỗi này hoài «blah blah»” –> Làm ơn cho xin cái link tới cái CI job bị lỗi 😐. Giả tỉ QA báo bug cho bạn mà không có log, screenshot gì đính kèm, bạn có muốn cào mặt nó hông? Sao lại đi tạo nghiệp cho nhau như vậy chứ.
…
Còn tiếp…