Hiện nay, thị trường phần mềm đa phần yêu cầu ứng viên phải thành thạo ít nhất một ngôn ngữ hay framework nào đó. Tuy nhiên, ngôn ngữ lập trình liệu có còn là yếu tố tiên quyết khi ta xem hồ sơ của một lập trình viên?. Khái niệm một lập trình viên hiện đại đã đi xa hơn cả ngôn ngữ lập trình hay công cụ. Ở bài viết này, tôi sẽ phân biệt lại một số kiểu kỹ năng, giải thích yếu tố khiến ngành công nghiệp phần mềm trở nên phức tạp và những yếu tố phi kỹ thuật mà các lập trình viên cần có để có thể có một sự nghiệp thành công.
Với tính chất công việc và trách nhiệm của mình, tôi đã tham gia vào rất nhiều cuộc phỏng vấn ứng viên tại môt công ty phần mềm. HRs và cả người tuyển dụng nữa đã hỏi tôi về cái nhìn đối với một người là dân kỹ thuật từ góc nhìn của chính một dân kỹ thuật. Cụ thể những câu hỏi đó là như sau:
Bài viết dưới đây sẽ phân loại các khuông mẫu kỹ năng cơ bản cho một lập trình viên và một phép ẩn dụ con đường sự nghiệp của một kỹ sư phần mềm với một đại lộ.
Chuyên gia là người thông thạo về một lĩnh vực nào đó
Một chuyên gia sở hữu những đặc điểm sau:
Ví dụ
Nhược điểm
Đây là dạng người đối lập với những chuyên gia, họ có một vốn kiến thức rộng và bao quát ở nhiều lĩnh vực.
Họ có những đặc điểm riêng biệt sau:
Ví dụ:
"T-shaped" là một cụm từ để mô tả chiều rộng và chiều sâu kỹ năng, kiến thức của một người.
Kiểu người T-shaper bao gồm những đặc tính sau:
Đây là một dạng lập trình viên rất được ưa chuộng tại những dự án áp dụng theo quy trình Agile ( tâp trung xây dựng một team gồm những thành viên có thể làm việc ở nhiều lĩnh vực khác nhau).
Một điểm mạnh nữa là sự xuất hiện của kiểu lập trình viên T-shaper sẽ giúp bù đắp được những lỗ hổng khi mà có một thành viên hay một chuyên gia về một mảng nào đó rời team.
Và cuối cùng điểm mà họ được yêu thích nhất đó chính là tính cơ động, với khả năng giao tiếp tốt, suy nghĩ tích cực và kỹ năng đưa ra nhiều giải pháp.
Đây là kiểu chuyên gia/ speacialist nhưng có thể chuyển sang vai trò khác một cách dễ dàng. Trái ngược với kiểu Biết tuốt, ở mỗi vai trò họ đều có kinh nghiệm và kiến thức sâu, có thể đưa ra giải pháp tối ưu.
Ví dụ
Biểu đồ dưới đây thể hiện sự so sánh giữa 3 kiểu lập trình viên, trục y thể hiện độ chuyên sâu về kỹ năng, kiến thức, trục x thể hiện mức độ đa năng, phạm vi vai trò mà người đó có thể đảm nhận được.
Một lập trình viên full-stack có thể đảm nhiệm công việc ở mọi mức độ kỹ thuật trong phạm vi "stack" của họ. Có rất nhiều người không biết rằng full-stack là một khái niệm đặc biệt và mỗi một lập trình viên full-stack đều phụ thuộc vào mảng stack của họ.
Ví dụ về mảng Stacks
Ma trận năng lực dùng để kiểm tra xem thành viên của team có đủ khả năng để thực hiện một task bất kỳ hay không. Thường thì ma trận sẽ thiết kế theo hai trục ngang và dọc. Một trục là những thành viên trong team, trục còn lại là những kỹ năng, công nghệ liên quan đến dự án.
Sau đó, từng thành viên trong team tự đánh giá bản thân mình, và kết quả sẽ được đặt ở vị trí mà mọi người đều có thể nhìn thấy.
Bảng ma trận năng lực có thể giúp bạn tìm ra được những điểm nhấn về khung kỹ năng, từ đó có thể đưa ra được những quyết định điều chỉnh nhân sự chính xác hơn.
Mô hình đường cao tốc là một thuật ngữ riêng mà tôi nghĩ ra để phân biệt các kiểu lập trình viên ở trên. Ý tưởng đến từ sự đa dạng của cuộc sống hàng ngày của chúng ta. Cuộc sống là một quá trình thích ứng đa dạng và không có câu trả lời nào là hoàn hảo cho mỗi người.
Do vậy, tôi bắt đầu nhìn vào cuộc đời lập trình viên theo một cách tương tự. Như một con đường cao tốc, chúng ta có rất nhiều làn để đi, mỗi làn đều có một giới hạn tốc độ, tải trọng, trở ngại và những ưu tiên riêng. Bên cạnh đó, chúng ta có thể thêm hoặc gỡ bỏ làn đường. Tất cả đều tùy thuộc vào chúng ta và chỉ có chúng ta có thể lựa chọn được con đường phù hợp nhất để đầu tư thứ quý giá nhất của mình vào đó: thời gian.
Theo cách nhìn của tôi, thì sự nghiệp của một kỹ sư phần mềm có một số làn đường quan trọng như sau:
Ngôn ngữ lập trình có thể phân thành nhiều loại khác nhau, ví dụ như kiểu static hay dynamic, kiểu strong hay weak. Nếu bạn thành thạo một ngôn ngữ, hãy chuyển hướng sang ngôn ngữ khác, điều này sẽ giúp làm mở rộng tầm nhìn của bạn, đồng thời giúp bạn nhìn rõ được điểm yếu và điểm mạnh của ngôn ngữ mình đang dùng.
Một sản phẩm có thể thuộc về một trong những thị trường ngách, ví dụ:
Bạn có thể đầu tư thời gian để hiểu rõ hơn về thị trường ngách mà mình thích và bạn đang làm việc, để nâng cao giá trị của mình. Ví dụ nếu bạn hứng thú với thị trường quảng cáo, bạn cso thể tìm hiểu về lượt click, view, các chỉ số CPI, CPM, CPC..vv. Và khi bạn không còn hứng thú với nó, hãy chuyển sang thị trường khác. Điều này sẽ làm tăng hiểu biết, làm CV của bạn trở nên đẹp hơn và giúp bạn tìm được hướng đi phù hợp nhất với mình.
Một lối đi khác cho bạn đó là kiến trúc phần mềm, công việc của bạn là nghiên cứu, đưa ra giải pháp tối ưu nhất về mặt mọi kiến trúc sư khi đưa ra giải pháp cho bất cứ bài toán nào cũng đều phải cân nhắc chi phí, lợi ích tương quan của doanh nghiệp , khi tham gia vào một dự án, kiến trúc sư phải cân nhắc những giải pháp, công nghệ sắp xuất hiện, xem xét những thay đổi gần đây trong lĩnh vực công nghiệp đang phát triển… và làm cách nào để tận dụng tối đa giải pháp hiện tại trong tương lai. Đồng thời họ cũng phải có kỹ năng giao tiếp tốt.
Hiện nay thì thị trường có rất nhiều công nghệ để lập trình viên lựa chọn.
Phần mềm doanh nghiệp/Enterprise software |
Java EE, SOA, ESB, integrations, etc. |
Dữ liệu lớn/Big data |
Batch/real-time, Hadoop ecosystem, Storm, Heron, Spark. |
High load |
Scalability, caching, search engines, etc. |
Khoa học dữ liệu/Data science |
Machine learning, NLP, CV, etc. |
Internet of things/IoT |
Smart devices, sensors, etc. |
BI |
OLAP, ETL, data warehousing, etc. |
Điện toán đám mây/Cloud |
Virtualization, AWS, OpenStack, CloudFoundry, etc. |
Bên cạnh những giải pháp như RDBMS (Postgres, MySQL, Oracle, etc.) thì những giai pháp NoSQL (Cassandra, MongoDB, HBase, Riak, Redis, etc.) or even NewSQL (VoltDB, Gemfire, etc.) cũng rất đáng lưu tâm. This resource can be a great starting point for you.
DevOps không phải là một công cụ, nó là một phương pháp tiếp cận và đó là một văn hóa với mục tiêu tối ưu hóa vòng đời phát triển phần mềm SDLC (Software Development Life Cycle) bằng cách đưa sự phát triển (development) và operation xích lại gần nhau hơn. Đó là một hệ tư tưởng hoàn toàn mới đã quét qua các tổ chức CNTT trên toàn thế giới, thúc đẩy các vòng đời dự án và làm gia tăng lợi nhuận. DevOps thúc đẩy sự hợp tác giữa các kỹ sư phát triển và bộ phận operation, tham gia với nhau trong toàn bộ vòng đời dịch vụ, từ thiết kế đến quá trình phát triển để hỗ trợ sản xuất.
"Dev" là một thuật ngữ dùng chung cho tất cả các nhà phát triển phần mềm trong khi "Ops" bao gồm các kỹ sư hệ thống, quản trị hệ thống, nhân viên operation, kỹ sư phát hành, DBA, kỹ sư mạng, chuyên gia bảo mật, và nhiều công việc phụ khác. Khi kết hợp, DevOps xóa đi khoảng cách giữa Development (phát triển) và Ops bằng cách giảm đi sự không chắc chắn của việc phát hành và thay đổi. Nó cũng làm giảm thiểu rủi ro liên quan đến các giai đoạn khác nhau của việc quản lý phát hành, bao gồm: Build (xây dựng), (Deploy) triển khai, Test (kiểm thử), và Continuous Improvement (cải tiến liên tục).
Sự lan rộng của phong trào DevOps đã mang lại vô số cơ hội nghề nghiệp cho các kỹ năng khác nhau. Tùy thuộc vào tính chất công việc mà bạn có thể tìm thấy cho mình những công việc phù hợp.
Nguồn bài viết : https://dzone.com/articles/are-you-a-modern-software-engineer?utm_source=Top%205&utm_medium=email&utm_campaign=2016-12-23
Software Development Intern / Thực tập sinh Phát triển Phần mềm
Công ty TNHH Giải pháp Data V Tech
Location: Hồ Chí Minh
Salary: Competitive
Chuyên viên lập trình Python-Odoo
Location: Hà Nội
Salary: 17 Mil - 25 Mil VND
CÔNG TY TNHH TƯ VẤN GIẢI PHÁP DOANH NGHIỆP TPC
Location: Hồ Chí Minh
Salary: Competitive
CÔNG TY TNHH TƯ VẤN GIẢI PHÁP DOANH NGHIỆP TPC
Location: Hồ Chí Minh
Salary: Competitive
PROJECT MANAGER - SOFTWARE ENGINEERING
Vietnam Concentrix Services Company Limited
Location: Hồ Chí Minh
Salary: Competitive
Location: Hà Nội
Salary: 20 Mil - 30 Mil VND
Thực tập sinh Frontend Developer
Công Ty Cổ Phần Việt Nam Booking
Location: Hồ Chí Minh
Salary: Over 2 Mil VND
Chuyên Viên Cao Cấp Nguồn Lực Công Nghệ
NGÂN HÀNG TMCP KỸ THƯƠNG VIỆT NAM (TECHCOMBANK)
Location: Hà Nội
Salary: Competitive
MID-LEVEL BACKEND DEVELOPER (.NET)
Location: Hồ Chí Minh
Salary: Competitive
[TUYỂN GẤP]_CHUYÊN VIÊN PHẦN MỀM/ IT software developer (Lâm Đồng)
Location: Lâm Đồng
Salary: Competitive