-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội
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.
-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội