Mảng startup công cụ cho lập trình viên còn hạn hẹp, thường là các tập đoàn lớn tại Việt Nam mới có thể triển khai. Cơ hội nào dành cho các nhóm còn lại?

Công việc của một lập trình viên không chỉ đơn thuần là viết code. Khi làm việc với các dự án đơn giản, được lập trình dựa trên các công cụ và khung phần mềm (framework) có sẵn, thường là phát triển Website, Ứng dụng Mobile, … thì đúng là hầu như các lập trình viên chỉ cần viết đến code theo khung và các tính năng đã được hỗ trợ.

Ở các dự án phức tạp hơn, nhiều thành phần thì việc cho ra được những dòng code chất lượng tốt là không dễ dàng. Chính vì vậy ngoài viết code, lập trình viên sẽ cần làm thêm những công việc sau đây (theo phương diện tổng quát, mỗi công ty sẽ có quy trình khác nhau):

  • Before commit (trước khi đưa code của mình vào kho dự án chung của team và được mọi người nhìn thấy): kiểm tra coding convention (quy tắc viết code). Thường thì có thể sẽ dùng một bộ quy tắc đã được xây dựng sẵn từ các công ty công nghệ lớn, hoặc nội bộ và tùy dự án đặt ra các quy tắc riêng. Điều này đảm bảo cho việc thống nhất giữa cách đọc hiểu dự án, tăng tính dễ mở rộng, dễ bảo trì cho mã nguồn, dễ dàng kết nạp thêm lập trình viên. Việc viết code lộn xộn và tùy hứng sẽ khiến dự án khó phát triển, nhất là khi nhân sự không còn làm việc thì dễ xảy ra tình trạng code của ông này chỉ có ông ấy hiểu được. Dẫn đến việc chúng ta có các công cụ kiểm tra coding convention. Bộ quy tắc các công cụ đó sử dụng có thể lựa chọn theo Google, Apple, vân vân. Lập trình viên sử dụng cũng có thể tự đặt ra coding convention riêng để công cụ kiểm tra code và gợi ý chỉnh sửa.
  • Static Analysis: các công cụ phát hiện lỗi lập trình bằng cách đọc mã nguồn đã viết. Vì ứng dụng này không thực thi chương trình, không biết đến toàn bộ quá trình thực thi của mã nguồn nên gọi là Static Analysis (phân tích tĩnh). Quy trình này có thể phát hiện ra được khá nhiều lỗi.Static Analysis xuất hiện trong:+ trình biên dịch (các khuyến cáo (warning) sau khi đã biên dịch xong code thành phần mềm nhưng chúng ta vẫn có thể gặp những gợi ý từ trình dịch và một số trường hợp là rất quan trọng để áp dụng. Ở những ngôn ngữ lập trình nhạy cảm, nguy cơ bảo mật cao ví dụ như C, sẽ có những dự án yêu cầu không bỏ sót bất kỳ warning nào trong lập trình. Gợi ý từ trình biên dịch là một dạng static analysis+ các công cụ phân tích mã nguồn: SonarQube (hỗ trợ 27 ngôn ngữ lập trình), JetBrains ReSharper (C#, VB.NET, XAML, ASP.NET, JavaScript, TypeScript, CSS, HTML, XML), DeepSource (Python, JavaScript, Go, Ruby, Java, Docker, SQL, Terraform, Shell), …
  • Unit testing: đây là công việc của lập trình viên, nhưng nhiều công ty mình thấy rằng coder rất lười, không muốn test code của họ nên đẩy sang cho tester thực thi phần mềm thủ công để tìm ra lỗi. Việc này gây tốn thời gian để tìm lỗi và tăng cao quy cơ gặp lại lỗi đã sửa, quá trình feedback bị kéo dài và lặp lại liên tục chính là một trong những nguyên nhân trễ deadline của dự án phần mềm. Unit testing là một phương pháp hiệu quả, thậm chí là bắt buộc với các lập trình viên chuyên nghiệp trong bất kỳ dự án nào.

Lập trình viên sẽ phải viết code để kiểm tra chính code của mình. Gọi là Unit Test bởi đây là quá trình kiểm tra thành phần nhỏ cấu thành nên dự án. Ý tưởng của nó có thể hiểu rằng bất kỳ thành phần đó có được thay đổi và cập nhật như thế nào, nhiệm vụ của nó vẫn luôn cần được đảm bảo. Unit test sẽ được sử dụng lại trong suốt quá trình dự án và thậm chí là test lại cho từng lần cập nhật mã nguồn.

Static Analysis và Unit Testing, cũng như Code Syntax có thể thực hiện offline trên máy lập trình viên trước khi commit. Tuy nhiên xu hướng Continuous Integration (tích hợp liên tục) và các ứng dụng cloud đã dần chuyển những công cụ đó tự động thực thi sau khi có code mới.

Lập trình viên cập nhật code của mình lên kho dự án và đọc các báo cáo của nhiều quy trình kiểm thử mã nguồn để tìm ra vấn đề. Tuy nhiên, mình thấy nên kếp hợp cả 2 công cụ offline và online. Vì công cụ online sẽ thực thi lâu hơn và chúng ta không nên để lập trình viên chờ đợi, sẽ làm giảm hiệu quả tinh thần và hiệu quả thực tế của dự án rất nhiều. Tác dụng của công cụ online đó là giúp chúng ta kiểm tra mã nguồn trên nhiều nền tảng và kịch bản khác nhau cùng một lúc và tự động. Vậy tối ưu nhất là test trên máy của lập trình viên lẫn trên cloud, nếu có thể triển khai được.

Công cụ Unit Testing: các ngôn ngữ lập trình thường đã đi kèm theo những bộ phát triển Unit Test phổ biến. Thường sẽ có thêm các công cụ được phát triển để thực thi các Unit Test và quản lý, thống kê, báo cáo tổng hợp các Unit Test.

Trường hợp của Katalon chính là như vậy. Katalon phát triển một phần mềm trung tâm để quản lý test (unit test và các loại test khác) cho một dự án sử dụng nhiều công nghệ / kỹ thuật khác nhau. Katalon kết nối đến bộ testing của từng khung phần mềm và các công cụ lập trình viên sử dụng để tổng hợp kết quả cũng như điều khiển công việc kiểm thử theo các kịch bản. Từ đó nâng cao hiệu quả chung của dự án.Các mức độ testing cao hơn và phức tạp hơn được liệt kê tại: https://en.wikipedia.org/wiki/Software_testing. Trong khuôn khổ bài viết không thể quá dài nên mình giới thiệu qua về một số kỹ thuật đơn giản như trên.

Ý tưởng startup công cụ dành cho lập trình viên?

Mảng này theo mình đúng là rất khó phát triển bởi chắc chắn phải là một lập trình viên nhiều kinh nghiệm mới có thể nhận ra được những điểm khó trong phát triển phần mềm và thiết kế / xây dựng ra giải pháp phù hợp. Bởi hầu hết các khó khăn trong phát triển phần mềm đều có thể được giải quyết bằng việc trở thành một lập trình viên giỏi hơn.Ví dụ ở những công ty có văn hóa kỹ thuật (engineering culture) tốt, nhân sự họ ý thức được việc tối ưu chất lượng mã nguồn bằng nhiều cách khác nhau và đã hình thành thói quen khi họ giải quyết các bài toán lập trình.

Họ sẽ không cần thiết phải sử dụng nhiều giải pháp kiểm tra phức tạp, thậm chí điều này sẽ phản tác dụng khi làm tốn thời gian của họ để có một đảm bảo hai bước với những vấn đề mà họ đã có thể loại trừ. Thường những đội ngũ này có thể nói là đã tìm ra quy luật 80-20 của riêng họ, dẫn tới việc sẽ chỉ sử dụng các phương pháp kiểm tra thuần túy, gọn gàng và trông có vẻ đơn giản, nhưng thực tế rằng hiệu quả rất lớn.

Bài viết cũng đồng thời chia sẻ một vài kinh nghiệm có thể áp dụng cho các bạn đang xây dựng startup có những cách thức để nâng cao chất lượng của sản phẩm. Bởi khởi nghiệp thời nay công nghệ là phổ biến, và bản chất của công nghệ đó là viết code. Một vài đoạn code không hiệu quả có thể khiến ứng dụng phát phì thêm vài Megabyte dung lượng, cuối cùng chúng ta có một ứng dụng nặng nề không ai muốn cài, hoặc code khiến thực thi chậm, code kém sáng tạo và chán nản ảnh hưởng ngay đến tâm lý của các lập trình viên trong team nhưng chúng ta không hề nhận ra – dẫn đến việc khó tạo nên được một sản phẩm xuất sắc.

Nguồn: Nguyễn Tiến Mạnh – Founder PRIME Tech.

————***————

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây