My coding year 2017

Spread the love

Đã qua tháng 2.2018, nhưng tôi muốn mình nhìn lại một chút về năm 2017, cũng như những gì mình đã làm trong năm 2017.
Năm 2017, là một năm tôi đã đặt ra những mục tiêu bên dưới cho mình

  • Viết blog thường xuyên hơn (Mỗi tháng ít nhất một bài Blog)
  • Nâng cao khả năng viết code theo kiểu TDD
  • Tìm hiểu về serverless và các use-case để áp dụng vào thực tế
  • Tìm hiểu về CI/CD và áp dụng vào dự án hiện tại

Bây giờ cùng xem lại là mình đã hoàn thành được những gì:

Viết blog thường xuyên hơn (Mỗi tháng ít nhất một bài Blog) ×

Theo như thông tin trên trang web thì tôi đã không thể thực hiện được mục tiêu này.

Một số tháng thì tôi viết khá nhiều bài (2,3 bài tháng) như tháng 3, tháng 4, một số tháng thì tôi không thể viết được bài nào (Tháng 4,5,7,8,9) → Đây là những tháng mà công việc ở công ty khá bận, nhưng dù sao đi nữa thì tôi cũng đã không thể viết đủ số bài viết theo như dự định của mình. Nên đơn giản là mục tiêu này đã không đạt được 🙂 có lẽ tôi sẽ cần phải cố gắng hơn

Nâng cao khả năng viết code theo kiểu TDD  〇

Bắt đầu bằng việc một dự án tôi tham gia vào cuối tháng 12.2016 có quá nhiều degrade và bugs phát sinh sau khi hệ thống được thêm vào những tính năng mới. Tôi bắt đầu nghĩ đến việc viết unit test và tự động hóa quá trình integration những tính năng mới vào hệ thống. Khởi đầu khá là trầy trật với việc phải thay đổi cách suy nghĩ, cũng như cách thực hiện dự án. Từ bỏ thói quen code cũ cũng như nếp suy nghĩ cũ là điều khá khó khăn nhưng cũng đầy thú vị và thử thách.

Bắt đầu bằng việc đọc sách, quyển sách đầu tiên của tôi về TDD là quyển Test Driven Development (Kent Beck), sau đó là series
PHP-Unit Testing – Laracast đã định hướng cho tôi khá nhiều về cách implement TDD trong thực tế.

Tìm hiểu về Serverless và các Use-case áp dụng vào thực tế ▢

Thực ra mà nói thì đây là mục tiêu nửa cuối tháng 6.2017, sau khi tôi đã hoàn thành khóa học trực tuyến về AWS Solutions Architect. Thật ra tôi bắt đầu tìm hiểu, mò mẫm về cách deploy source code của PHP (laravel framework) lên Lambda, nhưng có vẻ vẫn hơi khó thực hiện. Tôi bắt đầu down motivation cho đến cuối tháng 12.2017, tôi quyết định quay trở lại với Lambda, tất nhiên Mô hình serverless có nhiều ưu thế cũng như hạn chế, dù sao đi nữa thì tôi cho rằng nếu mình có thể có nhiều options khi thiết kế hệ thống vẫn là một điều tốt. Tôi quyết định thực hiện tiếp mục tiêu này vào năm nay.

Tìm hiểu về CI/CD và áp dụng vào dự án hiện tại ▢

Đây là bài toán tiếp theo tôi muốn giải quyết khi hiện  tại chất lượng source của dự án càng ngày càng đi xuống (theo thời gian). Khi được giao một task về sửa bug A, thường bạn developer chỉ giải quyết bug A, mà ít khi tìm hiểu kỹ hơn là việc giải quyết bug A có ảnh hưởng gì đến hệ thống hiện tại, hơn nữa nếu bug A là do thiết kế ban đầu cồng kềnh, không hợp lý thì thường bạn ấy giải quyết bằng cách chỉ sửa nguyên nhân trực tiếp, chứ không refactor lại code. Điều này dẫn đến một nhu cầu là khi giải quyết một vấn đề của hệ thống hiện tại thì sau khi tích hợp giải pháp mới vào hệ thống hiện tại phải thỏa :

  • Các metrics (coding coverage, coding convention, warning) phải tốt hơn hệ thống cũ (nếu bạn fix A mà gây ra A’ thì đúng là bug thạch sanh)
  • Tính dễ hiểu: không copy code, không gây code khó hiểu, không tạo nên spaghetti code
  • Tính toàn vẹn: Chỉnh sửa bug A sẽ không làm cho flow logic thay đổi, System Test case vẫn phải pass hết
  • Tính bao đóng: Sửa bug A thì không thể nào ảnh hưởng đến module B. (hoặc phải chỉnh sửa file không liên quan đến A)

Tóm lại là hiện tại tôi chỉ mới đi được một nửa đoạn đường, khi integrate được Jenkins vào hệ thống hiện tại, tuy nhiên việc define các metrics cũng như áp dụng, cập nhật được cá metrics thì sẽ là một vấn đề mà tôi phải tiếp tục giải quyết và chắc lọc lại để làm cho hệ thống càng ngày càng tốt hơn

Now off for 2018

và bên dưới sẽ là những mục tiêu cho năm 2018

  • Deploy được một service chạy trên lambda (Sẽ áp dụng vào project tôi đang làm hiện tại Plan Your Trip :->)
  • Tìm hiểu thêm một tools CI/CD khác ngoài Jenkins (tất nhiên tôi muốn so sánh, và tôi phải thử một cái gì khác)
  • Develop một chatbot (tất nhiên sẽ là một modules nhỏ của Plan Your Trip)
  • Thực hiện ít nhất 3 bài thuyết trình – (Năm 2017 tôi chỉ mới thực hiện được một bài,hi vọng năm nay sẽ được nhiều hơn)
  • Dám thay đổi, dám nhận thách thức mới để chạm đến giấc mơ của mình

 

Leave a Reply

Your email address will not be published. Required fields are marked *