Nội dung chính
Angular là gì? Angular là một JavaScript framework dùng để viết giao diện web (Front-end), được phát triển bởi Google. Hiện nay, Angular đang được sử dụng bởi rất nhiều các công ty lớn: Forbes, General Motors, Upwork… Với những lợi ích tuyệt vời mà Angular mang lại, bạn cần phải biết sử dụng Angular nếu muốn trở thành Front-end Developer giỏi và có thu nhập cao hơn mức lương lập trình viên trung bình.
Song song với Angular, bạn cũng thường nghe nhắc đến cái tên AngularJS. Vậy thì AngularJS là gì? Điểm khác biệt giữa AngularJS và Angular là gì? Đồng thời, những tố chất cần thiết để trở thành Front-end Developer là gì? Để có thể trả lời những câu hỏi trên, hãy cùng theo dõi bài phỏng vấn giữa ITviec và anh Trần Thuận Nghĩa – Chuyên Gia Kỹ Sư Phần Mềm tại One Mount Group sau đây.
Xem thêm việc làm Angular trên ITviec
Angular là gì?
Angular là gì? Angular là một JavaScript framework dùng để viết giao diện web (Front-end), được phát triển bởi Google. Angular giúp lập trình viên xây dựng các ứng dụng trang đơn (single-page application) bằng cách sử dụng HTML và TypeScript một cách nhanh hơn.
Để dễ hình dung hơn, anh Nghĩa đưa ví dụ:
Bình thường nếu chỉ làm bằng tay, bạn sẽ làm ra được 10 cây viết/ngày nhưng nếu sử dụng công cụ máy móc, bạn sẽ làm ra được 100, thậm chí 1000 cây viết/ngày. Angular đối với Developer cũng như công cụ ở trên vậy, nếu không sử dụng framework này thì Developer sẽ mất rất nhiều thời gian để hoàn thiện giao diện web.
Để làm việc với Angular, bạn cần nắm vững các kiến thức nền tảng về JavaScript, HTML và CSS, cách làm việc với kiến trúc MVC. Nếu đã từng có kinh nghiệm với TypeScript sẽ là một lợi thế lớn.
Điểm khác biệt giữa AngularJS và Angular là gì?
Mối quan hệ của AngularJS và Angular là gì? Thật ra, cả hai được xem là “anh em” của nhau. Cụ thể hơn, bạn có thể tham khảo bảng so sánh giữa Angular và AngularJS:
Angular | AngularJS | |
Tên gọi | Angular là từ gọi chung cho Angular 2 trở lên | AngularJS là từ được được dùng để nói về Angular 1 |
Năm ra mắt | 2016 | 2009 |
Ngôn ngữ | TypeScript phiên bản nâng cao của JavaScript | JavaScript |
Kiến trúc | Angular sử dụng các components và directives. Components là directives có template. | AngularJS hỗ trợ thiết kế Model-View-Controller. Chế độ xem xử lý thông tin có sẵn trong mô hình để tạo ra kết quả đầu ra. |
Routing | Angular dùng @Route Config{(…)} cho cấu hình định tuyến | AngularJS dùng $routeprovider.when() cho cấu hình định tuyến |
Google hỗ trợ | Có | Không còn được Google hỗ trợ nâng cấp |
Hỗ trợ mobile | Hỗ trợ tất cả các trình duyệt mobile phổ biến | Không hỗ trợ các trình duyệt trên mobile |
Tài liệu Angular tham khảo
Trong vô vàn tài liệu Angular, anh Nghĩa đánh giá cao kiến thức từ những nguồn tài liệu Angular tham khảo sau:
- Angular.io: Website giúp người mới tìm hiểu và làm quen với Angular là gì. Bạn sẽ biết những khái niệm, syntax cơ bản trong Angular và cách tạo 1 project Angular ra sao.
- Khóa học Angular từ cơ bản đến nâng cao: Nhận diện những lỗi thường gặp khi sử dụng Angular và biết cách xây dựng một ứng dụng thương mại điện tử với Angular, Firebase, Bootstrap 4
- Angular 2 Notes for Professionals: Ebook miễn phí, được tổng hợp và biên soạn dựa trên những chia sẻ của các chuyên gia Angular trên Stack Overflow. Trình bày tất tần tật các tính năng của Angular cũng như các mẹo hữu ích để làm việc hiệu quả với chúng.
- Angular Crash Course for Busy Developers: Khóa học này khá hữu ích với những developer bận rộn, chỉ cần dành ra 10 giờ học, bạn sẽ nắm được những kiến thức chủ chốt nhất về Angular framework.
Tham khảo thêm: Học lập trình Front-end với 20+ tài liệu miễn phí
Lợi ích của Angular là gì đối với Front-End Developer?
Theo anh Nghĩa, ngoài tiết kiệm thời gian thì Developer còn sử dụng Angular vì những lợi ích sau:
- Angular được “chống lưng” bởi Google, giúp cho Developer có cảm giác được đảm bảo. Mặc nhiên, họ sẽ ám thị rằng framework này khó mà bị “khai tử”, vì vậy cứ yên tâm sử dụng.
- Cộng đồng người dùng lớn nên nếu có thắc mắc gì cũng sẽ nhanh chóng được giải đáp.
- Giúp phát triển Ứng dụng trang đơn (Single-page Application). Đây là ứng dụng chạy trên browser mà không bắt buộc phải tải lại trang khi sử dụng.
Cá nhân anh Nghĩa thích Angular còn bởi vì framework này được viết bằng ngôn ngữ TypeScript do Microsoft phát triển, dễ đọc (readable), dễ bảo trì (maintainable).
Tham khảo: Top 5 framework dành cho Web Developer
Front-end Developer làm gì?
Khi ở vị trí Front-end Developer, anh Nghĩa thường giải quyết các đầu việc sau:
- Viết và chỉnh sửa giao diện theo yêu cầu. Chẳng hạn: viết xử lý cho các hiệu ứng (animations), thay đổi các yếu tố (elements), các nút (buttons)…
- Sử dụng Git để quản lý source code.
- Review code, review UI/UX.
- Viết component có thể tái sử dụng.
- Định nghĩa bộ style button, icon, color … cho hệ thống và áp dụng.
- Tối ưu performance của website: tốc độ load trang, hình ảnh…
Anh cũng đùa vui rằng một trong những hiểu lầm lớn nhất mà mọi người thường hiểu lầm về nghề Front-end Developer là “Front-end Developer ngoài code, còn phải biết cắt file photoshop ra file HTML nữa (cười).”
Theo ý kiến cá nhân khi được hỏi về công việc giữa Back-end Developer và Front-end Developer, anh nhận xét:
Anh thấy nếu so sánh với Back-end Developer thì công việc của Front-end Developer khó hơn vì Back-end chỉ cần đảm bảo “code chạy là được”, input cái này sẽ output ra cái kia. Trong khi đối với Front-end, code chạy được là một chuyện, còn đưa lên giao diện như thế nào lại là chuyện khác.
Kỹ năng và tố chất cần thiết với Front-end Developer
Để có thể nói về kỹ năng và tố chất để trở thành một Front-end Developer thì rất nhiều, và cần được rèn luyện từ sớm. Tuy nhiên, theo anh Nghĩa, điều quan trọng nhất vẫn là nghề bạn chọn có phù hợp với bản thân không thì mới nghĩ đến chuyện theo đuổi nghề được:
Việc chọn nghề phần lớn vẫn tùy thuộc vào sở thích của mỗi người. Nếu bạn không muốn làm sâu về data hay phân tích hệ thống thì có thể chọn Front-end.
Nhưng nếu muốn tiến xa hơn trong sự nghiệp, anh khuyên các bạn nên theo học chính quy để được dạy về cách tư duy logic như lập trình hướng đối tượng, cấu trúc dữ liệu và giải thuật…, giúp bạn hiểu bản chất của ngôn ngữ lập trình.
Còn nếu chỉ xem Front-end như một công việc tay ngang, chỉ đơn giản copy và paste rồi làm tương tự miễn sao ra được giao diện thì sự nghiệp sẽ có giới hạn.
Nếu đã quyết định chọn nghề Front-end Developer thì từ sớm, bạn nên luyện tập những tố chất sau:
- Có trách nhiệm với công việc
Chưa biết mình làm tốt hay không tốt nhưng hãy cố gắng đi đã. Đừng chỉ làm đối phó, làm với suy nghĩ “code chạy là được”. Nếu biết các rủi ro tiềm ẩn thì hãy giải quyết nó trước và luôn tìm cách để tăng hiệu suất làm việc.
Trước kia, anh chỉ viết component dùng chung cho dự án (A) mà anh đang làm. Sau này, khi chuyển sang dự án (B) khác, anh muốn sử dụng lại các component này thì anh phải copy rồi paste sang. Khá mất thời gian và trong trường hợp các component ở A có thay đổi thì B cũng không cập nhật được.
Vậy nên anh đã chuyển các component này thành các package trên npm, chỉ cần tải (install) package và phiên bản tương ứng là có thể sử dụng được.
- Có chút kiến thức về UI, UX
Ở một số công ty nhỏ, không có kinh phí thuê Designer thì Front-end Developer phải làm luôn nhiệm vụ thiết kế UI, UX. Vậy nên bạn phải tự học hỏi mà rút kinh nghiệm từ những phần mềm xung quanh, xem vì sao phần giá thì người ta hay sử dụng màu đỏ, nút này để màu xám, thông tin kia được in đậm…
Như khi anh tham khảo phần mềm kế toán MISA, anh thấy người dùng không muốn bấm quá nhiều nút và hiển thị quá nhiều thông tin không cần thiết. Nếu sau này, anh có làm phần mềm tương tự thì anh sẽ không mắc phải lỗi đó.
Anh nhớ ngày xưa có một lần anh tự ý đổi giao diện Front-end vì thấy không hợp lý, khi đó anh còn làm Technical Leader cho Smartlog. Đa số cấp dưới của anh đều phản ứng lại, nói rằng: đổi giao diện mà không báo với khách hàng thì không được, giao diện mới khó nhìn, nhìn không quen… Nhưng anh vẫn giữ nguyên ý kiến.
Như Facebook đó, họ đổi giao diện đâu có báo trước với mình, những người dùng sau cũng không biết giao diện trước như thế nào…
Sau đó thì khách hàng vẫn dùng giao diện mới bình thường. Thực tế là ai cũng có xu hướng phản ứng với những thay đổi nên đôi khi mình phải phân biệt xem cái nào hợp lý và giữ quan điểm.
Xem thêm: Tại sao mọi Developer cần học UI, UX
- Luôn chủ động cập nhật công nghệ, phiên bản mới với những cái mình đang làm
Để cho thấy bản thân người Front-end Developer luôn phải chủ động cập nhật những công nghệ mới nhất bằng cách đưa ví dụ về cách sử dụng Angular:
“Ứng dụng/phần mềm của mình viết bằng Angular 4 nhưng phiên bản mới nhất đã lên đến Angular 8, Angular 9 mà vẫn không cập nhật (upgrade) vì ngại rủi ro thì cũng không tốt.”
- Nghệ thuật đặt câu hỏi
Nếu gặp phải dự án phức tạp, bạn nên đặt câu hỏi với những người đi trước trong team, nhưng cũng lưu ý không nên hỏi quá nhiều. Hãy đặt mình vào vị trí người được hỏi, họ còn có công việc riêng, không thể ngồi giải đáp cho bạn mãi được.
Chủ yếu bạn chỉ nên hỏi những ý chính (theo kiểu từ khóa) rồi sau đó tự tìm hiểu thêm. Anh Nghĩa ví dụ một vài câu hỏi bạn có thể hỏi để ra được giải pháp:
- Ở Front-end đang xài những thư viện gì?
- Tổ chức các thư mục (module) như thế nào?
- Chức năng từng thư mục là gì?
- Có gì cần lưu ý hay không?
Anh cũng lưu ý rằng bạn không nên hỏi: “Code chỗ này nghĩa là gì vậy anh?” nhiều lần.
Front-end Developer trong ngành IT nói gì?
Trước đây, anh mắc phải sai lầm khi viết code ở phía giao diện dẫn đến trang đó bị crash – nghĩa là khi một trang phải xử lý quá nhiều dữ liệu thì bộ nhớ (memory) không chạy nổi.
Khi các bạn báo bug thì anh mới phát hiện code của anh trong lưới (grid) bị loop – tình trạng vòng lặp, cứ nửa giây lại gọi hàm kiểm tra dữ liệu trong lưới.
Đối với lưới chỉ có 2-3 dòng thì không sao nhưng khi tăng lên 100 dòng thì bị crash. Cụ thể thì khi Tester kiểm thử, họ test chi tiết đơn hàng quá ít nên không thấy xảy ra vấn đề gì cả. Nhưng khi release và bắt đầu cho khách hàng sử dụng, chi tiết đơn hàng lên đến hàng trăm, hàng ngàn dòng thì xảy ra lỗi.
Tuy không gây ra hậu quả gì nghiêm trọng, khách hàng cũng không phàn nàn gì nhưng dù sao, cũng là lỗi của anh khi không lường trước được điều này. Anh đã đổi lại syntax trong code, mất thêm 2 ngày để sửa lỗi.
Sau này, anh có đọc các đề xuất (recommend) từ trang chủ của Angular thì cũng thấy nói là không nên viết vậy. Phải chi anh biết sớm thì tốt hơn rồi.
Rút kinh nghiệm, anh theo dõi các bài viết về Angular thường xuyên hơn (chủ yếu trên trang Medium), cứ 8h sáng hàng ngày anh lại nhận được bài viết mới liên quan đến các tiêu chí mà anh đã chọn.
Anh đọc các bài chia sẻ kinh nghiệm về Angular để biết vấn đề có tồn tại. Tất nhiên không thể thuộc nỗi tất cả các trường hợp (case) nhưng khi cần, mình biết là nó có tồn tại để tìm lại.
Ví dụ: Em đọc báo và biết đến sự tồn tại của máy hút bụi. Sau này khi em có nhu cầu làm sạch bụi bẩn mà không tốn nhiều thời gian và công sức, em nhớ ngay là có công cụ với tính năng đó để tìm kiếm và mua nó.
Ngoài ra, khi test, anh không chỉ quan tâm đến tính năng mà còn xét cả khả năng xảy ra vấn đề. Ví dụ: thay vì test trên số đơn hàng, anh sẽ quan tâm hơn đến số chi tiết đơn hàng…
Thông tin về anh Trần Thuận Nghĩa:
Anh Nghĩa có gần 6 năm kinh nghiệm làm việc với Angular nói riêng và Front-end nói chung. Anh trải qua nhiều vị trí ở một số công ty như: Developer ở 2Click Solutions, Technical Leader ở Smartlog Vietnam, Software Engineer tại VinID… Hiện tại anh đang là Chuyên Gia Kỹ Sư Phần Mềm tại One Mount Group.
Trước đây anh từng học lớp Cử nhân tài năng, ngành Công nghệ thông tin tại trường Đại học Khoa học tự nhiên. Trong thời gian học ở trường, anh cũng tham gia một số cuộc thi lập trình và mang về một số giải thưởng. Ví dụ như giải 3 cuộc thi lập trình ACM toàn quốc.
Nhưng vì cảm thấy chán và một phần ham chơi (cười) nên anh đã bỏ học giữa chừng để đi làm luôn.
Thời gian đó anh bị mọi người chỉ trích rất nhiều, ai cũng bảo anh không làm được gì đâu. Anh đã cố gắng rất nhiều để chứng minh cho họ thấy rằng không có bằng Đại học thì vẫn có thể thăng tiến trong công việc, người ta tuyển mình vì năng lực chứ không phải vì tấm bằng.
Và anh không thất nghiệp mà vẫn theo đuổi công việc Developer cho đến tận bây giờ.
Công việc đầu tiên anh làm sau khi dừng sự nghiệp học tập là làm Partner cho Sino Corporation. Công ty này bán các sản phẩm về mã vạch (barcode), nhiệm vụ của anh là viết phần mềm đi kèm giúp sử dụng sản phẩm. Đây cũng là lần đầu anh biết đến Angular là gì.
Bạn có phải là Front-end Developer và là “fan” của Angular? Bạn nghĩ bài viết này có thể giúp ích cho các Developer khác? Chia sẻ ngay để giúp cộng đồng Developer cùng phát triển.
Xem thêm việc làm Front-end Developer trên website ITviec