Nhìn lại 2023: Đắng cay ngọt bùi và những task nhớ tới già của một Mobile Developer
2023 là một năm kinh tế ảm đạm, cơn sóng thần layoff quét qua toàn cầu, VNIndex thì rớt gần 200 điểm, còn giá vàng cuối năm thì nhảy như Seng Trần lắc đít. Thôi thì chúng ta hãy hy vọng, nhiều chuyên gia dự đoán rằng cuối năm 2024 thì nền kinh tế Việt Nam sẽ bước vào giai đoạn phục hồi. Thời điểm này, còn khoản đầu tư nào thích hợp hơn là đầu tư cho bản thân và ẩn mình chờ thời? Sau đây mình sẽ chia sẻ những trải nghiệm và những task đáng nhớ của mình trong năm 2023 dưới cương vị là Mobile Dev nhé.
(Nguồn: VTV24)
Task: Chèn chữ ký vào PDF - VOffice 4.0 (Flutter)
(Ảnh minh họa. Nguồn)
VOffice 4.0 là một Flutter app quản lý văn bản online dành cho doanh nghiệp do Viettel phát triển. Một trong những tính năng nổi bật của nó là cho phép ban hành văn bản, đọc văn bản, ký duyệt online, chuyển xử lý, book lịch họp... App này ban đầu mới chỉ xem được PDF thôi, nhiệm vụ của mình là phải cho user vẽ chữ ký và chèn vào PDF này, chữ ký có thể được di chuyển, xoay, phóng to thu nhỏ.
Quá trình mình làm task này:
-
Đọc hiểu phần code hiển thị PDF. Hóa ra, Flutter ngày đó không có 1 thư viện nào giúp hiển thị PDF cả, phải gọi xuống native. Code Swift thì dễ hiểu, nhưng Android mới là vấn đề. Khứa đồng nghiệp code chức năng này bảo đó là ma thuật của các fap sư Trung Hoa. Đúng là fap sư, code đếch hiểu gì cả. (Nguồn: Youtube - Game Cực Hay)
-
Vô vọng khi tìm giải pháp cho Android. Giải pháp 1: custom code có sẵn của fap sư Trung Hoa - LOẠI. Mình cũng thử Google hàng chục câu hỏi như là chèn chữ ký/chèn hình ảnh vào PDF Flutter/Android/Java/Kotlin... nhưng không ra. Giải pháp 2: viết lại với Android native - LOẠI.
-
Từ vô vọng tới hy vọng. Sau khi báo cáo chuyện này cho leader, bằng một thần kỳ nào đấy, anh Dương Quang Huy (+1 reference ) đã tìm ra manh mối trên StackOverflow. Nể thật, sao mình cũng google mà lại không tìm thấy? Mặc dù nó không có đoạn code cụ thể nào cả, chỉ có 1 hình ảnh và những thư viện mà dev đấy sử dụng, nhưng chỉ cần vậy là đủ. Task chèn chữ ký này là có thể thực hiện.
-
Mò mẫm, thử và sai, OT suốt một tháng. Mình chưa bao giờ tưởng tượng được rằng có cái task lập trình nào nào mà nó có nhiều toán như thế này. Có cộng trừ nhân chia, có quy đổi đơn vị (pixel - point), có tọa độ Oxy, các phép biến đổi trong không gian đồ họa 2 chiều (đã được học ở môn Đồ họa máy tính - nhân ma trận của phép tịnh tiến, phép xoay và phép tỉ lệ). Các bạn có thể xem hình phía bên dưới. Mặc dù mình đã OT liên tục cố làm cho xong nhưng vẫn tốn cả tháng để làm cho xong thứ quỷ quái này được.
Bài học rút ra:
- Kiên trì hơn nữa trong việc search Google: Chỉ với mấy kết quả ban đầu, mình đã vội vã kết luận là không thể insert hình ảnh vào PDF trong Android native. Nếu mình kiên trì đọc tiếp tới trang Google thứ hai, có lẽ mình đã tìm ra giải pháp rồi.
- Đừng dùng những thứ mình không hiểu, đặc biệt cẩn thận với code của fap sư Trung Hoa và fap sư Ấn Độ. Và phải ghi document cẩn thận.
Task: Fix bug của con app cổ đại với 7 vòng lặp và 7 if-else
Fix bug của người khác chả bao giờ là dễ dàng. Hệ thống này hình như có tuổi đời cũng chục năm rồi thì phải. Mặc dù kiến trúc không phải hiện đại lắm, được code theo kiểu God Activity, nhưng nhìn chung cũng dễ hiểu. Mặc dù vậy, qua tay nhiều đời dev khiến phần kiến trúc có tốt tới đâu cũng không thể gánh được những cái logic, nghiệp vụ chồng chéo lên nhau.
Cái đáng sợ nhất của maintain hệ thống live production lâu đời là ta không thể lường trước được tất cả kịch bản ảnh hưởng khi fix bug. Sửa được lỗi này thì có khi lại lòi ra lỗi mới. Trước khi deploy tất nhiên sẽ qua tay QA/tester, nên người chịu trách nhiệm sau cùng không phải là dev. Tất nhiên họ cũng sợ, nên họ sẽ yêu cầu dev trả lời mấy câu hỏi sau:
- Điều kiện/hành vi nào sẽ dẫn tới dòng code mà bạn đang sửa?
- Liệu thay đổi cái này có xảy ra side effect, xảy ra lỗi mới nào không?
Tưởng tượng bạn trầy trật mất mấy ngày mới tìm ra dòng code gây ra lỗi, mà cái dòng code đấy là nằm trong method dài 900 dòng, nằm trong 7 vòng lặp và 7 cái if-else, rồi cái method này liên kết tới vài function cùng dài vài trăm dòng khác, xong QA hỏi bạn mấy câu hỏi trên, biết phải trả lời thế nào giờ?
(Nguồn: Reddit)
Đóng góp cho cộng đồng Flutter
Đầu tiên là publish package Flutter đầu tiên lên pub.dev. Package này tên là recursive_tree_flutter. Xưa giờ toàn xài chùa code của người khác, và đây là lần đầu tiên mình viết một thư viện open-source luôn. Cũng có người xài thật mới ghê Thật tự hào.
Thứ hai là viết technical blog. Có Viblo nè, có Medium nè. Mới viết có dăm ba thứ linh tinh thôi nhưng cũng có người vào đọc, hề hề. Nó giúp mình hiểu rõ và nhớ lâu hơn hơn về thứ mình viết, đồng thời cùng giúp mình cải thiện khả năng viết lách, kỹ năng phản biện để bảo vệ quan điểm, khả năng research và tổng hợp tài liệu...
Học IELTS thất bại do ham chơi game và sự phát triển chậm lại
2023 không phải là một năm hoàn hảo. Giai đoạn maintain không đem lại cho mình quá nhiều sự đổi mới và nâng cao tay nghề (và cũng hơi chán nữa). Mặt khác, trong khoảng thời gian này, mình cũng bắt đầu đăng ký gia sư để học IELTS. Lương bạn sẽ cao hơn nhiều nếu bạn có thể giao tiếp trong môi trường tiếng Anh, trong công ty nước ngoài hoặc xuất ngoại. Dù đã có TOEIC 800 và khả năng nghe khá tốt, mình vẫn quyết định học IELTS để nâng cao khả năng giao tiếp và có cái bằng cho nó uy tín.
Tuy nhiên, dự định này đã thất bại. Thứ nhất là do khoảng thời gian này mình bắt đầu chơi game, nên không có thời gian học. May là giờ mình đã bỏ và chuyển qua đọc sách cho nó lành mạnh. Thứ hai là mình muốn học IELTS để nâng cao kỹ năng speak, nhưng đây lại là IELTS Academic, thời gian thực sự nói chuyện giữa các học viên với nhau là không nhiều. Chung quy lại, sau 3 tháng, mình đã quyết định bỏ cuộc và tìm một giải pháp khác. Phỏng vấn/làm freelance chỉ cần nói tiếng Anh trôi chảy thôi là uy tín rồi. Đâu cần bằng IELTS các bạn nhỉ
Tổng kết
Tổng kết lại, 2023 thành công cũng có mà thất bại cũng có. Những gì không vui hãy để lại, cùng hướng tới tương lai tốt đẹp hơn. Tạm biệt 2023 và xin chào 2024.
(Nguồn: Freepik)
Một số series mình đang thực hiện:
- Flutter architecture design series: https://medium.com/@nvbien
- Linh ta linh tinh: https://viblo.asia/u/nvbien
All rights reserved