Tôi viết mục này thuần túy là cho vui, để ae chưa rõ định hướng nghề nghiệp lắm có thể có cái nhìn ở góc độ khác về nghề mình đang làm. Tôi cảm thấy tiếc cho những bạn chỉ đi làm, đến công ty, được giao việc cho cái gì thì làm cái đấy, mà chưa thực sự hiểu rõ mình làm ở mảng nào trong chuỗi giá trị hoặc không có định hướng cụ thể mảng công việc sẽ làm trong tương lai.
Trước khi đi vào chi tiết, các vai trò tôi phân chia sẽ chưa đầy đủ hết. Anh em chấp nhận đại khái thôi nhé. Trong chạy thực tế, các vai trò được chia sau có thể thừa hoặc thiếu, cái đấy tùy hoàn cảnh. Không dự án nào như dự án nào. Okay, đi vào nào.
Để đi từ một ý tưởng đến một ứng dụng dùng được, tôi chia như ảnh trên
Đó là một câu hỏi mà tôi muốn chia sẻ câu trả lời của mình. Khi bạn làm một công việc đủ lâu dưới một title
công việc nào đó đi nữa, thực ra bạn sẽ còn phải làm nhiều hơn thế. Đi vào ví dụ cụ thể nha.
Designer: Khi bạn được dán một cái nhãn là Designer
chẳng hạn, mặc định công việc của bạn sẽ làm là trao đổi với Product manager
hiểu yêu cầu, thiết kế ứng dụng, chuyển giao lại thiết kế cho phía frontend
và giải thích các chức năng này.
Nhưng cũng có trường hợp, designer lại là người đi nói chuyện trực tiếp với User
Ví dụ bạn chỉ làm frontend, và làm cực kì tốt.
Sau một thời gian làm, bạn sẽ gặp những design tốt, design tệ. Kinh nghiệm bạn tích lũy, đến một lúc mà bạn nhìn một giao diện là thấy ngứa mắt luôn. Bạn tự nhảy số ra giao diện theo bạn là “đẹp”. Woa la, bạn tự thiết kế giao diện, tự code =]]
Tuyệt vời hơn nữa, bạn làm việc trực tiếp với khách hàng luôn. Vì sao, vì bạn làm lâu rồi, qua tay các thiết kế, đã hiểu được những yêu cầu nào thì sử dụng thiết kế gì. Bạn đã có “tiêu chuẩn đẹp” của mình. Bạn hiểu được nhu cầu của KH và thực hiện chúng với một thiết kế “vừa lòng khách hàng”
Vị trí này nó hơi thú vị. Đây là backend dev. Nhiệm vụ đơn thuần là code server, xây dựng cơ sở dữ liệu, thiết kế csdl, tối ưu hóa code, server chạy trơn tru, mượt, không bug, chịu tải hàng triệu người dùng. Tuyệt vời
Và đây cùng là backend dev
Ủa alo, kéo thêm 1 tí chỗ Infra kìa. Vâng, đây vẫn là backend dev, nhưng xịn hơn. Vì đơn giản, “job title” của họ vẫn là backend dev. Nhưng họ làm nhiều hơn.
Và thế là, đây cũng là backend dev
Thuật ngữ chuyên ngành người ta gọi là DevOps cơ =]]
Nhưng sao tôi lại gọi thế. Vì có những người làm hết từ cột backend trở xuống, nhưng họ chỉ tự nhận mình là backend dev. Cuộc sống mà, dev this dev that
Dĩ nhiên, thời thế thay đổi rồi. Giờ mọi người thích dùng serverless. Toàn bộ cái khó khăn, chúng ta để cho các gã khổng lồ xử lý. Vậy nên coi như giờ ta còn 4 vị trí chính nhỉ :D
Chém gió chút, tại sao có serverless rồi, mà ban đầu tôi vẫn cố tình nhét Hardware, Infra vào từ đầu làm gì. Tại, sẽ đến một điểm giới hạn, mà chi phí cho serverless quá tốn kém. Khi đó mà người ta sẽ không còn dùng serverless nữa mà quay về phương pháp truyền thống.
Ví dụ này nhé. Để chạy một dịch vụ serverless cấu hình 4 CPUs, RAM 8GB chạy cả tháng, 1 server dev, 1 server production. Bạn mất đâu đó khoảng 50$ ~ 1tr/tháng. Dùng 2 năm ~24tr. Bằng số tiền đấy, ta build được một chiếc PC 8nhân 16 luồng, ram 32GB ⇒ hệ thống mạnh mẽ mua một lần, dùng 3-4 năm. Đấy là xét riêng chi phí cấu hình. Chứ serverless dùng vẫn sướng mà, các cái khó khăn từ vạch Serverless đổ xuống là bạn không phải nghĩ. Chi phí cũng ít hơn việc thuê riêng ông IT operation. Về phía coder thì đấy là server KH trả tiền, nên mình không xót. Chứ ông nào tự dựng server sẽ thấy xót, rồi lại lọ mọ tìm hiểu cách dùng DDNS trỏ về máy local cho xem. Dựng một thời gian, có khi lại quay về serverless vì máy chạy cả ngày → xót; server bị hacker ddos cho lại nghẻo; … vân vân và mây mây. Những vấn đề sẽ được giải quyết bằng tiền, cụ thể là rất nhiều tiền đóng cho GCP, AWS, Azure =]]]
Lời đầu của chủ đề fullstack là không có cái gọi là fullstack. Cũng hơi mâu thuẫn cho cái tiêu đề nhỉ.
Bốc cái định nghĩa tôi google trên mạng nhé.
A full stack web developer is a person who can develop both client and server software.
Okay vậy tôi sẽ lấy ví dụ về một số kiểu fullstack
Kiểu cơ bản: làm được cả frontend và backend
Bất cứ lập trình viên nào, khi mà làm được cả hai đều được gọi là fullstack hả? Có và không
Có, theo định nghĩa là thế. Tôi làm được cả hai cơ mà, cớ gì mà không công nhận. Ờ thì tôi công nhận cho bạn đó. Vui lên nào.
Không → ông dev nào làm 5 năm kinh nghiệm chả ít hay nhiều biết một chút về phía bên kia. Ví dụ ông chuyên làm Backend, vẫn dựng được html/css/js đơn giản. Hoặc ông code frontend cũng sẽ nghịch chút backend (đặc biệt là giờ code js hay làm cả hai lắm, vì học code 1 ngôn ngữ chứ nhiêu)
Giờ sao, ta gọi tất cả senior là fullstack developer à =]]
Theo số liệu thống kê mới nhất 2022 của ITviec
Link: Báo Cáo Lương IT 2022-2023: Theo vị trí, ngôn ngữ lập trình và … (itviec.com)
Fullstack thậm chí lại thấp hơn làm thuần Backend ⇒ không phải làm được nhiều đã ngon hơn đâu
Tôi không so sánh được với Frontend do bản preview này nó để số năm kinh nghiệm không bằng nhau, mức lương lại còn lệch xa nữa.
Cũng là fullstack nhưng mà nó lạ lắm
Đọc đến chỗ này có vẻ hơi mông lung nhỉ. Thế nên tôi đặt tiêu đề của bài viết là trò chuyện linh tinh. Cũng không theo khuôn mẫu nào cả. “Ai rồi cũng fullstack thôi” → Tôi muốn chia sẻ một số định hướng nghề nghiệp mà các bạn, các em mới vào nghề có thể lựa chọn.
Bắt đầu với cơ bản đi.
Công việc ở mảng này cũng rõ rồi, vừa làm giao diện đúng yêu cầu, vừa thiết kế được server. Mức độ hoàn thiện khi làm mảng này, yêu cầu tôi đặt ra là client làm đẹp, nhanh + server chạy mượt không bug, tối ưu hiệu năng.
Khi làm mảng này, tùy người mà nghiên về backend hoặc frontend nhiều hơn.
Đôi khi đá chút sang design, nếu nghiên về frontend nhiều hơn.
Thậm chí vì làm lâu nên được PM dự án luôn. Cái này cũng thường xảy ra khi làm trong một team nhỏ, có 3 ông dev làm với nhau trong dự án, thế thì bốc 1 ông lên làm PM, ví dụ thế. Kiểu 1 ông chuyên frontend, một ông chuyên backend, một ông fullstack vừa làm vừa duyệt code của 2 ông kia, đồng thời làm quản lý dự án, design hệ thống. Tầm nhìn của ông này sẽ quyết định sản phẩm đầu ra.
Làm nhiều hơn nữa thì ông bên trên làm việc trực tiếp với KH luôn.
Đấy, 2 ông cùng làm fullstack, một ông cung cấp nhiều giá trị hơn, chả lẽ đặt 2 ông cùng 1 job title, cùng hưởng lương như nhau hay sao.
Ở chiều ngược lại
Bạn có thể nghiêng nhiều hơn phía backend. Code bạn tạo ra được cập nhật luôn lên server mà không phải chờ đợi một ai. Server vận hành trơn tru, luôn sẵn sàng. Tuyệt vời.
Tùy sở thích mà có thể lựa chọn điểm dừng của mình. Nghiên cứu sâu hơn phần mình làm việc
Kiểu quái vật nhất mà tôi thấy. Một người kiêm nhiệm hết tất cả
Như trên hơi khó
Đây thì thực tế hơn đấy. Trường hợp phổ biến của những nhà phát triển độc lập. Họ có ý tưởng ban đầu, tự thiết kế, tự làm, sử dụng serverless để dựng server.
Bạn đang có một ý tưởng?
Bạn muốn tạo một app lên appstore, play store?
Bạn chưa biết bắt đầu từ đâu?
Học fullstack đi chứ còn làm gì nữa =]]]
Qua bài này, tôi cũng chẳng phải để giải thích fullstack hay giải quyết sự nhầm lẫn fullstack gì cả. Cái tôi muốn là các bạn, các em mới vào nghề, có cái nhìn tổng quan về công việc mình làm. Qua đó, lên kế hoạch định hướng mảng mình sẽ học. không nhất thiết phải học hết đâu, làm chuyên một thứ giỏi thôi cũng tốt lắm rồi. Khi bạn làm được rồi thì bạn thích gọi bản thân là gì cũng được, fullstack, backend dev, frontend dev… tôi cũng đếch quan tâm. Kết lại là bạn muốn đóng góp gì trong chuỗi giá trị. Hãy làm tốt nó.