Tiềm năng phát triển của Web Full stack developer | EXPERT TALKS
Trong Web Development cũng được chia ra làm mảng back-end dev và front-end. Vậy chắc bạn cũng đã nghe đến Web Full stack developer và cũng hiểu được sơ lược về vai trò và nhiệm vụ của người này. Tuy nhiên, để có thêm góc nhìn thực tế mời các bạn theo dõi bài viết Expert Talk kỳ này: "Tiềm năng phát triển của kỹ sư Full Stack" qua phần chia sẻ của anh Lê Bá Phước Duy - Web Team Leader và cũng là người chịu trách nhiệm đào tạo các Web Developer Fresher/Junior tại One Tech Asia trở thành Full Stack Developer.
Giới thiệu
Khởi điểm là một Back-end web developer về C# và PHP, sau đó anh đã trau dồi thêm các kỹ năng front-end để trở thành một Web Full Stack developer tính đến nay anh đã có 6 năm kinh nghiệm ở vị trí này. Hiện tại anh đang đảm nhiệm vị trí Web Team Leader tại Công ty OneTech Asia, đồng thời là người hướng dẫn đào tạo cho các bạn trẻ tại công ty để phát triển trở thánh các Full stack developer trương tương lai.
Chủ đề EXPERTS TALK:
"Kỹ sư Full Stack - Tìm năng phát triển của kỹ sư Full Stack".
Full stack developer là ai?
Trong lĩnh vực phát triển web, thường chia ra thành hai nhánh nghề nghiệp chính là Thiết kế web (front-end) và Lập trình web (back-end). Tuy nhiên có một nhánh thứ ba khá hiếm hoi là những người có thể làm tốt các front-end và back-end họ được gọi là các Full stack developer. Điều này cũng giống như những chàng cao bồi có khả năng sử dụng thành thạo 2 súng 2 tay tốt như nhau vậy.
Full stack developer là những lập trình viên có khả năng làm được cả kỹ thuật phía front-end và back-end của một ứng dụng hay một website. Full stack developer có thể là: Full stack web developer hoặc full stack appli developer, nhưng hiện nay chữ: Full stack developer thường được mặc định hiểu là: Full stack web developer.
Chịu trách nhiệm phát triển những phần "nhìn thấy được" của một website hoặc ứng dụng: thiết kế giao diện, mã html, css, hình ảnh hoặc các hiệu ứng hiển thị.
Các skill:
- Web Design: Photoshop, Illustrator
- HTML/CSS
- JavaScript
- Sass
- Css/JavaScript Minifier
- Bootrap
- Jquery
- AngularJS
- ReactJs
- VueJs
- ...
Phát triển các "chức năng ngầm" của website như lập trình chức năng, xử lý nhập liệu, truy xuất cơ sở dữ liệu...
Các kỹ thuật cần:
- DataBase: MySQl, SQL Server, MongoDB
- Framework PHP (Laravel, CakePHP, Codelgniter, Zend, Yii, Wordpress,..)
- C#,VB.NET
- Framework Java (Spring MVC, Struts, Hibernate, JSF,Play,Vaadin, Rakuraku,...)
- Ruby (Ruby on rail)
- Python
- NodeJS
- Hosting/Server/Cloud skills: ( Centos, Ubunto, Apache, Nginx, Aws, Azure, GMO cloud,)
- ...
Full stack developer đảm nhiệm công việc gì?
- Coding front-end sử dụng các kỹ thuật sau: HTML/CSS, Javascript và Css/Javascript framework như: Bootrap, Jquery, AngularJS, Reactjs, Vuejs, Sass, Backbone, Less,....
- Coding back-end: có khả năng thiết kế database và sử dụng được ít nhất một ngôn ngữ lập trình và framework như: PHP (Laravel, CakePHP, Codelgniter, Zend, Yii, Wordpress,..), C#,VB.NET, Java (Spring MVC, Struts, Hibernate, JSF,Play,Vaadin, Rakuraku,...), Ruby (Ruby on rail), Python, NodeJS,...,
- Hosting/Server: Cài đặt, cấu hình web server để có thể chạy được website hoàn chỉnh.
Full stack cần thêm kỹ năng gì ngoài chuyên môn chính?
- Khả năng thiết kế hệ thống, thiết kế màn hình, UI/UX, thiết kế logic, data flow, business flow,..
- Phân tích yêu cầu: đọc hiểu, phân tích nghiệp vụ, đặt câu hỏi làm rõ yêu cầu và viết tài liệu đặc tả, estimate và lập schedule.
- Quản lý dự án: phạm vi yêu cầu, chất lượng, chi phí, thời gian, giao tiếp, rủi ro, các câu hỏi tình huống trong dự án cụ thể,…
- Ngoại ngữ: tiếng Anh để học hỏi, tìm kiếm giải pháp
- Các kỹ năng mềm
Tiềm năng phát triển sự nghiệp của lập trình viên Full stack?
Các công ty lớn, họ có nhiều dự án và có các dự án lớn, để gia tăng hiệu suất và tăng chất lượng thì họ cần những vị trí tách biệt: front-end developer hoặc back-end developer. Tuy nhiên hiện nay để tối ưu hóa resource và các dự án công nghệ, các công ty startup xuất hiện ngày càng nhiều nên nhu cầu tuyển dụng Full stack developer ngày càng gia tăng.
Ngoài ra, những lập trình viên có khả năng Full stack sẽ hiểu hết tổng thể của việc phát triển hệ thống, nên có thể phát triển thành những vị trí cao hơn như CTO hoặc trở thành PM.
Lý do tại sao anh chọn trở thành Full stack developer?
Anh chọn phát triển web Full stack vì anh thấy rằng khi mình nắm giữ Full stack thì bất kể phát triển gì trên web mình đều có khả năng nắm rõ và làm được. Song lí do ban đầu anh đi theo hướng phát triển web vì anh thấy web là gốc của mọi ứng dụng lập trình. Ví dụ lập trình game, app thì web là 1 tầng trung gian để kết nối game và app với database. Trừ những ứng dụng mini vừa nhỏ thì ko cần phải quản lý trên Cloud.
Front-end hay back-end trở thành Full stack developer dễ hơn?
Lúc trước anh nghĩ là đi từ back-end sẽ rất dễ thành Full stack developer, nhưng bây giờ anh thấy giỏi front-end sẽ có lợi thế rất lớn để trở thành Full Stack. Anh có nhận định như vậy thứ nhất cũng từ cá nhân anh xuất phát từ một back-end dev, lúc muốn trao dồi thêm front-end lại cần khá nhiều thời gian và nỗ lực và làm quen.
Còn xét về chủ quan anh cho rằng do trong công đoạn mà chúng ta phát triển Web thì back-end chiếm phần đầu giai đoạn như các bạn xây dựng cái khung xương và nền cho ngôi nhà, bạn có thể dễ dàng ấn định được thời gian hoàn thành và về cơ bản các khung xương và tường thường tương tự nhau không có nhiều khác biệt. Nhưng đến lúc đụng đến front-end thì phức tạp hơn hẳn, nhiều thứ từ chi tiết đến tổng thể cần làm. Và sau này lúc nâng cao cập nhật web thì bạn cũng sẽ luôn động vào front-end là chính.
Từ Junior dev trở thành Full stack developer thì cần bao lâu?
Về thời gian anh nghĩ cũng tuỳ vào khả năng học hỏi và cơ hội được tham gia vào các dự án cả front-end và back-end. Riêng đối với những bạn Dev khi làm việc tại OneTech thì lộ trình sẽ là 2 năm. Vì khi có bất kỳ bạn web devloper nào tham gia vào công ty thì anh luôn có định hướng và lộ trình phát triển cho bạn rõ ràng.
Ngôn ngữ lập trình nào phù hợp và quan trọng nhất đối với Full stack developer?
Đã là một Kỹ sư Full stack cũng yêu cầu các bạn dành cần rành nhiều ngôn ngữ phát triển Web khác nhau. Về front-end thì chắc chắn các bạn phải biết về HTML, Javascript và một vài framework về css hoặc Javascript. Về back-end thì phải rành ít nhất một ngôn ngữ lập trình chẳng hạn: PHP, Java, C# và framework tương ứng. Hiện tại thì anh đang sử dụng Python và Laravel vì tính ứng dụng của nó cao và rất mạnh mẽ. Đây cũng là một trong những ngôn ngữ được khuyến khích học nhiều vì nó khá phổ biến.
Hãy cho biết những kỹ thuật nào mà anh đã từng làm qua
Về các kỹ thuật mà anh đã từng làm thì có rất nhiều, song có những cái sau đây mà anh cảm thấy các bạn phát triển Full stack có thể gặp lại nhiều lần:
- HTML/CSS/Bootrap/VueJS/AngularJS
- C#/ASP.NET
- PHP (Laravel/CakePHP)
- MySQL, SQLServer, MongoDB, Casandra, Elasticsearch, Memcache,...
- Cài đặt, cấu hình server: Centos, Ubunto
- Web server: Apache, Nginx,...
- Cloud: Aws, Azure, GMO cloud,..
Nhà phát triển Full stack cần trang bị những soft skills nào?
Từ một nhà phát triển Junior chuyển đến cột mốc một kỹ sư Full stack chắc chắn bạn phải trang bị cho mình những kỹ năng mềm và anh nghĩ nó có tầm quan trọng khi bạn muốn tiến xa hơn nữa. Các kỹ năng mềm cần có là: khả năng học và tự học, quản lý thời gian, kỹ năng giao tiếp, kỹ năng giải quyết vấn đề, tư duy logic, tư duy phản biện, sáng tạo,...
Đặc biệt là kỹ năng giải quyết một vấn đề. Bởi vai trò và phạm vi của một nhà phát triển Full stack là cả front-end và back-end thì kiến thức chuyên môn của họ gần như là tất cả những gì về phát triển một dự án Web, là một người vừa có cái nhìn bao quát và chi tiết nên ắt hẳn giải quyết vấn đề là một skill đặc biệt quan trọng và tất yếu để các nhà phát triển Full stack trau dồi trong thời gian làm việc.
Ngoài ra những kỹ năng về sử dụng các công cụ tìm kiếm sẽ giúp ích cho các bạn rất nhiều trong bước nghiên cứu để lập ra core và rules của dự án như anh đã nói ở câu trả lời trước, bộ trợ kèm theo đó là các bạn cần giỏi ngoại ngữ để update những kiến thức chuyên môn mới phục vụ cho công việc của mình.
Và để chuẩn bị cho các hướng phát triển cao hơn nữa trong lĩnh vực IT anh nghĩ các bạn cũng nên quan tâm đến kỹ năng quản lý dự án. Trước nhất là quản lý những nhiệm vụ của các nhân với thời gian hợp lý là điều cần ưu tiên nhất
Cuối cùng nhưng cũng không kém phần quan trọng là kỹ năng giao tiếp. Kỹ năng giao tiếp ở đây không chỉ là nói hay nói êm tai mà là truyền đạt đủ và chính xác các thông tin về dự án mà bạn đang phát triển giữa các thành viên trong team, để tránh dẫn đến tình trạng bị nhiễu thông tin, nghiêm trọng nhất là hiểu sai yêu cầu và truyền đạt sai yêu cầu dự án.
Khó khăn và thử thách đối với một lập trình viên Full stack là gì?
Theo anh có 3 cái khó khăn và thách thức nhất đối với một nhà phát triển Full stack
- Thứ nhất, là kiến trúc và xây dựng phần core sao cho đạt được hiệu quả phát triển dự án tốt nhất có thể. Nó khó bởi vì nhiều khi không một dự án nào giống dự án, cần hiểu rất rõ yêu cầu khách hàng và xây dựng front-end và back-end mà sau này phải ít chỉnh sửa hệ thống và duy trì cho hệ thống ổn định nhất.
- Thứ hai, đòi hỏi kỹ năng vững chắc về cả front-end và back-end cũng như mối liên hệ giữa chúng trong một dự án. Nghĩa là khi phát triển back-end các bạn cũng phải tính toán làm sao đó cho đến khi vào front-end được dễ nhất mà không cần phải điều chỉnh lại. Nói chung đó là khả năng quản lý bao quát back-end và front-end trong một dự án của bạn.
- Thứ ba, với công nghệ phát triển không ngừng, các bạn Full stack phải luôn cập nhật và nghiên cứu thường xuyên đồng thời trang bị cho mình những kỹ thuật lập trình nhanh và chính xác.
Những sai lầm thường gặp & bài học kinh nghiệm
- Để lộ thông tin dự án ra ngoài khi đang lập trình, nguyên nhân cho sai lầm này thường xuất phát từ lúc khách hàng bàn giao cho team dự án, bên mình thiếu sót những thông tin về production nên khi lập trình có thể đã vượt qua phạm vi bảo mật. Đây là lỗi rất nghiêm trọng nhất là khi làm việc với các công ty khách hàng Nhật Bản. Chính vì vậy đây là ưu tiên hàng đầu bên team dự án cần check và làm việc với khách hàng chi tiết.
- Không hiểu rõ yêu cầu khách hàng không xác nhận đợi đến khi làm xong thì phát hiện là đã hiểu nhầm.
- Thiếu kiến thức về server, cấu hình server dẫn đến lỗi liên quan đến performance, lỗ hỏng về bảo mật
- Chỉ chú trọng đến lập trình mà thiếu góc nhìn về business và vận hành hệ thống: chẳng hạn hệ thống thiếu log dẫn đến không tìm ra nguyên nhân lỗi, không đưa ra cái rủi ro đặc biệt không tính đến trường hợp phi chức năng dẫn đến khi hệ thống release rồi thì phát hiện cần phải cải thiện performance, hay phải thay đổi kiến trúc nên lại phát sinh ra nhiều cost.
Ban biên tập chân thành cảm ơn anh đã dành thời gian chia sẻ kinh nghiệm quý báu đến các đọc giả của blog GrowUpWork, chúc anh sức khỏe và thành công!
Tin tức liên quan
Chia sẻ kinh nghiệm làm việc ở vị trí Technical Lead | EXPERT TALKS
Làm sao để người hướng nội Leadership hiệu quả | EXPERT TALKS
Làm sao để thăng tiến trong công ty IT | EXPERT TALKS
Khám phá về công việc thú vị của Product Architect | EXPERT TALKS