Tắt Quảng Cáo [X] Đăng Nhập để ẩn Tất Cả Quảng Cáo #j2team_discussion #j2team_share #j2team_ask #j2team_question # **JD “đòi” thêm kinh nghiệm framework: HR tham hay ứng viên hiểu lầm?** > *Có lẽ câu trả lời đến từ hai phía. Dưới góc độ ứng viên thì nói HR tham cũng đúng, còn dưới góc nhìn HR thì có thể nói ứng viên đang chưa hiểu trọn vẹn ý nghĩa và sự cần thiết của kinh nghiệm framework. Chi tiết mình xin được phân tích bên dưới!* Hôm trước mình tình cờ đọc được một câu hỏi của một bạn ứng viên, hỏi tại sao tin tuyển dụng đã yêu cầu kinh nghiệm ngôn ngữ rồi còn đòi “**X năm kinh nghiệm với framework liên quan**”. Vấn đề ở đây là bạn ứng viên này đang thấy việc học thêm một framework sẽ khiến kinh nghiệm framework ấy trở về con số 0, gần như học lại từ đầu. Trùng hợp là bên mình khi tuyển dụng một số vị trí cũng thường đặt ra yêu cầu tương tự, ví dụ như tuyển Kotlin DEV với 6 tháng kinh nghiệm Jetpack Compose, JavaScript DEV với kinh nghiệm ReactJS, v.v.. Vậy nên tiện đây thì mình cũng muốn chia sẻ một số góc nhìn của mình về chân dung ứng viên mà công ty mình cũng như các công ty công nghệ khác luôn mong muốn. Mình không rõ bạn đặt câu hỏi trên đây đang ở trình độ nào nhưng với trải nghiệm đọc JD lâu năm như mình thì chỉ cần để ý một chút là nhận ra các JD “đòi” thêm kinh nghiệm sẽ tập trung ở trình độ từ Junior trở lên. Theo các bạn, trong trường hợp này, có phải các nhà tuyển dụng đang “quá tham” hay ứng viên đang hiểu sai yêu cầu? ## **PHÂN BIỆT PROGRAMMING LANGUAGE, FRAMEWORKS VÀ LIBRARIES** Mình không phải DEV nhưng quá trình làm việc với DEV cũng cho mình nhiều kiến thức liên quan nên với các thuật ngữ này mình muốn tập trung chia sẻ một cách sơ lược và khái quát nhất để cả các bạn trái ngành hoặc có dự định học IT cũng có thể hiểu được nhé! ***Programming languages*** Ngôn ngữ lập trình (programming language) hiểu đơn giản thì là một dạng ngôn ngữ được chuẩn hóa với bộ quy tắc riêng, qua đó DEV có thể code các ứng dụng, trang web, v.v. theo yêu cầu của khách hàng. Như công ty mình đang ưu tiên 5 ngôn ngữ phổ biến là Javascript, TypeScript, Python, SASS và Solidity. ***Libraries*** Library nghĩa gốc là thư viện, và trong lĩnh vực IT thì nó vẫn là thư viện . Các thư viện này là một tập hợp các chức năng (functions), các lớp (class) được viết sẵn để có thể tái sử dụng. Mỗi function hoặc class phục vụ cho một công việc cụ thể nào đó. ***Frameworks*** Framework nghĩa gốc là bộ khung, ứng dụng vào Công nghệ thông tin thì nó giống như một tập các thư viện lập trình, kết hợp với nhiều các công cụ khác tiện lợi như bộ biên dịch, phiên dịch, các công cụ dòng lệnh… nó tạo thành bộ khung cho tất cả các ứng dụng web. Có “bộ khung” này rồi thì việc code sẽ trở nên có trọng tâm và tối ưu hơn. Bên mình hiện dùng khá nhiều framework nhưng điển hình thì có ReactJS, React Native, Django, v.v.. Hiểu nôm na thì framework có xu hướng thiên về quản lý luồng điều khiển còn library thì sẽ thiên về việc tạo hành vi. ## **HỌC THÊM MỘT FRAMEWORK CÓ PHẢI LÀ HỌC LẠI TỪ ĐẦU?** Thực ra khi đã có nền tảng ngôn ngữ rồi thì việc học thêm một framework mới thực sự không quá khó. Cứ tưởng tượng bạn biết đi xe máy, có bằng lái rồi và hiện tại đang đi xe số thì khi chuyển qua xe ga hoặc ngược lại cũng sẽ không mất quá nhiều thời gian. Nó chỉ mất thời gian khi framework này thuộc một ngôn ngữ mới và bạn đang trong tình trạng newbie với ngôn ngữ kia thôi! Ưu điểm ở đây là khi đã có nền tảng ngôn ngữ thì bạn hoàn toàn có “bàn đạp” để học framework, ngoài ra còn là một điểm cộng lớn trong quá trình tìm việc và tham gia dự án thay vì chỉ giữ kiến thức về mỗi ngôn ngữ lập trình. ## **TẠI SAO KHI TUYỂN DỤNG, NGOÀI KIẾN THỨC VỀ NGÔN NGỮ, CÁC CÔNG TY THƯỜNG YÊU CẦU KINH NGHIỆM VỚI FRAMEWORK CỦA NÓ?** Mục đích chính là để **ước lượng** và **đánh giá ứng viên** đang ở level nào mà tuyển. Thực tế thì trong các post đăng tuyển Intern hoặc Fresher sẽ ít khi đặt ra những yêu cầu như vậy. Họa chăng chỉ nêu ra như một điểm cộng ưu tiên. Nhưng với các JD từ trình độ Junior hay Middle thì theo thực tế, kinh nghiệm về framework sẽ chuyển từ ĐIỂM CỘNG thành YÊU CẦU hoặc BẮT BUỘC. Chẳng hạn như điểm sơ qua 10 JD Junior JS thì có đến 9 JD yêu cầu ứng viên có kinh nghiệm với ReactJS. Vậy nên, có thể nói, nếu chỉ có kiến thức về ngôn ngữ mà không có kinh nghiệm framework thì các ứng viên sẽ trở nên khá bất lợi vì hầu như mỗi dự án đều yêu cầu làm việc với framework cụ thể. Như vậy, ***nếu chỉ có kiến thức ngôn ngữ mà không có hiểu biết framework thì có tìm việc được không?*** CÓ. Trên thực tế không phải không có những vị trí, công việc CHƯA yêu cầu kinh nghiệm về framework. Tuy nhiên, đó là vấn đề của TÌM ĐƯỢC VIỆC, còn vấn đề LÀM ĐƯỢC VIỆC hay không thì bạn vẫn sẽ cần kiến thức framework. Bởi như đã đề cập, các dự án thực tế sẽ cần framework cụ thể. Vậy: * ***Khi nào chỉ cần kiến thức ngôn ngữ là đủ?*** Khi bạn muốn ứng tuyển các công việc ở trình độ Intern/Fresher. Lúc này thường bạn sẽ chưa đủ “chín” để có thể tham gia dự án thực tế nên sẽ cần học thêm kiến thức về các framework phù hợp. Chẳng hạn như nhiều công ty (trong đó có công ty mình) vẫn sẽ chấp nhận training cho bạn về ReactJS nếu bạn đã biết và nắm vững kiến thức JavaScript. Ưu điểm là ở chỗ thay vì phải mày mò tự học thì khi học việc, bạn sẽ vừa được học kiến thức, vừa được trao đổi thường xuyên với những đàn anh cứng nên dễ học hơn. Đổi lại nhược điểm ở đây là bạn sẽ phải học và đọc nhiều chứ chưa được tham gia dự án thực tế ngay. * ***Khi nào nhà tuyển dụng “đòi” kinh nghiệm framework?*** Khi họ cần người làm việc ngay, khi dự án đang gấp và sẽ không có thời gian để training. Các công việc này thường sẽ tuyển dụng ứng viên có trình độ từ Junior trở lên. Nếu bạn có một chút máu “hiếu chiến”, muốn vừa vào công ty đã được “thực chiến” ngay lập tức thay vì phải ngồi đọc tài liệu và nghe training thì nên tích lũy thêm kinh nghiệm về framework từ trước. Ví dụ bạn đã học JavaScript rồi thì học tiếp luôn ReactJS. Tuy nhiên việc học và làm một framework không có nghĩa là bạn phải đi theo nó suốt đời. Bạn hoàn toàn có thể chủ động tự học và đề xuất công ty cho mình thử sức với các loại framework mới (cái này chắc sẽ tùy từng doanh nghiệp). Nhiều bạn mới khi đọc JD thường bảo các công ty “tham”, đòi nhiều kinh nghiệm. Nhưng thực tế thì chúng đều là những yếu tố tối thiểu để các bạn có thể làm việc được. Vậy nên hãy xác định rõ trình độ hiện tại và nhu cầu việc làm của mình để có thể hiểu đúng và “chạm” được tới những công việc phù hợp nhất nhé! P/S: trong lúc đặt vấn đề với các DEV về câu hỏi bên trên, mình cũng nhận được kha khá bình luận liên quan tới “**Cách tính (và hiểu đúng) về số năm kinh nghiệm đối với nghề lập trình**”. Tuy nhiên bài viết này cũng khá dài rồi nên có lẽ mình xin hẹn các bạn ở bài viết sau.