Nhiều bạn hay hỏi mình code bằng ngôn ngữ gì, thích công nghệ gì. Anh em làm trong ngành ai cũng biết, đi làm một thời gian thì sẽ phải dụng khá nhiều ngôn ngữ/công nghệ, không thể nói vài dòng là hết được!
Do vậy, hôm nay mình viết blog chia sẻ về các công nghệ/ngôn ngữ lập trình mình đã sử dụng qua mấy năm đi làm nha. Mình cũng review nhẹ điểm mạng/yếu, những điều mình thích/không thích của những thứ này luôn!
Đây là series bài viết 4 phần:
- Phần 1 - Công nghệ mình dùng hồi còn ở VN
- Phần 2 - Đi du học UK và làm startup Algomerchant
- Phần 3 - Học quá trời công nghệ mới tại 90Seconds
- Phần 4 - Các công nghệ hiện tại mình đang dùng
Phần này là Phần 1 - Công nghệ mình dùng hồi còn ở VN
Thuở mới đi làm – C# và WPF
Hồi mới ra trường, mình đi phỏng vấn FSoft, được vào FSU 1, chuyện làm với các khách hàng Mỹ/ Châu Âu, dùng C#. Hồi đấy tuy phỏng vấn làm web nhưng mình lại… không được code web, mà phải code WPF (Window Presentation Foundation).
Nói đơn giản, WPF là người kế nhiệm của WinForm, là một công nghệ được dùng để viết phần mềm trên Windows (và vẫn còn sống tới giờ). Thời đó, vì dự án yêu cầu viết phần mềm chạy 3D, quản lý giàn khoan dầu v…v nên sử dụng WPF.
Mặc dù là 1 công nghệ khá cũ (từ tận 2006), nhưng cá nhân mình thấy code WPF làm giao diện cũng khá ok, dễ dùng XAML để customize các component. Kết hợp với các thư viện MVVM, ta có thể dễ dàng bind dữ liệu, xử lý logic bên trong từng component.
WPF vẫn làm được nhiều giao diện đẹp, cool ngầu, dễ customize
Điểm trừ duy nhất của WPF chắc là …. chỉ chạy trên Windows, chưa chạy được trên Mac và Linux. Hiện tại Xamarin.Forms cũng hay được dùng thay WPF, sắp tới cũng có thằng .NET MaUI không biết thế nào.
Code Web ở Aswig – ASP.NET MVC
Làm được ở FSoft vài tháng, mình nhảy qua Aswig vì … lương cao hơn. Bên này mình vẫn code C#, nhưng được làm Web chứ không còn phải code WPF nữa.
Công nghệ hồi đó team mình dùng là ASP.NET MVC (C# chỉ có mỗi thằng này để làm Web), cộng với Entity Framework!
Cho những bạn chưa biết, Entity Framework là một ORM (Object Relational Mapping) của .NET, cho phép ta map các bảng trong Database thành class/object C#, thực hiện thêm/bớt/xoá/sửa mà không cần phải viết query C#.
Bộ đôi này mình thấy dùng code rất sướng:
- Áp dụng Dependency Injection, logic gì cứ viết vào service, inject vào Controller để controller gọi, trả kết quả về View.
- Code chức năng mới khá nhanh, ít phải viết query tay nhiều, trừ trường hợp cần optimize code
- Entity Framework hỗ trợ việc migration/chỉnh sửa table và field trong database và model rất tiện lợn
- Cấu trúc code khá ổn, không bị rối.
>>> Cá nhân mình thấy dự án lớn viết bằng C#, nếu code cẩn thận về sau đọc cũng dễ quản lý, dễ bảo trì hơn.
Đến bây giờ, ASP.NET Core cũng hỗ trợ mô hình MVC lẫn Razor Page, Entity Framework Core (một phiên bản nhẹ hơn của EF) cũng chạy được trên cả Mac/Linux, không phải lo vụ bản quyền nữa!
Lần đầu đụng Angular 1 (AngularJS)
Hồi đấy, may là anh Hưng leader rất ham tìm tòi học hỏi, không ngại thử cái mới, nên team mình mới được thử đủ thứ công nghệ từ NoSQL (RavenDB) cho tới Angular 1 (nay gọi là AngularJS).
Trước đó, mình chỉ biết dùng jQuery thuần, viết code JavaScript để đọc DOM này nọ, code rối tình rối mù.
Khác với jQuery, Angular không phải là thư viện (library), mà là nguyên 1 framework với đủ tính năng từ data-binding, routing, tới API call….
Từ hồi bắt đầu học và sử dụng Angular 1, mình bỗng cảm nhận được “mặt trời chân lý chói qua tim”:
- Code theo mô hình MVVM, tách riêng logic xử lý trong controller, logic render trong view
- Hỗ trợ double-binding nên viết code xử lý là dữ liệu tự render ra HTML, tự đọc input của người dùng
- Phân tách code thành nhiều module, service, dependency injection v…v
- Có quá trời thư viện/component đã build sẵn, chỉ việc tải về dùng
- Gắn 1 link script vào là chạy, chả cần setup build này nọ như bọn Angular 2, React v….v sau này!
Angular 1 theo chân mình từ Aswig cho tới tận … 2 công ty sau (ISS Lancater và Algomerchant). Cá nhân mình thấy dự án Angular 1 cấu trúc code cũng ổn, nhưng vì là JavaScript nên về sau đọc code dễ bị rối, gặp mấy ông dev viết ẩu là cũng mệt.
Hiện tại, rất nhiều công ty vẫn còn đang sử dụng/bảo trì các dự án Angular 1. Tuy vậy, nếu bắt đầu học thì các bạn nên học từ Angular 2 nha.