Ngày xưa, công việc đầu tiên của mình làm lập trình game cocos2dx với C++, sau đó là lập trình Android rồi mới chuyển được sang BackEnd, đó là một quá trình rất dài dòng và tốn thời gian. Và nó cũng phản ánh chung tình hình của nhiều anh em khi chúng ta phải làm rất nhiều công việc khác nhau trước khi tạm thời ổn định ở một chỗ.
Tuy nhiên giờ đây mọi chuyện có vẻ dễ dàng hơn khi anh em có thể chọn một công việc nào đó để theo từ đầu, và backend là một lựa chọn khá tốt cho anh em, vì sao nhỉ? Trên thực tế thì thời đại bây giờ là thời đại của engineer với quá nhiều lĩnh vực trong đó: Data, BackEnd, FrontEnd, Mobile, AI, DevOps, Quality ... Trong mỗi một cái thì lại chia ra thành rất nhiều cái nhỏ nữa, và mỗi cái nhỏ đó thì lại có mức thu nhập tuỳ theo vùng miền và cung/cầu lao động. Tuy nhiên ở hầu hết cách doanh nghiệp, tỉ lệ BackEnd trên các ngạnh khác đều sẽ cao hơn, như vậy thì nguồn cầu lao động sẽ cao hơn, và nếu nguồn cung lao động bị thiếu thì ở thời điểm đó mức lương cũng sẽ hấp dẫn hơn.
Cái khó khăn lớn nhất khi trở thành backend engineer bây giờ đó là trả lời câu hỏi nên lựa chọn ngôn ngữ nào để học? Đã có khoảng 8,945 ngôn ngữ lập trình được tạo ra, khoảng 250 ngôn ngữ được sử dụng rộng rãi, khoảng 18 ngôn ngữ hay được sử dụng cho BackEnd, phổ biến nhất là: Javascript, Python, Java, C#, PHP, ... Giữa một rừng ngôn ngữ như thế, mức lương thi kiểu như không có quy chuẩn nào cả thì biết chọn cái gì bây giờ?
Việt Nam mình vẫn là nước làm thuê nên việc mình được quyết định sử dụng ngôn ngữ nào là rất khó, vậy nên anh em vẫn cần dựa theo quy luật và số liệu từ thị trường, anh em có thể tìm google hoặc mở phần tags ra sẽ thấy các ngôn ngữ được hỏi nhiều nhất vẫn đang là Javascript, Python, Java và C#, như vậy để an toàn anh em có thể theo đuổi các ngôn ngữ này. Còn nếu muốn phiêu lưu, chấp nhận rủi ro để nhận mức lương hấp dẫn, anh em có thể học các ngôn ngữ mới như Go, Rust hay các ngôn ngữ cổ như cobol, perl.
 
Ưu và nhược điểm!
 
Từ game client dev cho đến android dev, cho đến BackEnd dev, cho đến code gần như mọi thứ trên đời mình nhận ra một số ưu điểm của back-end thế này:
1. Có khả năng động chạm đến khoa học máy tính, cấu trúc dữ liệu và giải thuật. Tuy nhiên cũng thật may là đa phần chúng ta đều sử dụng framework có sẵn, nên hầu như 98% công việc chúng ta không cần bạn tâm, nếu không khả năng 90% anh em sẽ bỏ việc 🙁
2. Rèn luyện kỹ thuật lập trình tương đối tốt. Có một thực tế thì nếu anh em không biết đến một vài mẫu lập trình (design pattern) thì việc code back-end sẽ tương đối khó khăn và code tương đối lộn xộn. Nhưng không sao, một lần nữa framework lại cứu chúng ta.
3. Có cái nhìn tổng thể về hệ thống và bức tranh toàn cảnh của doanh nghiệp do back-end dev có thể tham gia thiết kế hệ thống, hạ tầng triển khai và code ngay từ đầu.
4. Career path tương đối rộng: Bời vì back-end sẽ gần hơn với hệ thống, thiết kế hệ thống, hạ tầng, nên anh em hoàn toàn có thể chuyển qua các lĩnh vực như DevOps, System Architecture, Blockchain, AI, BA ... Ngoài ra cũng như các ngành khác thì anh em cũng có thể trở thành quản lý hay lãnh đạo đều được.
Vậy còn về nhược điểm thì sao, chắc chắn cũng không ít rồi:
1. CRUD triền miên sinh ra chán nản và hoài nghi về tương lai. Đó là thực tế phũ phàng. Chắc phải đến 90% thời gian anh em làm là CRUD, có những anh em còn 100% thời gian làm việc này, ngày nào cũng lấy dữ liệu từ cơ sở dữ liệu rồi trả về API, làm mãi cũng phát chán, bao nhiêu kiến thức học được cũng vứt đi.
2. Khó làm ra một sản phẩm hoàn chỉnh: Ngày xưa thì làm kiểu server page anh em làm cả html, css thì còn dễ, nhưng giờ hầu hết anh em chỉ còn làm đến API nên kỹ năng front-end bị kém đi, dẫn đến không thể làm ra 1 cái website chỉn chu chứ đừng nói đến các app mobile.
3. Quá nhiều ngôn ngữ lập trình và framework khác nhau. Nếu lập trình front-end anh em chủ yếu biết đến javascript thì với back-end dường như ngôn ngữ nào cũng làm được. Mã rõ thì cũng quẩn quanh cái việc CRUD. Mải mết chạy theo ngôn ngữ để nâng lương, nhưng đến khi lớn tuổi, thị trường cho ngôn ngữ giảm sút thì lại phải trả cái giá không hề rẻ.
4. Quá nhiều kiến thức cần phải học. Từ dev cho đến Ops, cho đến thiết kế, BA cho đến bảo mật, rồi đủ loại ngôn ngữ, framework mọi thứ anh em đều phải học hết, có nhiều khi mình chỉ thiếu một thứ mình cũng cảm thấy cá đuối trong nhiều trường hợp.
5. Dễ trở thành bug producer và tội đồ của cả doanh nghiệp: Bug của front-end có thể làm crash chương trình của client nhưng dữ liệu không vấn đề gì. Nhưng ông server mà check thiếu logic, hay xoá nhầm cái gì đó thì có khi bay cả hệ thống, thế nên đây cũng là áp lực cực kỳ lớn.
Ngoài ra còn ưu điểm và nhược điểm gì nữa không? Anh em để lại trong phần comment giúp mình nhé, cám ơn anh em!
 
Cá nhân mình thấy, và qua các comment của anh em để lại thì phần lớn đều đồng ý rằng BackEnd là một lĩnh vực rộng lớn, vậy nên đi theo mảng này có vẻ như sẽ có nhiều việc làm và cũng có nhiều thách thức hơn, đặc biệt trong thời gian suy thoái sắp tới, khi không biết được trước các kịch bản xảy ra sẽ thế nào thì chuẩn bị một phương án backup cũng là điều tốt.
Dải lương của BackEnd cũng khá rộng, tuỳ theo số năm kinh nghiệm, nhưng mình thấy phổ biến sẽ rơi vào từ 1000$ cho đến 3000$, có một số công ty vì những lý đo đặc biệt nào đó cũng có thể trả lên đến 5000$, nhưng số này thì ít, anh em cũng nên tránh bám theo đó để nhảy việc quá nhanh để cố đạt được mức đó.
Mặc dù công nghệ thì rất nhiều, tuy nhiên anh em khi làm BE thì cũng nên tránh nhồi nhét công nghệ vào dự án, khiến nó trở thành cả một cái hồ chỉ để phục vụ vài con cá, vừa tốn nguồn lực lại vừa khó vận hành về sau này. Sẽ chỉ mất 10% đến 20% thời gian đầu setup project là khó khăn, thời gian còn lại là phát triển tính năng, vậy nên cái mà anh em cần làm đó là tạo ra mã nguồn thật gọn gàng, khoa học, dễ đọc, dễ mở rộng, maintain về sau, đây mới là những thứ quan trọng nhất chứ không phải là vẽ ra cả 1 hệ thống phục vụ hàng triệu người để rồi đến giữa chừng chính các anh em lại chạy trốn bàng cách nghỉ việc, để lại một đống hổ lốn cho nhũng Dev tội nghiệp khác phải dọn dẹp.
BE cũng là trung tâm của nhiều vấn đề, nên anh em cũng cần giao tiếp tốt với tất cả các bên, đặc biệt là phía client và DevOps, đừng là Mr. Biết Tuốt để rồi trở thành Mr. Cô Đơn nhé anh em.