Mở đầu
Xin chào các bạn, qua việc tham gia các dự án thực tế, tham gia các cuộc thi tại doanh nghiệp hay làm dự án tại trường học mình đã rút ra được 1 số tool, web và kinh nghiệm khi vào dự án, ở cuối sẽ có Example cho dự án mình đã tham gia nhé.
Các công cụ hay dùng và kinh nghiệm của mình
Các công cụ hay dùng:
Git và GitLab: Đối với 2 công cụ trên mình thấy hay dùng các lệnh phổ biến như git pull, push, commit, git stash save, git stash pop, git checkout,... Hãy tự tạo 1 project sample để thực hành làm quen với các lệnh cơ bản của git nhé.
Stackoverflow: Đây có lẽ là 1 trang phổ biến cho các bạn tìm các câu hỏi trả lời khi gặp 1 vấn đề trong quá trình làm dự án.
Medium: Trang này có các bài blog rất hay và các tip để cho chúng ta hiểu hơn nhiều về ngôn ngữ lập trình hay cấu trúc code, clean code,...
Document của công nghệ đang sử dụng: Thường mỗi công nghệ hay các ngôn ngữ lập trình các nhà phát triển sẽ có page document riêng để cho chúng ta vào đọc và hiểu sâu hơn về công nghệ đó.
IDE: Hãy tìm hiểu thật kĩ về IDE dựa trên công nghệ mà dự án đang dùng nhé, ví dụ như IDE có extension nào hỗ trợ format code, hay check các warning như null, exception,…
Kinh nghiệm khi vào dự án thực tế:
Theo mình, khi bước vào dự án chúng ta cần đọc kĩ các quy tắc, quy trình phát triển khác nhau, tài liệu của dự án để hiểu được luồng của dự án. Phải hiểu được dự án đang dùng những công nghệ gì, hiểu rõ cách hoạt động của công nghệ đó.
Một số tài liệu bạn nên đọc như clean code, quy trình phát triển dự án, kiểm thử dự án, kĩ năng giải quyết vấn đề.
Xây dựng kế hoạch: Tạo ra một kế hoạch làm việc chi tiết với các bước cụ thể và thời gian ước tính cho từng nhiệm vụ. Kế hoạch giúp bạn duy trì sự tổ chức và tiến độ.
Chọn công nghệ phù hợp: Chọn công nghệ phù hợp với dự án. Hãy cân nhắc sự tương hợp giữa yêu cầu dự án và kiến thức của bạn.
Sử dụng các quy tắc và nguyên tắc lập trình tốt: Việc sử dụng các quy tắc và nguyên tắc lập trình như "Don't Repeat Yourself" (DRY), "Keep It Simple, Stupid" (KISS), và "Single Responsibility Principle" giúp mã nguồn của bạn dễ đọc, bảo trì và mở rộng.
Sử dụng hệ thống quản lý phiên bản: Git là một trong những VCS phổ biến nhất. Sử dụng nó để theo dõi và quản lý các phiên bản của mã nguồn. Điều này giúp bạn có khả năng hoàn thiện mã nguồn mà không làm mất thông tin và dễ dàng hợp tác với đồng đội.
Kiểm thử: Hãy kiểm tra mã của bạn thường xuyên để tìm và khắc phục lỗi. Sử dụng các kỹ thuật kiểm thử tự động để tăng hiệu suất và đảm bảo tính ổn định của ứng dụng.
Giao tiếp với đồng đội và khách hàng: Luôn duy trì liên lạc và giao tiếp với đồng đội và khách hàng. Lắng nghe ý kiến, hỏi và giải quyết thắc mắc, và thúc đẩy sự hiểu biết chung về dự án.
Học hỏi và cải tiến: Dự án thực tế là cơ hội để học hỏi và phát triển kỹ năng. Hãy lắng nghe phản hồi, tự đánh giá, và tìm kiếm cơ hội để cải thiện. Lập trình thực tế có thể gặp nhiều khó khăn. Tính kiên nhẫn và sẵn sàng học hỏi là quan trọng để vượt qua các thử thách.
Example: Mình đang làm dự án về quản lý nhân viên dùng framework Flutter, dùng Gitlab để quản lý source code.
Trước khi mình vào dự án sẽ được quản lý dự án thông báo những công nghệ nào sẽ được dùng trong dự án và dự án này mình sẽ dùng Framework Flutter, ngôn ngữ lập trình: Dart, version Flutter: Flutter 3.10.0, Quản lý state: Provider, IDE (khuyên dùng): Android studio.
Mình sẽ có khoảng 1 hoặc 2 tuần tự học về công nghệ đó và tạo ra 1 sample để thực hành.
Khi bước vào dự án, cả Team sẽ họp để nói tổng quát về quy trình phát triển, thời gian dự án, công nghệ sử dụng, sẽ nói qua về luồng dự án trước. Do đã có nền tảng qua 1 số ngôn ngữ lập trình khác(vì Dart mình thấy nó kết hợp giữa java và kotlin) nên khi bắt đầu mình không gặp quá nhiều khó khăn, về Flutter mình sẽ học về vòng đời, cách quản lí state, thực hiện đa luồng, hay các tip để clean code, tối ưu performance khi code Flutter.
Như dự án của mình thì sẽ chia thành các Phrase. Phase 1, 2, 3 ví dụ phase 1 sẽ bao gồm các tính năng như login, logout, change pass. Hiện tại mình đang đến giai đoạn Release app. Sau khi hoàn thành Phase 1 sẽ thực hiện build 1 bản app cho khách hàng test( như dự án mình là khách hàng sẽ thuê 1 đội test để test app, vậy khi các bạn code xong tính năng, hãy test thật kỹ để tránh bị khách hàng claim nhiều). Nếu có bug sẽ có backlog riêng để quản lý bug của khách hàng gửi về.
Vào 8h30 sáng hàng ngày sẽ thực hiện họp team để để các member nói về quá trình thực hiện task ra sao, tiến độ thế nào và khi mình cần confirm hay thắc mắc vấn đề có thể hỏi luôn trong cuộc họp. Mỗi khi họp xong sẽ có 1 người ghi lại nội dung họp ra sao để các thành viên nắm được.
Khi nhận task và kéo task, các member phải xác nhận với quản lý dự án xem task nào nên ưu tiên hơn. Khi xác nhận xong member thực hiện kéo task, khi kéo chúng mình sẽ ước tính việc hoàn thành task dó trong bao lâu( nên nhớ ước tính cả các trường hợp phát sinh với task đó nhé).
Thường thì sẽ tách branh từ 1 nhành gốc để code. Khi thực hiện xong task, chúng ta nên test thật kỹ tính năng đó nhé, hãy đóng vai trò như mình là người dùng trải nghiệm tính năng đó. Test xong sẽ tiến hành tạo merge request để member trong team review code để tối ưu logic và performance( chúng ta cố gắng code sao cho dễ đọc, “Khi chúng ta làm ra cái gì, đừng đẻ ra 1 đống rác cho người khác review”). Khi làm ra tính năng sản phẩm nào đó chúng ta nên cẩn thận và tỉ mỉ, chau chuốt trong từng chi tiết, trong từng dòng code nhé.
Nếu code đã tối ưu thì sẽ kéo sang test để tester thực hiện test 1 lần nữa trước khi kéo sang cho khách hàng. Khi phát sinh vấn đề nào hãy chủ động ngồi lại với các thành viên trong team để có hướng xử lí làm sao cho tối ưu và phù hợp với cả khách hàng. Khi kết thúc mỗi Phrase hoặc dự án, cả team sẽ ngồi họp lại với nhau xem còn những vấn đề nào tồn đọng cần giải quyết, mỗi thành viên sẽ chủ động nêu ra mình học được gì và còn vấn đề gì từ mỗi Phrase. để khi sang Phrase sau hay sang dự án khác chúng ta sẽ có thêm kinh nghiệm giải quyết vấn đề.
Kết
Trên đây là các công cụ hay dùng, tài liệu mình hay dùng trong dự án thực tế. Và một số kinh nghiệm làm dự án của mình. Hãy luôn tiếp tục học hỏi và cải thiện: Trong lĩnh vực công nghệ, không bao giờ có điều gì là tối đa về kiến thức. Luôn cố gắng tiếp tục học hỏi, khám phá công nghệ mới và cải thiện kỹ năng của bản thân. Cuối cùng, hãy luôn đam mê và tận hưởng hành trình trong lĩnh vực công nghệ! Cảm ơn bạn đã chia sẻ và chúc bạn thành công trên con đường sự nghiệp của mình!