Home Blog Page 94

Khám Phá Chân Dung Lập Trình Viên Việt Trong Năm 2022

Theo số liệu trong “Báo Cáo Thị Trường IT Việt Nam 2021 | Developers Recruitment State” do TopDev phát hành, hiện nay nhân sự ngành IT tại Việt Nam phần lớn là các lập trình viên trẻ thuộc thế hệ Millennials và Gen Z vì vậy các nhà tuyển dụng cần chú ý đến độ tuổi, sở thích, kỹ năng,… để điều chỉnh kế hoạch tuyển dụng phù hợp với xu hướng tuyển dụng đa thế hệ hiện nay. 

Hãy cùng khám phá chân dung của lập trình viên Việt Nam trong năm 2021 ngay bên dưới đây nhé!

DOWNLOAD

1. Độ tuổi

Tính đến thời điểm hiện tại, hơn 50% số lượng lập trình viên tại Việt Nam là những người trẻ có độ tuổi từ 20 – 29. Điều này cho thấy thế hệ Millennials (Gen Y) là lực lượng lao động chủ đạo trong ngành IT trong 2021. Nói về Millennials, đây là thế hệ mong muốn sự cân bằng giữa công việc và cuộc sống tốt hơn, biết thêm thông tin về công ty, sản phẩm của mình và muốn tham gia vào hầu hết quá trình phát triển sản phẩm. Họ cũng mong đợi sản phẩm góp phần hữu ích cho cộng đồng. Với nhịp sống nhanh đòi hỏi một lối sống năng động và linh hoạt, việc xây dựng các chiến lược săn đón cũng như giữ chân các nhân tài IT thế hệ Millennial là điều cần thiết đối với các nhà tuyển dụng.

Tuy nhiên, các nhà tuyển dụng cũng cần chuẩn bị cho Centennials (GenZ), theo sau Millennials. Tư duy của GenZ và cách tương tác với họ đang trở nên khác biệt hơn rất nhiều. Chúng được dự báo như một làn sóng mới có thể thay đổi bối cảnh ngành dịch vụ và giải trí, chắc chắn tuyển dụng IT không phải là trường hợp miễn trừ.

2. Giới tính

Công nghệ thông tin được xem là ngành do nam giới “thống trị” bởi số lượng lập trình viên nam nhiều hơn hẳn nữ. Theo số liệu thống kê trong “Báo cáo thị trường IT Việt Nam 2021 – Developers Recruitment State”, giới tính nam chiếm ưu thế trong giới lập trình viên hoặc những người làm việc trong lĩnh vực công nghệ với hơn 92,05%. Bên cạnh đó nữ chiếm tỷ lệ nhỏ hơn với 7,85%, tuy nhiên, tỷ lệ lập trình viên nữ đã tăng lên đáng kể so với những năm trước, đặc biệt là những người có từ 2 năm kinh nghiệm trở lên. 

3. Công nghệ và kỹ năng chuyên môn

Phần lớn các Lập trình viên cho rằng ngành kỹ thuật AI & Cloud sẽ dẫn đầu xu hướng hiện tại, tiếp theo là Fintech/ Payment và xếp thứ 3 là Thương mại điện tử/ Bán lẻ. Không có gì ngạc nhiên khi Cloud Engineering, Fintech, e-Commerce, Cybersecurity và Business Service là lựa chọn hàng đầu để học hỏi và phát triển của các lập trình viên. Vào 2020, xu hướng chuyển đổi kỹ thuật số diễn ra trong tất cả các khía cạnh của cuộc sống hàng ngày cũng như nơi làm việc. Sự phát triển của mua sắm trực tuyến, quản lý trực tuyến và tầm quan trọng của an ninh mạng đã khiến những ngành này trở nên hấp dẫn hơn bao giờ hết.

So với 2 năm trước, mối quan tâm hàng đầu của các công nghệ đã có một số thay đổi đáng kể. Đáng chú ý nhất là sự quan tâm ngày càng tăng về các công nghệ DevOps và Cloud, được thúc đẩy bởi chuyển đổi kỹ thuật số và các vấn đề mới nảy sinh trong thời đại dịch. 

Theo sau danh sách là những cái tên luôn nổi trong “đường đua” công nghệ: Big Data/ Data Science, Machine Learning/ Artificial Intelligence. Khi công nghệ dữ liệu tiên tiến dần cung cấp các giải pháp tối ưu cho cuộc sống hiện tại cũng như dự đoán tốt và chính xác hơn các xu hướng trong tương lai (cả rủi ro và mối đe dọa), các tài năng IT càng có mong muốn áp dụng các công nghệ này vào các sản phẩm và công việc lập trình của họ. 

Công nghệ không thể thiếu tiếp theo là An ninh mạng, đại dịch đã hình thành rất nhiều hành vi, nhu cầu và sự thay đổi mới, từ offline sang online, từ onsite đến remote, đã đặt ra nhiều vấn đề về quản lý, bảo mật, ổn định và mức độ riêng tư của dữ liệu/ hệ thống. Từ đó, đã khiến cho các lập trình viên có nhu cầu muốn học hỏi và có thêm cơ hội thực hành về lĩnh vực An ninh mạng. 

Danh sách còn lại như Mobile Development, Thiết kế UX/ UI, Business Intelligence, IoT/ Robotics và Game Development vẫn là những chủ đề hấp dẫn mà các lập trình viên muốn thử sức trong năm 2022.

4. Ngôn ngữ lập trình phổ biến

Theo báo cáo của TopDev, JavaScript là ngôn ngữ phổ biến nhất cùng với các kỹ năng IT khác. Trong đó, React, Nodejs & Vue là 3 lựa chọn hàng đầu của các framework Javascript, và mức độ phổ biến của React & Node.js khá tương đồng. Lựa chọn hàng đầu để làm việc với Java là Spring (hơn 55%) sau đó tương ứng là Struts & Hibernate. Không có nhiều thay đổi trong danh sách .NET/ C#, trong đó .NET Framework, .NET Core & ASP.NET Core đứng đầu danh sách. Laravel vẫn là framework phổ biến nhất trong danh sách các công nghệ PHP với hơn 61%, tiếp theo là Symfony (34,17%) & CodeIgniter (28,38%). 

MySQL tiếp tục dẫn đầu bảng xếp hạng SQL với hơn 53%. Tuy nhiên, mức độ phổ biến giữa các hệ thống SQL không khác nhau nhiều với Top 5 (MySQL, SQL Server, PostgreSQL, MongoDB & Redis) đóng góp tương ứng tầm quan trọng của các chức năng cơ sở dữ liệu trong hầu hết sản phẩm. 5 vị trí hàng đầu của bộ xử lý tiền xử lý CSS thuộc về Sass, Less, Stylus, PostCSS & SCSS. 

Python – một trong ngôn ngữ nổi lên gần đây trong thế giới công nghệ – cho thấy khoảng cách đáng kể về mức độ phổ biến giữa các lựa chọn, trong đó lựa chọn khung Django chiếm 35,22% trong khi hạng 5 (Buttle) chỉ chiếm 2,1%. Trong số các Lập trình viên di động, Java, Swift & Objective-C chiếm vị trí trong 3 danh sách lựa chọn ngôn ngữ lập trình hàng đầu. Trong khi đó, những công nghệ mới – React Native và Flutter đã có sự gia tăng đáng kể về mức độ phổ biến trong những năm gần đây.

Tham khảo các vị trí tuyển nhân viên QA, MySQL, React Native,……

5. Sở thích

Các lập trình viên thực sự yêu thích và đánh giá cao những gì họ làm — và niềm đam mê này tiếp tục được phát triển. Phần lớn động lực chính của các lập trình viên để học một công nghệ mới chỉ đơn giản là vì họ thích nó. Khi được hỏi về điều gì đã thu hút họ bắt đầu sự nghiệp với tư cách là Lập trình viên, 75% cho biết đó là “đam mê công nghệ, lập trình và máy tính”, tiếp theo 63% cho rằng “Mức lương hấp dẫn & sự phát triển nghề nghiệp tương lai” và 55% cho rằng “Nền tảng máy tính và logic tốt” .

Các lập trình viên cũng thích đóng góp vào các dự án mã nguồn mở. 39,3% đã đóng góp cho mã nguồn mở một vài lần, trong khi 5,3% làm như vậy thường xuyên. Các dự án mã nguồn mở là một hoạt động mà các lập trình viên phần mềm thích làm trong thời gian cá nhân của họ. Cũng theo báo cáo cho thấy, 28,4% các lập trình viên đóng góp cho nguồn mở đơn giản vì nó thú vị. Các rủi ro/ cơ hội kinh tế, thất nghiệp và các vấn đề xã hội là 3 vấn đề hàng đầu mà các lập trình viên muốn giải quyết thông qua lập trình. Đặc biệt là tình hình đại dịch này, đã có rất nhiều dự án xã hội do các lập trình viên đóng góp để theo dõi các ca Covid-19, lịch trình di chuyển hoặc các trường hợp cảnh báo/ theo dõi thời gian thực xung quanh, điều này đã thu hút rất nhiều tài năng & tổ chức CNTT tham gia hỗ trợ.

Đối với phần lớn các lập trình viên, code không chỉ là việc họ làm ở nơi làm việc hoặc trong giờ làm việc. 76,2% người được hỏi cho biết họ có code ngoài công việc. Khoảng 51,4% lập trình viên dành khoảng 1 giờ cho các dự án cá nhân. Gần 43,2% lập trình viên dành 2-5 giờ cho các dự án cá nhân.

Bên cạnh đó, hầu hết các lập trình viên vẫn sử dụng Windows, 29,7% sử dụng MacOS, phần còn lại dành cho hệ điều hành Linux & các nền tảng khác.

6. Động lực phát triển

Không thể phủ nhận rằng ngành CNTT là một ngành năng động và có tốc độ thay đổi nhanh chóng. Điều này đòi hỏi lập trình viên phải cập nhật thêm các công nghệ mới để duy trì tính cạnh tranh và tiếp tục phát triển trong ngành. Hơn 50% lập trình viên dưới 30 tuổi thường cố gắng học điều gì đó mới trong vòng vài tháng. Con số này ở những người từ 15 đến 24 tuổi lên đến 80%. Đối với lập trình viên trên 35 đến 45 tuổi, tần suất dành thời gian học thêm kiến ​​thức mới là mỗi năm một lần. Việc này đối với lập trình viên trên 45 tuổi càng giảm nhiều hơn, thường họ sẽ học công nghệ mới trong vòng vài năm. 

Các lập trình viên ở level Fresher/ Junior với lợi thế về sức học cũng như quỹ thời gian tương đối thoải mái, có thể cập nhật xu hướng công nghệ mới vài tháng một lần. Đối với các lập trình viên trên 35 tuổi, hầu hết họ đã xác định được chuyên môn của mình và tập trung để trở thành chuyên gia trong lĩnh vực đó, vì vậy ưu tiên của họ sẽ không còn là mở rộng kiến ​​thức theo chiều ngang mà thay vào đó là chiều sâu.

7. Lời kết

Hiện Việt Nam đang nhận được làn sóng đầu tư mạnh mẽ vào ngành Công nghệ thông tin, bao gồm cả doanh nghiệp có vốn đầu tư nước ngoài. Từ đó nhu cầu về nhân lực IT tại Việt Nam trong 5 năm gần đây không ngừng tăng cao. Vì vậy, các nhà tuyển dụng cần hiểu rõ chân dung của nguồn nhân lực IT tại Việt Nam để có những chiến lược tuyển dụng phù hợp với công ty.

Ngoài ra, bạn có thể tham khảo thêm về rất nhiều thông tin và chỉ số khác của toàn ngành IT thông qua bản báo cáo đầy đủ nhất tại: “Báo Cáo Thị Trường IT Việt Nam 2021 | Developers Recruitment State” bằng cách tải xuống bên dưới

Tải ngay báo cáo

Tìm việc IT lương cao, đãi ngộ tốt trên TopDev ngay!

Xu Hướng Tuyển Dụng IT Tại Việt Nam Năm 2022

Thời gian qua không chỉ mang đến những thách thức mà còn cả trải nghiệm mới, bài học kinh nghiệm đắt giá cho mọi ngành nghề, lĩnh vực. Trong bối cảnh thị trường thay đổi liên lục như hiện nay, khả năng thích ứng được cho là kỹ năng quan trọng mà bất kỳ nhà tuyển dụng nào cũng cần trau dồi và phát triển. Xu hướng tuyển dụng nhân sự IT cũng có sự thay đổi để thích ứng với nhu cầu tìm việc và nâng cao hiệu quả. 

DOWNLOAD

1. Áp dụng các phương pháp/ công cụ đánh giá năng lực kỹ thuật & tính cách

Vietnam IT Market Report 2021Developers Recruitment State do TopDev phát hành đã tổng hợp một số hình thức đánh giá kỹ thuật được Lập trình viên chấp nhận trong quy trình tuyển dụng. Bao gồm các hình thức: Bài kiểm tra với các vấn đề trong cuộc sống thực, Phỏng vấn code trực tiếp/ tại chỗ, Pair-coding, Cuộc thi với các thử thách/ trò chơi kỹ thuật, Whiteboard coding test và Bài kiểm tra tại nhà. Ngoài ra còn có các công cụ đánh giá kỹ năng kỹ thuật của ứng viên và một số bài kiểm tra tính cách phổ biến: MBTI, 16 Personalities, Enneagram.

2. Tối ưu hóa việc tìm kiếm việc làm trên thiết bị di động

Thiết bị di động đang ngày càng phổ biến rộng rãi bởi tính tiện lợi, hữu ích của chúng. Các công ty/ Nền tảng đang ngày càng tối ưu hóa hiệu suất trên thiết bị di động thông qua các trang web nghề nghiệp, tin tuyển dụng, quy trình ứng tuyển.

Theo Vietnam IT Market Report 2021 – Developers Recruitment State do TopDev phát hành, phần lớn ứng viên cho rằng thiết bị di động đóng vai trò quan trọng trong thói quen tìm kiếm việc làm và họ tìm kiếm công việc hàng ngày trên thiết bị của họ. Không chỉ vậy, với thiết bị di động, ứng viên có thể lưu một công việc từ trang nghề nghiệp của công ty/ các trang web việc làm từ di động của họ và sau đó nộp đơn.

3. Trải nghiệm của ứng viên về quy trình tuyển dụng

Tìm hiểu về những trải nghiệm không tốt của ứng viên trong quá trình tuyển dụng, Vietnam IT Market Report 2021 – Developers Recruitment State đã nêu ra một số trường hợp gây ảnh hưởng tiêu cực đến một thương hiệu tuyển dụng: Không nhận được phản hồi từ công ty sau khi gửi đơn đăng ký hoặc phỏng vấn, … Vấn đề này có thể tạo nên sự bất mãn cho ứng viên, và họ có thể không còn hứng thú để ứng tuyển vào bất kì vị trí khác trong công ty hay truyền miệng cho người khác không nộp đơn và thậm chí là tẩy chay sản phẩm, dịch vụ.

Đứng trước những nguy cơ đó, Nhân sự/ Nhà tuyển dụng cần có những biện pháp hợp lý, và một số cách để đạt hiệu quả chính là: Đảm bảo rằng vị trí tuyển đáp ứng nhu cầu thực sự, viết mô tả công việc rõ ràng, giúp ứng viên dễ dàng ứng tuyển vào công việc của mong muốn, cung cấp cho ứng viên thông tin về những gì cần chuẩn bị khi tham gia phỏng vấn trực tiếp,…

4. Tối ưu hóa việc sử dụng mạng xã hội trong lĩnh vực tuyển dụng

Tính đến năm 2021, có tới 70% dân số Việt Nam sử dụng mạng xã hội và con số này vẫn đang tiếp tục tăng lên trong thời gian tới. Nắm bắt xu hướng này, các nhà tuyển dụng đã nhanh chóng triển khai kế hoạch tiếp cận ứng viên thông qua các kênh: Facebook, Youtube, các diễn đàn lớn và mới đây là Tiktok. Với chi phí tương đối thấp và không hạn chế đối tượng tuyển dụng, việc lựa chọn mạng xã hội làm kênh tìm kiếm, thu hút, tuyển dụng ứng viên tiềm năng ngày càng phổ biến và mang tính cạnh tranh cao.  

5. Đưa Employer Branding trở thành “KOL” thể hiện giá trị  của công ty

Để quảng bá Thương hiệu nhà tuyển dụng, các công ty đã chú ý đến việc thu hút các ứng viên thụ động và sử dụng các kênh kỹ thuật số: Blog, Website công ty, Email Marketing và các kênh Truyền thông xã hội. Khi lựa chọn các kênh này, nhà tuyển dụng cần chú ý đến việc thu thập & nhắm đúng đối tượng ứng viên và tạo ra nội dung hấp dẫn. Cân bằng hai yếu tố trên giúp cho doanh nghiệp dễ dàng có được chiến dịch xây dựng thương hiệu nhà tuyển dụng thành công. Ngoài ra, doanh nghiệp cũng có thể quảng bá Thương hiệu của mình thông qua các sự kiện công nghệ – nơi hội tụ lượng lớn ứng viên tiềm năng.

Đây là thời điểm để các doanh nghiệp tận dụng cơ hội và nỗ lực đưa hình ảnh thương hiệu của mình ra bên ngoài, tạo cho các lập trình viên có cảm giác gần gũi, thân thiện và giúp họ biết rõ hơn về công ty cũng như những cơ hội phát triển mà công ty mang lại.

Cần có sự xem xét cẩn thận về Thương hiệu Nhà tuyển dụng để thay đổi, sàng lọc và phát triển những chiến lược tuyển dụng liên quan đến thay đổi của ngành và các thông điệp từ doanh nghiệp. Đồng thời cũng cần quan sát kỹ hành vi của ứng viên và các xu hướng mới, xem xét đến sự thay đổi và cân nhắc xem đó có phải là xu hướng lâu dài hay không, vì điều này sẽ ảnh hưởng rất nhiều về cách thức hoạt động của chiến lược trong các kế hoạch tuyển dụng sắp tới.

6. Millennials và Gen Z sẽ là lực lượng lao động chính

Không có gì ngạc nhiên khi nói rằng Gen Z am hiểu công nghệ hơn bất kỳ thế hệ nào khác. Họ được sinh ra trong thời đại bùng nổ Internet với sự ra đời của World Wide Web và sự phát triển không ngừng của nó. Vì vậy Gen Z sử dụng Internet như một công cụ để làm việc, nghiên cứu và kết nối với những người khác. 

Về tư duy và thói quen tại nơi làm việc

Millennials và Gen Z “biến hình” mỗi ngày trong một thế giới được định nghĩa bởi hai từ “thay đổi”. Những thay đổi về công nghệ, yêu cầu của nhà tuyển dụng,… thúc đẩy họ không ngừng cải thiện bản thân để duy trì khả năng cạnh tranh và khẳng định năng lực. Ngoài ra, tính “ham học hỏi” cùng những kỹ năng đã được mài giũa tốt của các thế hệ này đã chứng tỏ khả năng vượt trội của họ trước các nhà quản lý.

Khả năng Teamwork

Tinh thần đồng đội là một trong những minh chứng rõ ràng cho thấy sự khác biệt giữa Millennials và Gen Z. Nếu khả năng hợp tác và làm việc nhóm luôn được Millennials chú trọng với phương châm “Hai luôn tốt hơn Một”, thì Gen Z cho rằng nếu muốn hoàn thành công việc một cách hiệu quả, tốt nhất bạn nên “tự thân vận động”.

Mức độ cam kết với các doanh nghiệp

Đa số những nhân viên trẻ thuộc Millennials và Gen Z có mức độ cam kết với công ty thấp hơn các thế hệ trước, họ trung thành với các cá nhân như cấp trên hoặc đồng nghiệp hơn so với công ty mà họ làm việc. Ngoài ra, họ cũng coi trọng sự cân bằng trong cuộc sống cá nhân và công việc, thời gian giải trí, cũng như mức độ thoải mái của môi trường làm việc.

Xu hướng tuyển dụng IT năm 2022 chuyển biến không ngừng, đòi hỏi nhà tuyển dụng cần thay đổi về tư duy cũng như xu hướng tuyển dụng nguồn nhân tài IT cho doanh nghiệp. Ngoài ra, để có thể tìm hiểu thêm về toàn cảnh thị trường IT cũng như những chỉ số chi tiết, mời bạn tải Báo Cáo Thị Trường IT Việt Nam 2021 – Developers Recruitment State do TopDev phát hành:

Tải ngay báo cáo


Tháng 10 &11 – thời điểm tốt cuối cùng trong năm để hoàn thành kế hoạch tuyển dụng năm 2021 vì vài tháng tới cận Tết ứng viên sẽ quan tâm lương tháng 13 /thưởng Tết ngại chuyển việc. TopDev xin gửi đến Quý công ty những ưu đãi nhằm tối ưu chi phí thích hợp cho các bên đang bị hạn chế về ngân sách đợt cuối năm lên đến 30% tại đây https://topdev.vn/recruit. Cần thêm thông tin về báo giá số lượng tin đăng nhiều hơn, công ty liên hệ hotline 028.6273.3496 để nhận ưu đãi đặc biệt.

04 điểm Nhà tuyển dụng quan tâm nhất về TopDev:

1. Cơ hội tiếp cận kho dữ liệu 335.000 ứng viên IT
2. 60 ngày đăng tin (30 ngày chính thức và 30 ngày bảo hành)
3. Tin đăng hiển thị cả trang chủ và trang tìm việc
4. Nhận 02 nguồn CV: ứng viên tự apply và ứng viên TopDev giới thiệu sang

tìm hiểu ngay

Những Thông Tin Cơ Bản Giúp Tuyển Dụng Hiệu Quả Trên LinkedIn

tuyển dụng hiệu quả trên Linkedin
Những thông tin cơ bản giúp tuyển dụng hiệu quả trên LinkedIn

LinkedIn hiện được đánh giá là nền tảng tuyển dụng nhân sự số một thế giới khi sở hữu hơn 500 triệu profile người dùng ở khắp các châu lục. Bất cứ ai làm trong lĩnh vực nhân sự đều nên có sự hiểu biết sâu sắc về LinkedIn để thúc đẩy công tác tuyển dụng diễn ra chất lượng hơn. Vậy để công tác tuyển dụng hiệu quả trên LinkedIn, những chuyên viên nhân sự nên làm gì và nên khai thác những đặc điểm nào của công ty mình?

tuyển dụng hiệu quả trên LinkedIn
Làm thế nào để tuyển dụng trên LinkedIn đạt hiệu quả?

Nền tảng LinkedIn hiện đang phát triển như thế nào?

Theo thống kê tại Việt Nam, hiện nay LinkedIn đang cung cấp hơn 19 triệu hồ sơ cá nhân, bao gồm 145.000 hồ sơ của các chức vụ liên quan đến giám đốc điều hành, và cứ mỗi phút có 25 thành viên mới tham gia. Con số này vẫn chưa dừng lại và đang trên đà tăng trưởng mạnh.

Thêm vào đó, so với các nền tảng mạng xã hội khác mang tính giải trí là chủ yếu, thì tất cả các profile cá nhân cũng như doanh nghiệp trên LinkedIn đều hoạt động vì mục đích công việc. Do đó, nếu doanh nghiệp và các nhà tuyển dụng bỏ qua LinkedIn thì chắc chắn sẽ mất đi vô vàn lợi thế trên thị trường lao động đang cạnh tranh vô cùng khốc liệt hiện tại.

  10 Bí quyết tuyển dụng giúp bạn tăng tỉ lệ nhận offer tức thì!
  Cách Viết Summary Trên LinkedIn Để Thu Hút Các Nhà Tuyển Dụng

Tuyển dụng miễn phí hiệu quả trên LinkedIn

Đây là hình thức cơ bản và hoàn toàn miễn phí mà bất cứ công ty nào cũng đều có thể sử dụng. Vì không phải mất chi phí cho quá trình tuyển dụng nên đây cũng là hình thức tiên quyết được nhiều công ty lựa chọn.

Xây dựng trang tuyển dụng mang dấu ấn riêng của công ty

Đây sẽ là nơi để ứng viên tìm kiếm và nhìn thấy mọi thông tin liên quan đến công ty, do đó cần đảm bảo xây dựng hồ sơ một cách cẩn thận, chi tiết và đáng tin cậy để tạo ấn tượng trong mắt ứng viên.

Người xây dựng hồ sơ công ty thường sẽ ở bộ phận nhân sự của công ty. Vì vậy cần đảm bảo có thể cung cấp một các thông tin sao cho thật hấp dẫn nhưng vẫn đảm bảo sự ngắn gọn, xúc tích. Tốt hơn hết nên có đầy đủ các thông tin như mục tiêu ra đời, sứ mệnh phát triển, quy mô nhân sự và phúc lợi cho nhân viên của công ty. Vì đây cũng chính là những yếu tố nhận được sự quan tâm hàng đầu của ứng viên trong quá trình ứng tuyển.

Thường xuyên chia sẻ thông tin hữu ích trên fanpage công ty

Các nội dung chia sẻ sẽ phản ánh quá trình phát triển của công ty, giúp ứng viên có cái nhìn bao quát hơn. Các thông tin đó có thể liên quan đến:

  • Cập nhật thông tin về sản phẩm hay dịch vụ mới của công ty.
  • Những thành tựu công ty đạt được trong khoảng thời gian gần nhất.
  • Các sự kiện do công ty tổ chức.
  • Các hoạt động sinh hoạt và giải trí trong nội bộ công ty.

Đăng tin tuyển dụng trên tài khoản công ty

Để tuyển dụng trên LinkedIn, đây đương nhiên là bước mà các chuyên viên nhân sự không nên bỏ qua. Nhất là với các công ty đã đạt được lượng người theo dõi nhất định, việc đăng tin tuyển dụng sẽ thu hút rất đông lượng người quan tâm, chia sẻ cũng như ứng tuyển trực tiếp vào công ty.

xây dựng hồ sơ công ty

Đăng tin tuyển dụng trên các group của LinkedIn

Các nhóm trên LinkedIn được thành lập và hoạt động theo từng chuyên môn, ngành nghề khác nhau. Nhờ thế, nó sẽ tập trung rất đông đúc các ứng viên làm việc trong lĩnh vực đó cũng như mong muốn tìm được công việc mới đúng chuyên môn.

Vô hình chung khi đăng tin tuyển dụng trong các group bạn sẽ tìm được rất nhiều các ứng viên tiềm năng cho công ty, giúp tăng cao năng suất tuyển dụng. Tuy nhiên, một điểm cần lưu ý để được quản trị viên các group duyệt vào nhóm đó là thông tin profile của công ty cần đảm bảo độ uy tín. Do đó việc xây dựng và quản lý trang hồ sơ của công ty hiệu quả thật sự rất cần thiết trong công tác tuyển dụng.

Xem thêm NÊN & KHÔNG NÊN Để Đàm Phán Lương Thành Công Khi Phỏng Vấn

Tuyển dụng có trả phí trên LinkedIn

Đa phần các công ty lớn và có tiềm lực ngân sách mạnh sẽ lựa chọn hình thức tuyển dụng này. Việc “móc hầu bao” để tuyển dụng trên LinkedIn không chỉ giúp công ty dễ dàng hơn trong việc tuyển các nhân sự chất lượng mà còn đặc biệt hiệu quả trong việc tìm kiếm các nhân sự cấp cao cũng như tuyển dụng số lượng lớn.

Điểm khác biệt giá trị giữa tài khoản tuyển dụng trả phí và miễn phí trên LinkedIn là InMail – tức phạm vi kết nối và liên lạc với các ứng viên tiềm năng. Khi dùng LinkedIn miễn phí, bạn sẽ không thể kết nối đến những tài khoản nằm ngoài mạng lưới connection. Trong khi đó với LinkedIn trả phí, bạn có thể tương tác trực tiếp với họ thông qua InMail.

Xem thêm Kinh nghiệm tìm việc trên Linkedin hiệu quả cho công tác tuyển dụng nhân sự

Hiện nay có 2 hình thức tài khoản trả phí trên LinkedIn là PremiumRecruiter:

Tuyển dụng trên LinkedIn Premium

Theo đó, hiện nay LinkedIn Premium đang thu phí 47.99$ là gói phí thấp nhất với 15 InMails trong tài khoản. Mức phí 74.99$ là gói phí cao nhất với 30 InMails trong tài khoản. Các lợi ích nhận được theo đó như:

  • Chia sẻ bảng tin tuyển dụng của công ty và tiếp cận tới hơn 500 triệu ứng viên trong mạng lưới LinkedIn.
  • Gửi email và hiển thị quảng cáo cho những ứng viên có kỹ năng và vị trí địa lý phù hợp với thông tin tuyển dụng của công ty (thông qua tính năng “Jobs you may be interested in”).
  • Tạo lập và quản lý danh sách 50 ứng viên phù hợp nhất với công việc đang tuyển.
  • Cải thiện đáng kể khả năng kết nối và tìm kiếm ứng viên tiềm năng
  • Cơ hội tham gia các khóa học kỹ năng và quản trị trong lĩnh vực nhân sự trên LinkedIn Learning
  • Nhận những thông tin insight về ngành nghề, việc làm nhanh và chính xác nhất.

profile linkedin

Tuyển dụng trên LinkedIn Recruiter

Bên cạnh các tính năng tương tự như tài khoản LinkedIn Premium, tuyển dụng bằng tài khoản LinkedIn Recruiter còn có thêm khả năng lưu trữ kết quả tìm kiếm ứng viên, quảng cáo tin đăng tuyển dụng và tăng đáng kể số InMails có sẵn trong tài khoản.

Ngoài ra còn có hai gói tài khoản con trong LinkedIn Recruiter: Lite và Corporate.

Tài khoản LinkedIn Recruiter Lite cung cấp thêm khả năng hiển thị và kết nối với các ứng viên bị động vô cùng hiệu quả.

Trong khi đó, tài khoản LinkedIn Recruiter Corporate là tài khoản cao cấp nhất với nhiều tính năng vô cùng hấp dẫn như:

  • Xem được hồ sơ của tất cả các tài khoản trên LinkedIn
  • Trao đổi và kết nối được với nhiều người dùng trên cùng một tài khoản
  • Có khả năng gửi tối đa 150 InMails/tháng và kèm theo hình thức gửi InMails hàng loạt (tối đa 25 InMails cùng một lúc).
  6 công cụ tuyển dụng phổ biến trong ngành Nhân sự

Ngày nay, hầu hết các doanh nghiệp đều sử dụng LinkedIn trong công tác tuyển dụng nhân sự. Để tuyển dụng thành công cũng như tìm kiếm được những ứng viên chất lượng, doanh nghiệp cần biết cách tuyển dụng hiệu quả trên LinkedIn thông qua việc xây dựng tài khoản công ty một cách ấn tượng và tạo niềm tin nơi người ứng tuyển.

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

SourceTree: Công cụ trực quan hóa cho GIT trên Windows/ macOS

SourceTree: Công cụ trực quan hóa cho GIT trên Windows/ macOS

Bài viết được sự cho phép của blogchiasekienthuc.com

Chào anh em, Git có lẽ là một công cụ đã không còn xa lạ gì với anh em trong giới lập trình nữa rồi, bởi sự hiệu quả trong việc quản lý mã nguồn (source code) mà nó mang lại là không phải bàn cãi gì thêm.

Nhưng việc sử dụng Git thông qua các dòng lệnh (command line) không phải lúc nào cũng tiện và “ngầu” như anh em vẫn nghĩ. Đặc biệt là với các anh em mới tiếp cận với lập trình !

Chính vì vậy trong bài viết này, mình sẽ hướng dẫn cho anh em cài đặt SourceTree – một công cụ GUI giúp trực quan hóa các thao tác với Git, giờ đây các thao tác quản lý sẽ dễ như ăn kẹo Ok, bây giờ thì cùng mình cài đặt thôi nào !

#1. Download Sourcetree mới nhất

Hiện tại thì Sourcetree chỉ hỗ trợ cho Windows và Mac OS, đây cũng là hai hệ điều hành phổ biến nhất hiện nay.

sourcetree-cong-cu-truc-quan-hoa-cho-git (1)

#2. Cài đặt phần mềm Sourcetree

Nói chung là quá trình cài đặt cũng không có gì khó khăn cả, đa số là những thao tác rất quen thuộc với anh em lập trình mà thôi.

Sau khi download sourcetree xong => anh em bấm vào file vừa tải về để tiến hành cài đặt.

sourcetree-cong-cu-truc-quan-hoa-cho-git (2)

+ Bước 1: Đầu tiên là phần đăng ký tài khoản thông qua Bitbucket, nhưng nếu anh em có tài khoản Github hoặc Gitlab hay VS Team thì dùng luôn các tài khoản này cũng đươc nhé. Bạn bấm vào nút Skip để sang bước tiếp theo.

sourcetree-cong-cu-truc-quan-hoa-cho-git (3)

+ Bước 2: Bước này sẽ cài đặt một số tools cơ bản, anh em cứ check như trong hình bên dưới => Sau đó bấm Next để sang bước tiếp theo.

sourcetree-cong-cu-truc-quan-hoa-cho-git (4)

Nếu các tools được cài thành công thì sẽ có thông báo thành công như hình bên dưới. Tiếp tục bấm Next để sang bước tiếp theo.

sourcetree-cong-cu-truc-quan-hoa-cho-git (5)

+ Bước 3: Tiếp theo, anh em có thể cung cấp thông tin tài khoản Github để cấu hình những cài đặt.

  • (1) Username của tài khoản Github (hoặc Gitlab…)
  • (2) Email mà các bạn dùng để đăng ký tài khoản đó.

=> Sau đó bấm Next để tiếp tục.

sourcetree-cong-cu-truc-quan-hoa-cho-git (6)

+ Bước 4: Đến đây có thể có một bước yêu cầu tải SSH Key. Anh em nếu chưa có thì có thể bấm No để thực hiện cài đặt sau.

sourcetree-cong-cu-truc-quan-hoa-cho-git (7)

+ Bước 5: Okay, vậy là về cơ bản anh em đã cài đặt xong rồi đó. Giờ mình sẽ thử clone một repository trên Github về xem nhé.

  • (1) – Đầu tiên anh em vào tab Clone như hình bên dưới.
  • (2) – Nhập địa chỉ repository của bạn trên Github.
  • (3) – Nơi mã nguồn (source code) sẽ được clone về (trên máy của anh em)
  • (4) – Tên folder chứa source code

=> Sau đó anh em bấm Clone để tiến hành clone về máy (thao tác này tương đương như lệnh git clone của GIT.)

sourcetree-cong-cu-truc-quan-hoa-cho-git (8)

Quá trình clone souce code sẽ được hiển thị như hình bên dưới và nó phụ thuộc vào tốc độ Internet của anh em.

sourcetree-cong-cu-truc-quan-hoa-cho-git (9)

+ Bước 6: Okay, sau khi clone xong thì anh có thể thấy Sourcetree hiển thị các thông tin về repo rất chi tiết. Trong hình bên dưới anh em có thể thấy.

  • (1) – Là tập các thao tác mà anh em vẫn hay sử dụng với git đó là commit, pull, push, fetch, branch, merge
  • (2) – Mình đang ở tab History thì chỗ này sẽ hiển thị thông tin các commit của repository (ai commit, commit nhánh nào, commit vào thời gian nào…)
  • (3) – Chỗ này sẽ hiển chi tiết thông tin của từng commit mà các bạn chọn ở bên trên (gồm có nội dung commit, tác giả, thời điểm)
  • (4) – Hiển thị chi tiết các nội dung thay đổi của file được commit.

sourcetree-cong-cu-truc-quan-hoa-cho-git (10)

#3. Lời kết

Trên thực tế thì việc sử dụng các công cụ mang tính trực quan hóa bao giờ cũng đem lại những ưu điểm về tính trải nghiệm người dùng.

Với những dự án có nhiều người làm chung thì việc sử dụng các công vụ quản lý phiên bản như Git là một sự lựa chọn gần như bắt buộc.

Vâng, và rõ ràng là việc sử dụng SourceTree giúp cho việc quản lý phiên bản mã nguồn với Git dễ dàng hơn rất nhiều. Hẹn gặp lại anh em trong các bài viết tiếp theo nha.

Nguyễn Đức Cảnh – Bài viết gốc tại blogchiasekienthuc.com

Có thể bạn quan tâm:

Xem thêm việc làm Developer hấp dẫn trên TopDev

Tham số hàm Python

Tham số hàm Python

Bài viết được sự cho phép của ucode.vn

Trong bài trước chúng ta đã tìm hiểu về hàm Python tích hợp sẵn và hàm Python do người dùng định nghĩa với số lượng tham số tùy biến. Bạn sẽ biết cách để định nghĩa hàm bằng cách sử dụng tham số mặc định, keyword và tham số tùy biến trong bài này.

Tùy vào việc bạn định nghĩa hàm Python theo cách nào mà chúng ta có thể gọi hàm khác nhau, tất nhiên, dù gọi hàm theo cách nào thì kết quả cuối cùng vẫn hợp lý và giống nhau.

Tham số của hàm Python

Trong bài hàm Python do người dùng định nghĩa, chúng ta đã biết cách định nghĩa và gọi một hàm, giống như ví dụ dưới đây:

def Xin_chao(ten,loi_chao):
 """Hàm Xin_chao chào một người
    với thông điệp cho trước """
    print("Xin chào",ten + ', ' + loi_chao)

Xin_chao("Nam","đọc bài trên uCode.vn vui vẻ nha!")

Khi chạy code trên, ta sẽ nhận được dòng chữ trên màn hình như sau:

Xin chào Nam, đọc bài trên uCode.vn vui vẻ nha!

Như bạn thấy, hàm Xin_chao() này có 2 tham số. Do đó, nếu chúng ta gọi hàm với 2 tham số, nó sẽ chạy “ngon lành” và không gặp phải thông báo lỗi nào.

Nếu gọi hàm với số tham số khác 2, trình thông dịch sẽ hiển thị thông báo lỗi. Nếu muốn, bạn có thể thử gọi hàm Xin_chao() trên với 1 tham số và không có tham số.

#Thông báo lỗi khi gọi hàm Xin_chao() với 1 tham số
TypeError: Xin_chao() missing 1 required positional argument: 'loi_chao'

#Thông báo lỗi khi gọi hàm Xin_chao() mà không có tham số
TypeError: Xin_chao() missing 2 required positional arguments: 'ten' and 'loi_chao'

Bên cạnh việc định nghĩa hàm với số tham số cố định, bạn có thể dùng những cách mà chúng tôi giới thiệu dưới đây để tạo số tham số tùy biến cho hàm:

Tuyển python lương cao trên TopDev

Tham số mặc định trong hàm Python

Trong Python, tham số của hàm có thể có giá trị mặc định. Chúng ta có thể cung cấp giá trị mặc định này cho một tham số bằng cách sử dụng toán tử gán (=) như ví dụ dưới đây:

def Xin_chao(ten, loi_chao = "đọc bài uCode.vn vui nha!"):
    """
    Hàm này chào một người với thông điệp cho trước.

    Nếu thông điệp không được cung cấp,
    nó sẽ được mặc định là "đọc bài uCode.vn vui nha!"
    """
print("Xin chào",ten + ', ' + loi_chao)

Xin_chao("Hải")
Xin_chao("Dũng","bạn khỏe không?")

Khi chạy code trên, ta có kết quả đầu ra như sau:

Xin chào Hải, đọc bài uCode.vn vui nha!
Xin chào Dũng, bạn khỏe không?

Trong hàm này, tham số ten không có giá trị mặc định và bắt buộc phải có khi gọi hàm. Tham số loi_chao có giá trị mặc định là “đọc bài uCode.vn vui nha!”. Vì vậy, khi gọi hàm bạn có thể cung cấp tham số này hoặc không. Nếu cung cấp tham số loi_chao, nó sẽ ghi đè lên giá trị mặc định.

  Hàm Python tích hợp sẵn

Trong một hàm, số lượng tham số có giá trị mặc định không bị giới hạn, nhưng một khi có tham số mặc định, tất cả các tham số nằm bên phải của tham số mặc định cũng phải có giá trị mặc định. Nghĩa là, các tham số không mặc định không thể nằm sau các tham số mặc định. Ví dụ, nếu bạn định nghĩa hàm Xin_chao() như sau:

def Xin_chao(loi_chao = “đọc bài uCode.vn vui nha!”,ten):

Thì sẽ nhận được thông báo lỗi:

SyntaxError: non-default argument follows default argument

Ứng tuyển python Hồ Chí Minh lương cao

Tham số keyword trong Python

Khi gọi một hàm với vài giá trị, những giá trị này sẽ được gán cho các tham số theo vị trí của chúng. Ví dụ, trong hàm Xin_chao() ở trên, khi gọi Xin_chao(“Dũng”,”bạn khỏe không?”), giá trị “Dũng” được gán cho tham số ten và giá trị “bạn khỏe không?” được gán cho loi_chao.

Python cho phép gọi hàm bằng các tham số keyword. Khi gọi hàm theo cách nay, thứ tự (vị trí) của tham số có thể thay đổi, nhưng kết quả vẫn hợp lệ và tương tự các cách gọi hàm khác.

# 2 tham số keyword
Xin_chao(ten = "Dũng",loi_chao = "bạn khỏe không?")
# 2 tham số keyword, thứ tự tham số thay đổi
Xin_chao(loi_chao = "bạn khỏe không?",ten = "Dũng")
# 1 tham số keyword, 1 theo vị trí
Xin_chao("Dũng",loi_chao = "bạn khỏe không?")

Như bạn thấy bên trên, có thể kết hợp các tham số theo keyword hoặc vị trí khi gọi hàm. Nhưng phải nhớ rằng các tham số keyword phải đi sau tham số theo vị trí. Nếu tham số theo vị trí ở sau tham số keyword bạn sẽ nhận được thông báo lỗi:

Xin_chao(ten = “Dũng”,”bạn khỏe không?”)

Thông báo lỗi:

SyntaxError: non-keyword argument after keyword argument
  Các lệnh: break, continue, pass trong Python

Tham số tùy biến trong hàm Python

Đôi khi, ta không biết trước số lượng tham số sẽ được truyền vào hàm, đó là lúc cần phải sử dụng cách gọi hàm với số lượng tham số tùy biến.

Trong định nghĩa hàm, ta sử dụng dấu hoa thị * trước tên tham số để biểu thị loại tham số, như ví dụ dưới đây:

def Xin_chao(*ten_chao):
    """
    Hàm này sẽ chào một danh sách người cho trước
    """
    for ten in ten_chao:
       print("Xin chào",ten)

Xin_chao("Hải","Hoa","Công","Sơn")

Khi chạy code trên ta được kết quả như sau:

Xin chào Hải
Xin chào Hoa
Xin chào Công
Xin chào Sơn

Ở đây, ta gọi hàm với nhiều tham số. Tham số này được “gói” lại thành một tuple trước khi truyền vào hàm. Bên trong hàm, chúng ta sử dụng vòng lặp for để lấy tất cả các tham số trong tuple.

Bài viết gốc được đăng tải tại ucode.vn

Xem thêm việc làm developer hấp dẫn trên TopDev

Ngành IT: Việc nhẹ lương cao?

lương IT

Bài viết được sự cho phép của tác giả Khiêm Lê

Trong những năm vừa qua, ngành Công nghệ thông tin (IT) vẫn luôn giữ được sức hút mạnh mẽ của mình. Điều đó được thể hiện qua số nguyện vọng đăng ký xét tuyển đại học ở các ngành Công nghệ thông tin luôn tăng qua các năm, đặc biệt là trong năm 2020 vừa qua.

Thông tin từ Cục quản lý chất lượng, Bộ GD&ĐT cho biết trong năm 2020 vừa qua có tất cả 2.490.171 nguyện vọng trên cả nước, trong đó có 640.638 nguyện vọng 1 và 519.449 nguyện vọng 2 xét tuyển vào các ngành Công nghệ thông tin. Có phải ngành IT được các bạn học sinh yêu thích là vì “việc nhẹ lương cao”?

Ngành IT: Việc nhẹ lương cao?

Có nhiều người không có kiến thức về IT, họ nghĩ rằng IT là chỉ cần ngồi trên máy tính, gõ phím 8 tiếng một ngày, không tốn nhiều sức mà vẫn có lương tháng 1000$. Điều này có đúng?

Không, rõ ràng là không! Việc gì cũng có cái giá của nó, bề ngoài của ngành IT mà người khác nhìn thấy chỉ đơn giản là gõ phím, nhưng chúng ta là dân IT, chúng ta biết nhiều hơn thế, chúng ta phải cho họ thấy chúng ta được đào tạo trường lớp, chúng ta làm công việc không phải ai cũng có thể học và làm được và mức lương tương xứng với công sức của chúng ta bỏ ra.

Đối với những bạn sinh viên năm 3 và năm 4, các bạn sẽ đi thực tập ở các công ty, startup, các bạn sẽ thấy, các bạn cũng học IT và mức lương thực tập rất là thấp kể cả khi bạn trở thành nhân viên chính thức.

Khi ra trường, bạn đi xin việc, mức lương mà bạn nhận được còn tùy thuộc vào công ty mà bạn ứng tuyển, số kinh nghiệm mà bạn có được (tính bằng năm), bằng cấp (bằng tiếng Anh điểm cao là một lợi thế), có kinh nghiệm quản lý (học qua các khóa học quản trị kinh doanh…) thì có thể dễ dàng leo lên các vị trí cao hơn,… Đủ để hiểu học IT ra trường rồi đi làm không phải ai cũng lương tháng 1000$.

Tính lương gross sang net chuẩn, trải nghiệm ngay!

Cần tố chất gì để học được IT

Ngành IT cũng không phải là một ngành dễ học. Điều kiện tiên quyết là các bạn phải có đam mê. Khi các bạn học mà không có đam mê, các bạn sẽ rất dễ chán nản và muốn từ bỏ sau khi bắt đầu chưa bao lâu và nó rất là phí thời gian của các bạn.

Học IT thì không cần quá thông minh hay là tài giỏi gì đâu. Các bạn chỉ cần chăm chỉ, siêng năng, học rồi thực hành, làm bài tập cho nhiều thì các bạn sẽ tự mình tích lũy được kiến thức và kinh nghiệm cho riêng mình.

Học IT cũng không cần giỏi toán, bạn chỉ cần biết toán phổ thông là được. Các bạn cần có tư duy logic, biết phán đoán tình huống và tỉ mỉ trong khi làm việc.

Ngành IT học những gì?

Ngành IT không phải là cứ cắm đầu vào máy tính và cào phím, trước khi gõ phím các bạn sẽ phải suy nghĩ rất nhiều chứ không phải tự dưng mà có code cho bạn gõ đâu. Có khi các bạn suy nghĩ mấy ngày trời rồi mới có ý tưởng để code.

Trường đại học sẽ đào tạo cho các bạn từ nền tảng đến chuyên môn mà các bạn theo học. Các môn toán cao cấp, chính trị, ngoại ngữ đương nhiên là bắt buộc. Các môn học nền tảng như Nhập môn lập trình, Lập trình hướng đối tượng (đa phần các trường đều dạy C/C++), Cấu trúc dữ liệu và giải thuật, Nhập môn mạng, Nhập môn cơ sở dữ liệu, Tổ chức và cấu trúc máy tính, Kiến trúc máy tính…

Sau khi học xong đại cương và nền tảng lập trình căn bản thì các bạn sẽ được học chuyên ngành. Trên đại học thầy cô sẽ không chỉ dạy hết những gì mà thầy cô biết được, mà chủ yếu, các bạn sẽ phải tự tìm và nghiên cứu thêm từ những gì mà thầy cô đã dạy.

Kỹ năng làm việc nhóm, giao tiếp cũng là thứ sau này quyết định đến mức lương của các bạn. Nếu như các bạn có khả năng giao tiếp tốt, làm việc nhóm tốt thì sau này các bạn có thể dễ dàng làm ở các chức cao hơn. Đương nhiên là trên đại học các bạn cũng sẽ được rèn dũa kỹ năng này.

Bên cạnh việc học tập, các bạn cũng có thể tham gia vào các cuộc thi, các nghiên cứu khoa học do trường tổ chức. Khi tham gia, các bạn có thể học hỏi thêm được rất nhiều thứ và còn được thầy cô hướng dẫn tận tình và cả kiếm được người yêu nữa ^^.

  3 workhack để duy trì năng lượng tích cực tại công sở cho kĩ sư phần mềm
  4 mẹo deal lương như ý với vị trí Product Manager

Học IT làm việc ở những vị trí nào?

Ngành IT rất đa dụng, các bạn chỉ cần có nền tảng cơ bản về lập trình là công ty có thể đem về đào tạo và sử dụng được rồi. Tuy nhiên, các bạn cần học cho đến nơi đến chốn, học tốt chuyên ngành thì sau này điều kiện làm việc của bạn sẽ tốt hơn.

Học xong ngành IT ra trường các bạn có thể trước tiên là làm giảng viên. Đúng vậy, đối với các bạn có kỹ năng giao tiếp, truyền đạt thông tin, tự tin trước đám đông thì có thể trở thành giảng viên. Tuy nhiên khá ít bạn chọn đi theo con đường này, chủ yếu là do không có đam mê giảng dạy và mức lương khá khiêm tốn so với bạn bè đi làm bên ngoài.

Các bạn có thể làm việc ở vị trí tư vấn, đánh giá, phân tích hệ thống. Việc này đòi hỏi sự hiểu biết và kinh nghiệm của các bạn trong lĩnh vực mà các bạn làm. Đương nhiên là các bạn phải hiểu nhiều hơn, biết nhiều hơn các bạn coder thì các bạn mới có thể làm được ở vị trí này.

Các bạn có thể làm coder, đây là công việc mà hầu như ai cũng làm trước khi leo lên các vị trí cao hơn. Coder là như kiểu phụ hồ, ai kêu gì làm đó ấy.

Cao hơn coder là developer. Bạn sẽ cũng code các tính năng được giao, nhưng bên cạnh đó bạn nghiên cứu và phát triển, bổ sung thêm các tính năng mới.

Các bạn có thể đi code dạo, code web, code app này kia, nói chung là học IT rất đa dụng. Và còn rất rất nhiều việc khác mà các bạn học IT xong có thể xin vào làm.

Khó khăn khi học IT

Áp lực khi học và làm trong ngành IT cũng chính là lý do khiến cho ngành IT có mức lương rất cao (nếu bạn đủ trình độ). Khi học ngành này, các bạn sẽ thường xuyên đụng mặt BUG nó là nguyên nhân chính thường xuyên làm cho các bạn cảm thấy cực kỳ khó chịu và áp lực. Có khi bạn mất cả ngày chỉ để fix 1 bug duy nhất.
Học IT là các bạn sẽ gắn nửa phần đời còn lại của mình với chiếc máy tính, là công cụ kiếm cơm chính của các bạn. Việc ngồi lâu trên máy sẽ dẫn đến tình trạng sức khỏe kém, cận thị và đặc biệt là bị trĩ. Hãy tìm cho mình một chế độ làm việc, nghĩ ngơi và tập luyện phù hợp.

Công việc đòi hỏi sự tập trung cao và đối với các bạn có hứng thú khi viết code, các bạn sẽ lãng quên mọi thức xung quanh. Do đó, các IT-er thường than là bị ế cũng vì chuyện đó. Không chỉ vậy, họ thậm chí là bỏ quên cả gia đình nữa nếu cứ mãi tập trung cho công việc.

Khi học IT thì việc bị deadline dí là chuyện như cơm bữa. Lúc học đại học các bạn sẽ bị deadline môn học dí, các đồ án, khóa luận… Sau khi đi làm các bạn sẽ bị deadline của sếp dí, thời gian bạn làm việc có thể hơn 8 tiếng 1 ngày.

Còn rất rất nhiều khó khăn khác khi học ngành IT. Tuy nhiên, điều quan trọng nhất khi học là các bạn phải có hiểu biết về ngành này trước và có đam mê, vì khi có đam mê, các bạn mới có thể học mà không bị nản, phát triển bản thân tốt hơn.

Tổng kết

Vậy là trong bài viết này, mình đã chia sẻ đến các bạn cái nhìn tổng quan về ngành Công nghệ thông tin, nhưng gì mà mình chia sẻ có thể nó không đúng vì mình chưa đi làm. Nếu các bạn có thấy nó sai thì hãy để lại bình luận để giúp mình phát triển bài viết tốt hơn nha.

Nếu các bạn thấy bài viết này hay, đừng quên chia sẻ nó cho mọi người cùng biết nha. Cảm ơn các bạn đã đọc bài viết!

Bài viết gốc được đăng tải tại khiemle.dev

Có thể bạn quan tâm:

Xem thêm Việc làm it job hấp dẫn trên TopDev

Polyfill là gì?

Polyfill là gì?

Bài viết được sự cho phép của tác giả Tino Phạm

Đây là thuật ngữ dùng để chỉ các đoạn code được dùng để cung cấp một chức năng (hoặc công nghệ) của các trình duyệt hiện đại cho các trình duyệt cũ. Thông qua đó, các trang web sử dụng các công nghệ mới (như HTML5) có thể chạy ổn định trên các trình duyệt cũ chưa hỗ trợ.

  Những Polyfill được sử dụng nhiều

  8 lợi thế khi sử dụng Polymer so với Angular và React

Một cách ngắn gọn: “polyfill (n): a JavaScript shim that replicates the standard API for older browsers”

Ví dụ các trình duyệt hiện nay đều hỗ trợ requestAnimationFrame, và để tạo một chức năng tương tự trên các trình duyệt cũ, ta có thể dùng đến hàm setTimeout() để thay thế.

varrequestAnimationFrame =
    window.requestAnimationFrame1       ||
          window.webkitRequestAnimationFrame1 ||
          window.mozRequestAnimationFrame1    ||
          window.oRequestAnimationFrame1      ||
          window.msRequestAnimationFrame1     ||
          function( callback ){ // polyfill
            window.setTimeout(callback, 1000 / 60);
Bạn có thể tìm hiều thêm về các polyfill phổ biến hiện nay ở đây: Những Polyfill được sử dụng nhiều
Bài viết gốc được đăng tải tại thangphampt.wordpress.com
Có thể bạn quan tâm:
Xem thêm Việc làm Developer hấp dẫn trên TopDev

Tình Hình Tuyển Dụng Lập Trình Viên Tại Việt Nam

tuyển dụng it

Tháng 6/2021, TopDev tiếp tục phát hành Vietnam IT Market Report 2021 – Developers Recruitment State. Theo đó, nhu cầu tuyển dụng ngành Công nghệ thông tin vẫn giữ nhịp tăng trưởng. Tuy vậy, thị trường tuyển dụng IT có xu hướng trở nên khó khăn hơn và có những thay đổi đáng kể về yêu cầu đối với nhân lực ngành IT. Thị trường có những chuyển động và phân loại rõ ràng về nhân lực CNTT ở nhiều cấp độ khác nhau, đòi hỏi sự thay đổi đến từ các ứng viên IT cũng như Nhà tuyển dụng.

Những thách thức cần phải vượt qua 

Nhu cầu tuyển dụng các vị trí IT cao cấp/linh hoạt đang có dấu hiệu tăng lên đáng kể (hơn 20% so với giai đoạn trước) đi kèm theo những yêu cầu khắt khe mới của doanh nghiệp, tương ứng với mức độ tăng nhanh về mức lương so với thị trường.

Trải qua nhiều sự ảnh hưởng từ đại dịch Covid-19, thị trường IT ngày càng đẩy mạnh việc áp dụng công nghệ đột phá, nâng cao cơ hội kinh doanh trong các lĩnh vực hiện đại: IT Automation/Robotics, Cybersecurity, DevOps, AI and Machine Learning, Blockchain,…

Ngoài những kỹ năng về kỹ thuật, kỹ năng mềm cũng đóng vai trò quan trọng trong việc đánh giá ứng viên IT. Kết quả từ TopDev trong Vietnam IT Market Report 2021 – Developers Recruitment State cho thấy 3 kỹ năng mềm hàng đầu cần có ở các Lập trình viên bao gồm: Khả năng thích ứng, tư duy phát triển và kỹ năng hợp tác/ làm việc nhóm.

Có thể nói, ngành CNTT với tốc độ thay đổi nhanh chóng cùng với đại dịch Covid-19 đã tạo áp lực lên khả năng thích ứng của mỗi lập trình viên, đòi hỏi họ phải có tư duy phát triển phù hợp để tự bảo vệ bản thân khỏi sự đào thải khốc liệt của các xu hướng và công nghệ mới.

Không chỉ vậy, với sự trỗi dậy của làn sóng công nghệ mới, Lập trình viên cần có sự hợp tác, liên kết với các thành viên trong cùng team và các bộ phận liên quan. Điều đó đóng vai trò then chốt trong quá trình vận hành kinh doanh và phát triển sản phẩm hiệu quả.

Mục tiêu sự nghiệp của các lập trình viên trong năm 2021

Vietnam IT Market Report 2021 – Developers Recruitment State thực hiện đã đưa ra kết quả khảo sát về những yếu tố quan trọng đối với Lập trình viên khi xem xét một offer công việc (không kể yếu tố mức lương) gồm có: Thách thức kỹ thuật/ vấn đề thú vị mà các lập trình viên sẽ giải quyết, Tech stack và cơ hội thăng tiến.

Theo đó, Lập trình viên đang quan tâm tìm đến những môi trường làm việc cho họ cơ hội được “đổi mới” và chinh phục những thử thách thú vị. Ngoài ra, các tài năng IT còn bị thu hút bởi Tech-stack của công ty – những ngôn ngữ lập trình và hệ sinh thái/ nền tảng mà công ty sử dụng trong những dự án của mình. Và yếu tố quan trọng thứ 3 chính là cơ hội thăng tiến, gặt hái những “trái ngọt’ xứng đáng với cống hiến của mình. 

Theo TopDev trong Vietnam IT Market Report 2021 – Developers Recruitment State, những lý do hàng đầu khiến Lập trình viên duy trì tại vị trí và nơi làm việc hiện tại của họ liên quan đến cơ hội tăng trưởng, đồng nghiệp và mức lương tiềm năng. Đây cũng chính là yếu tố hàng đầu giúp công ty giữ chân nhân tài CNTT cho doanh nghiệp của mình.

Mục tiêu sự nghiệp của các Lập trình viên ngày càng thể hiện rõ nhu cầu khẳng định giá trị của cá nhân, mong muốn cầu tiến và bứt phá giới hạn. Từ việc thấu hiểu mối quan tâm của lập trình viên, Nhân sự/Nhà tuyển dụng có thể tập trung phát triển chiến lược giao tiếp hiệu quả, thu hút và níu giữ các tài năng công nghệ tham gia phát triển công ty.

Hành vi tìm việc của Lập trình viên hiện nay

Thống kê kết quả khảo sát ứng viên IT năm 2021 cho thấy cứ 4 Lập trình viên thì chỉ có 1 người sẽ trở thành ứng viên chủ động trong 12 tháng tới. Đây là tín hiệu cho thấy các nhà tuyển dụng cần thay đổi hướng đi, tập trung đầu tư tiếp cận đối tượng tiềm năng để “thu hoạch” sau này, bởi số lượng Lập trình viên chủ động tìm kiếm việc làm đang chiếm tỉ lệ khá nhỏ trong tổng số lập trình viên tại Việt Nam. Đa số Lập trình viên tham gia khảo sát đang hướng tới việc dành từ 2-3 năm tiếp theo để tiếp tục gắn bó và phát triển tại công ty hiện tại của họ.

Thống kê về các kênh tìm kiếm việc làm IT của các Lập trình viên trong Vietnam IT Market Report 2021 – Developers Recruitment state cho thấy các website việc làm là địa chỉ ưa thích của các ứng viên IT, sau đó là các cộng đồng CNTT và kế tiếp là các kênh mạng xã hội (Facebook, LinkedIn). Các trang web tuyển dụng của công ty cũng nằm trong Top các kênh tìm kiếm việc làm được sử dụng bởi các Lập trình viên. Hackathon hay network cá nhân tuy không phổ biến bằng nhưng cũng là những kênh mà nhà tuyển dụng có thể cân nhắc khi muốn tiếp cận và tìm kiếm ứng viên CNTT.

Những kết quả trên cho thấy rằng đôi khi cuộc tuyển dụng thành công không cần trải qua các quy trình tuyển dụng chính thức mà đến từ mạng lưới nhà tuyển dụng (Người giới thiệu). Tuy nhiên, quy trình tuyển dụng nên sử dụng cách tiếp cận tiêu chuẩn để tìm và đánh giá ứng viên dựa trên những kỹ năng của họ. Tức là, những ứng viên được giới thiệu nên trải qua quá trình đánh giá và phỏng vấn giống như những ứng viên khác thay vì nhận sự giới thiệu. Điều này giúp hạn chế những đánh giá thiên vị – chủ quan” và thành kiến về sau cũng như giúp mở rộng đáng kể nguồn nhân lực chất lượng trong tương lai.

Quy trình tuyển dụng IT

Thị trường tuyển dụng CNTT ngày càng trở nên cạnh tranh, trải nghiệm của ứng viên trong quá trình tuyển dụng là một trong những yếu tố hàng đầu giúp doanh nghiệp thu hút và giữ chân nhân tài, đồng thời nâng cao Thương hiệu Nhà tuyển dụng. Phần lớn Lập trình viên gặp phải trường hợp bị giới thiệu vào những vị trí công việc không liên quan đến chuyên môn và phải thực hiện các câu hỏi phỏng vấn hoặc bài test không phù hợp. Điều này khiến Lập trình viên có trải nghiệm tồi tệ trong quy trình tuyển dụng, tạo nên rào cản cho nhà tuyển dụng khi muốn tìm kiếm ứng viên phù hợp.

Việc các chuyên viên Nhân sự/ Tuyển dụng không có kiến thức nền tảng về công nghệ hoặc sản phẩm/ dịch vụ của công ty cũng tạo ra cảm giác không tốt cho các lập trình viên. Trải qua quá trình đàm phán lương mà không được cung cấp đầy đủ thông tin về quy trình tuyển dụng hoặc có quá nhiều vòng phỏng vấn cũng tạo ra cảm xúc tiêu cực cho ứng viên.

Vietnam IT Market Report 2021 – Developers Recruitment State cũng đưa ra 3 lý do hàng đầu khiến các lập trình viên từ chối lời mời làm việc: Offer không phù hợp (trách nhiệm và mức lương), chính sách đãi ngộ & phúc lợi và thiếu cơ hội phát triển/ đóng góp tại công ty. Ngoài ra nhà tuyển dụng cũng cần lưu ý về các yếu tố: Tech stack không mong muốn, vai trò và trách nhiệm của vị trí không rõ ràng, làm việc thiếu linh hoạt, các vấn đề kinh doanh / kỹ thuật không mong muốn và cuối cùng là danh tiếng của công ty.

Mối quan tâm của Nhân sự/ Nhà tuyển dụng ở thời điểm hiện tại

Việc số lượng lập trình viên được đào tạo mỗi năm không đủ đáp ứng nhu cầu nhân lực CNTT ngày càng tăng đã tạo ra nhiều thách thức và cạnh tranh cho ngành tuyển dụng IT. Các chuyên gia nhân sự tham gia cuộc khảo sát đã đề cập đến hầu hết những khó khăn khi phụ trách tuyển dụng lập trình viên. Phần lớn Nhân sự/ Nhà tuyển dụng gặp phải khó khăn trong việc tìm kiếm ứng viên có năng lực hay phải nghiên cứu, tìm hiểu yêu cầu tuyển dụng các vị trí IT và hoàn thành các mục tiêu tuyển dụng IT trong khung thời gian quy định.

Sự thật là nguồn cung nhân lực trong lĩnh vực CNTT vẫn chưa đáp ứng được nhu cầu và tốc độ phát triển của ngành trong thời gian tới. Dự kiến năm 2021, các công ty công nghệ sẽ tiếp tục cạnh tranh gay gắt hơn nhiều để lấp đầy các vị trí IT còn thiếu.

Vietnam IT Market Report 2021 – Developers Recruitment State do TopDev thực hiện đã nói lên ưu tiên hàng đầu của các Nhà tuyển dụng/ Nhân sự IT trong năm 2021 là xây dựng thương hiệu nhà tuyển dụng trong cộng đồng công nghệ. Ngoài ra, việc mở rộng nguồn nhân tài IT và cải thiện kinh nghiệm của ứng viên cũng là yếu tố được quan tâm không kém.

Trên đây là một số khía cạnh và đặc điểm nổi bật của tình hình tuyển dụng IT tại Việt Nam trong năm 2021. Để tìm hiểu thêm nhiều thông tin và chỉ số khác của ngành Công nghệ thông tin, mời bạn tải Vietnam IT Market Report 2021 – Developers Recruitment State do TopDev phát hành bên dưới:

tải ngay báo cáo


Tháng 10 &11 – thời điểm tốt cuối cùng trong năm để hoàn thành kế hoạch tuyển dụng năm 2021 vì vài tháng tới cận Tết ứng viên sẽ quan tâm lương tháng 13 /thưởng Tết ngại chuyển việc. TopDev xin gửi đến Quý công ty những ưu đãi nhằm tối ưu chi phí thích hợp cho các bên đang bị hạn chế về ngân sách đợt cuối năm lên đến 30% tại đây https://topdev.vn/recruit. Cần thêm thông tin về báo giá số lượng tin đăng nhiều hơn, công ty liên hệ hotline 028.6273.3496 để nhận ưu đãi đặc biệt.

04 điểm Nhà tuyển dụng quan tâm nhất về TopDev:

1. Cơ hội tiếp cận kho dữ liệu 335.000 ứng viên IT
2. 60 ngày đăng tin (30 ngày chính thức và 30 ngày bảo hành)
3. Tin đăng hiển thị cả trang chủ và trang tìm việc
4. Nhận 02 nguồn CV: ứng viên tự apply và ứng viên TopDev giới thiệu sang

tìm hiểu ngay

 

Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC

Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC

Bài viết được sự cho phép của tác giả Giang Phan

Trong bài này tôi sẽ hướng dẫn các bạn sử dụng kết nối vào database sử dụng Java JDBC.

  Hibernate là gì? Sao phải dùng nó thay JDBC?
  10 Java Web Framework tốt nhất

JDBC là gì?

JDBC (Java Database Connectivity) là một API chuẩn dùng để tương tác với các loại cơ sở dữ liệu quan hệ (database relationship). JDBC bao gồm một tập hợp các class và các interface dùng cho ứng dụng Java có thể giao tiếp với các cơ sở dữ liệu (database) khác nhau.

JDBC có thể làm việc với bất kỳ cơ sở dữ liệu (MySQLPostgreSQLOracleSQL Server, …) dựa vào một Driver được cung cấp.

JDBC API bao gồm hai package chính:

  • java.sql : là một phần của Java standard.
  • javax.sql : là một phần của Java enterprise.

Các thành phần của JDBC

  • DriverManager : là một class quản lý danh sách các Driver (database drivers). Các yêu cầu kết nối từ ứng dụng Java sẽ được class này tìm kiếm Driver phù hợp đầu tiên để thiết lập kết nối với cơ sở dữ liệu.
  • Driver: là một interface dùng để xử lý các giao tiếp với cơ sở dữ liệu. Thông thường ứng dụng Java sẽ không giao tiếp trực tiếp với class này mà thông qua DriverManager.
  • Connection : là một interface cung cấp tất cả các method cần thiết cho việc giao tiếp với database. Interface này chứa nhiều phương thức đa dạng để tạo kết nối với một Database. Tất cả các thông tin giao tiếp với cơ sở dữ liệu chỉ có thể thông qua đối tượng Connection. Một Connection đại diện cho một phiên (session) làm việc với cơ sở dữ liệu.
  • Statement : là một interface cho phép gửi các câu lệnh SQL tới Database. Ngoài ra, một số Interface kết thừa từ nó cung thêm các tham số để thực thi các thủ tục đã được lưu trữ (stored procedure).
  • ResultSet : đại diện cho tập hợp các bản ghi (record) có được sau khi thực hiện truy vấn (query).
  • SQLException : class này xử lý bất cứ lỗi nào xuất hiện trong khi làm việc với Database.

Kết nối database với Java JDBC

Để làm việc với JDBC, bạn cần cài đặt Java và một cơ sở dữ liệu (database). Bạn có thể sử dụng bất kỳ database nào, chẳng hạn MySQL.

Như đã giới thiệu ở trên, để làm việc với cơ sở dữ liệu từ Java cần phải có Driver. Trong JDBC API, chúng ta có java.sql.Driver, đây là một interface có sẵn trong JDK. Mỗi hệ quản trị cần cài đặt một Driver riêng tương ứng với cơ sở dữ liệu đó. Như vậy công việc cần phải làm là download thư viện Driver ứng với loại Database mong muốn sử dụng.

Download Driver

Oracle Database JDBC Driver

Truy cập vào link: https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html

Chọn phiên bản ojdbc[xx].jar tương ứng với phiên bản sử dụng. Chẳng hạn ojdbc6.jar sử dụng cho JDK8, JDK7, và JDK6.

Nếu sử dụng maven project, các bạn có thể add dependency tương ứng ở link sau: https://mvnrepository.com/artifact/com.oracle.jdbc

<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc14 --> <dependency>     <groupId>com.oracle.jdbc</groupId>     <artifactId>ojdbc14</artifactId>     <version>12.2.0.1</version> </dependency>

MySQL Database JDBC Driver

Các bạn thêm maven dependency hoặc download gói jar tương ứng tại đây: https://mvnrepository.com/artifact/mysql/mysql-connector-java

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.17</version> </dependency>

SQL Server (JTDS) Database JDBC Driver

Các bạn thêm maven dependency hoặc download gói jar tương ứng tại đây: https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds

<!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency>     <groupId>net.sourceforge.jtds</groupId>     <artifactId>jtds</artifactId>     <version>1.3.1</version> </dependency>

PostgreSQL Database JDBC Driver

Các bạn thêm maven dependency hoặc download gói jar tương ứng tại đây:  https://mvnrepository.com/artifact/org.postgresql/postgresql

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency>     <groupId>org.postgresql</groupId>     <artifactId>postgresql</artifactId>     <version>42.2.7</version> </dependency>

MariaDB Database JDBC Driver

Các bạn thêm maven dependency hoặc download gói jar tương ứng tại đây:  https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client --> <dependency>     <groupId>org.mariadb.jdbc</groupId>     <artifactId>mariadb-java-client</artifactId>     <version>2.4.4</version> </dependency>

MongoDB Database JDBC Driver

Các bạn thêm maven dependency hoặc download gói jar tương ứng tại đây: https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver

<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver --> <dependency>     <groupId>org.mongodb</groupId>     <artifactId>mongo-java-driver</artifactId>     <version>3.11.0</version> </dependency>

Kết nối database từ Java

Các bước giao tiếp giữa chương trình Java và Database:

  • Load Driver.
  • Tạo kết nối (Open Connection).
  • Tạo câu lệnh truy vấn SQL (Statement).
  • Thực thi câu lệnh truy vấn SQL (Execute Query).
  • Đóng kết nối (Close Connection).

Load Driver

Để kết nối với database, chúng ta cần load driver và register nó với ứng dụng. Có 2 cách để thực hiện:

  • Class.forName() : load class Driver trong memory tại thời điểm runtime. Để đăng ký gọi phương thức: Class.forName(“driverName”);
  • DriverManager.registerDriver() : DriverManager là class có sẵn trong Java. Để đăng ký gọi phương thức: DriverManager.registerDriver(new DriverName());

Chẳng hạn để kết nối với MySQL database, ta đăng ký như sau:

Class.forName("com.mysql.jdbc.Driver"); // Or DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

Tạo kết nối (Open Connection)

Sau khi đã load Driver, chúng ta tạo connection:

DriverManager.getConnection(connectionURL); // Or DriverManager.getConnection(connectionURL, userName, password);

Ví dụ với MySQL:

// Pattern String connectionURL = "jdbc:mysql://hostname:port/dbname"; // Example String connectionURL = "jdbc:mysql://hostname:3306/jdbcdemo"; Connection con = DriverManager.getConnection(connectionURL, username, password);

Tạo câu lệnh truy vấn SQL (Statement)

Sau khi một kết nối được thiết lập, chúng ta có thể tương tác với cơ sở dữ liệu.

Các interface JDBCStatement, CallableStatement và PreparedStatement xác định các phương thức cho phép gửi các lệnh SQL và nhận dữ liệu từ cơ sở dữ liệu.

Statement st = con.createStatement();

Thực thi câu lệnh truy vấn SQL (Execute Query)

Bây giờ đến phần quan trọng nhất, đó là thực hiện câu lệnh truy vấn SQL (execute query). Như chúng ta biết, có thể có nhiều loại truy vấn. Một trong số đó là:

  • Truy vấn để cập nhật (update) / chèn (insert)/ xóa (delete) trong cơ sở dữ liệu.
  • Truy vấn để lấy dữ liệu (select).

Statement cung cấp một số phương thức để thực thi truy vấn SQL tương ứng với các loại trên:

  • Phương thức execQuery() : được sử dụng để thực hiện các truy vấn truy xuất giá trị từ cơ sở dữ liệu (select). Phương thức này trả về đối tượng ResultSet có thể được sử dụng để lấy tất cả các dữ liệu (record) của bảng.
  • Phương thức execUpdate() : được sử dụng để thực hiện các truy vấn insert/ update/ delete.
  • Phương thức execute() : có thể thực thi cả 2 trường hợp trên. Nếu phương thức statement.getUpdateCount() trả về số lượng record bị affect.
    • Nếu giá trị > 0, có nghĩa là thực thi các câu lệnh insert/ update/ delete.
    • Nếu giá trị = 0, có nghĩa là thực thi các câu lệnh insert/ update/ delete không có dòng nào bị ảnh hưởng hoặc thực thi câu lệnh cập nhật data structure.
    • Nếu giá trị = -1, có nghĩa là thực thi câu lệnh select. Khi đó, có thể gọi tiếp lệnh statement.getResultSet() để lấy ResultSet.

Ví dụ:

int numberRowsAffected = st.executeUpdate(sqlInsert); if (numberRowsAffected == 0) {     System.out.println("insertion failed"); } else {     System.out.println("inserted successfully : " + sqlInsert); }

Đóng kết nối (Close Connection)

Cuối cùng, sau khi đã sử dụng chúng ta cần phải gọi phương thức close() để đóng kết nối (Connection) và giải phóng tài nguyên.

Bằng cách đóng kết nối, các đối tượng của Statement và ResultSet sẽ được đóng tự động. Tuy nhiên, chúng ta nên tập thói quen close() Statement sau khi sử dụng hay vì chờ đợi điều đó xảy ra khi nó tự động bị đóng để giải phóng tài nguyên. Đặc biệt nếu chúng ta thực thi Statement trong vòng lặp, thì có thể sẽ gặp vấn đề về thiếu tài nguyên sử dụng nếu chờ đợi nó tự động đóng.

Khi Statement được close() thì ResultSet của Statement cũng được close.

Chương trình Java kết nối cơ sử dữ liệu sử dụng JDBC API

Chương trình bên dưới chỉ đơn giản thực hiện kết nối đến cơ sở dữ liệu MySQL và thêm một dòng dữ liệu vào bảng user.

package com.gpcoder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class HelloJdbc {     private static final String hostName = "localhost";     private static final String dbName = "jdbcdemo";     private static final String userName = "root";     private static final String password = "";     // jdbc:mysql://hostname:port/dbname     private static final String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;     public static void main(String[] args) throws ClassNotFoundException, SQLException {         // 1. Load Driver         // Class.forName("com.mysql.jdbc.Driver");         DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());         // 2. Open connection         Connection con = DriverManager.getConnection(connectionURL, userName, password);         // 3. Create Statement         Statement st = con.createStatement();         // 4. Execute query         String sqlInsert = "INSERT INTO user(username, password, createdDAte) VALUE('gpcoder', '123', now());";         int numberRowsAffected = st.executeUpdate(sqlInsert);         if (numberRowsAffected == 0) {             System.out.println("insertion failed");         } else {             System.out.println("inserted successfully : " + numberRowsAffected);         }         st.close();            // 5. Close connection         con.close();     } }

Thực thi chương trình trên ta có kết quả sau:

inserted successfully : 1

Lưu ý: các bạn nên đặt câu lệnh close() trong finally block trong câu lệnh try-catch-finally hoặc sử dụng tính năng mới try-with-resource để đảm bảo resource luôn được close sau khi sử dụng. Ví dụ:

package com.gpcoder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class HelloJdbcWithJava8 {     private static final String hostName = "localhost";     private static final String dbName = "jdbcdemo";     private static final String userName = "root";     private static final String password = "";     // jdbc:mysql://hostname:port/dbname     private static final String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;     public static void main(String[] args) throws ClassNotFoundException, SQLException {         // 1. Load Driver         // Class.forName("com.mysql.jdbc.Driver");         DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
         try (             // 2. Open connection             Connection con = DriverManager.getConnection(connectionURL, userName, password);             // 3. Create Statement             Statement st = con.createStatement();         ) {                          // 4. Execute query             String sqlInsert = "INSERT INTO user(username, password, createdDAte) VALUE('gpcoder', '123', now());";             int numberRowsAffected = st.executeUpdate(sqlInsert);             if (numberRowsAffected == 0) {                 System.out.println("insertion failed");             } else {                 System.out.println("inserted successfully : " + numberRowsAffected);             }         }         // 5. Close connection: will be auto closed by try-with-resource     } }

Trên đây là một số kiến thức cơ bản về kết nối cơ sở dữ liệu với Java JDBC. Trong bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu sâu hơn về các API của JDBC.

Tài liệu tham khảo:

Bài viết gốc được đăng tải tại gpcoder.com

Có thể bạn quan tâm:

Xem thêm Việc làm Java hấp dẫn trên TopDev

Hướng dẫn viết theme WordPress toàn tập – phần 1

Hướng dẫn viết theme WordPress toàn tập phần 1

Bài viết được sự cho phép của tác giả Trần Anh Tuấn

Bạn muốn tự viết một theme WordPress cho riêng bạn hay là làm freelance viết theme cho khách hàng theo yêu cầu kiếm thêm thu nhập mà không muốn dùng theme miễn phí, hoặc có phí nhưng không có tiền mua hay khó tùy chỉnh.

Rồi bạn có tìm hiểu qua các cách viết theme WordPress nhưng vẫn còn mơ hồ. Chưa biết bắt đầu như thế nào, code ra sao, mặc dầu bạn có kiến thức về WP, PHP…

Đừng lo lắng vì serie hướng dẫn viết theme WordPress toàn tập này của mình sẽ giúp các bạn có thể tự viết theme WordPress từ đầu luôn. Mình và các bạn sẽ cùng nhau viết một theme WordPress hoàn chỉnh để các bạn có thể hình dung nó như thế nào luôn nhé.

Trước khi bắt tay vào làm thì các bạn có thể nhấn vào đây để coi sản phẩm mà chúng ta sẽ cố gắng hoàn thành nà. Cũng như một vài yêu cầu và hướng dẫn cài đặt trước khi đi vào chi tiết ở bài sau.

  10 theme Sublime Text tốt nhất
  Hướng dẫn lập trình theme woocommerce từ a đến z

# Yêu cầu

Để có thể hiểu và viết được theme wordpress thì các bạn phải có kiến thức cơ bản về HTML, CSS, JS, PHP và WordPress nhé. Các bạn chưa có kiến thức về PHP thì các bạn có thể học tại freetuts còn WordPress thì các bạn có thể tham khảo khoá học WordPress trong vòng 7 tiếng của anh Duy Võ trên kt.city nhé.

hướng dẫn viết theme wordpress

Nếu các bạn chưa nắm cơ bản các kiến thức trên thì các bạn sẽ không hiểu gì hết và rất khó để theo dõi serie này. Vì thế mình khuyến khích các bạn nên có kiến thức theo yêu cầu trước nhé. Không là không hiểu gì luôn ấy.

Ngoài ra để có thể chạy được WordPress trên máy tính thì chúng ta cần cài đặt Xampp. Các bạn nhấn vào đây để tải bản Xampp mới nhất cho Windows, sau khi tải về và cài đặt như một phần mềm bình thường.

Lưu ý: Mình không hướng dẫn cài Xampp vì nó cài đặt rất đơn giản, các bạn có thể Google để tìm hướng dẫn nhé. Hầu hết là tải về rồi sau đó chạy setup và cứ Next Next thôi.

# Tạo Database

Sau khi đã cài đặt Xampp thành công, thì bước tiếp theo chúng ta cần làm đó là mở phần mềm Xampp lên sau đó nhấn vào hai nút trên cùng để khởi động Apache và MySQL. Nếu cả hai đều chuyển sang màu xanh tức là đã thành công.

DÀNH CHO BẠN:

Mình có khoá học HTML CSS từ cơ bản tới nâng cao cho người mới, nếu bạn quan tâm thì bạn có thể học thử miễn phí bằng việc nhấn vào đây nha.

Sau khi khởi động xong, bạn hãy truy cập vào website với địa chỉ là http://localhost/dashboard/ sẽ thấy nó hiển thị ra trang giới thiệu XAMPP như hình dưới.

hướng dẫn tạo database wp

Để chạy được WordPress thì chúng ta phải có Database, chúng ta sẽ truy cập vào phpMyAdmin trên localhost, các bạn nhấn vào phpMyAdmin như hình

Sau đó các bạn nhấn vào mục cơ sở dữ liệu(Database) tạo một Database tên là gì tùy các bạn nhé, ở đây mình đặt là wp-tut, chọn kiểu là utf8_unicode_ci nhé sau đó các bạn nhấn Tạo

Ta được kết quả

# Cài đặt WordPress

Các bạn vào thư mục cài đặt của Xampp mà các bạn đã cài đặt, rồi vào thư mục htdocs, ở đây chúng ta sẽ tạo một thư mục có tên là wp-tut(các bạn có thể đặt sao tùy thích)

Sau đó các bạn vào trang wordpress.org tại đây để download source code WordPress về nhé. Mình sẽ tải bản 4.9.8 vì nó ổn định, hiện tại WordPress mới update lên version 5.0.2 rồi nhưng vì mới nên chắc còn lỗi nhiều.

Sau khi tải xong các bạn giải nén và copy toàn bộ như hình dưới đây vào thư mục wp-tut mà chúng ta đã tạo ở trên nhé.

Giờ là bước quan trọng, các bạn truy cập vào locahost/wp-tut (tên thư mục các bạn tạo khi nãy) nó sẽ ra như hình này. Các bạn chọn ngôn ngữ, ở đây mình sẽ chọn English và bấm Continue

Sau đó nó hiện ra một đống thông tin, các bạn chỉ cần nhấn nút “Let’s go” ở dưới là được.

Ở mục tiếp theo các bạn điền vào tên Cơ sở dữ liệu (Database) mà ta đã tạo khi nãy, ở đây mình tạo là wp-tut, Username các bạn nhập vào là root, Password các bạn để trống và hai trường còn lại các bạn để nguyên nhé, rồi ta nhấn Submit.

Sau đó chúng ta sẽ có kết quả như hình này, và các bạn nhấn Run installation để cài đặt nhé.

Sau khi nhấn nó lại hiện ra một đống thông tin như Site Title, Username, Password, Email cho website của chúng ta. Các bạn điền sao cũng được vì đang làm ở dưới máy mà. Mình điền đại như thế này và nhấn Install Worpress.

Chúng ta sẽ được kết quả thành công như thế này, và nhấn login để đăng nhập vào nhé. Thế là xong phần cài đặt WordPress trên máy tính.

# Cài đặt starter theme

Để viết theme WordPress từ đầu thì chúng ta sẽ dùng Starter Theme tức là Theme có sẵn cấu trúc chuẩn WordPress rồi nhưng chưa có code gì nhiều. Mình sẽ dùng Underscore Starter Theme. Các bạn có thể nhấn vào đây để tải về nhé.

Khi các bạn nhấn vào nó sẽ ra như trên, các bạn nhập vào tên Theme là được rồi, ở đây mình nhập là maker sau đó nhấn Generate là nó tự động tải về máy. Các bạn tải về rồi sau đó bỏ vào thư mục \htdocs\wp-tut\wp-content\themes rồi sau đó giải nén là được nhé.

Và chúng ta sẽ vào wp-admin của WordPress nãy chúng ta đã cài đặt chọn mục Appearance (Giao diện nếu lúc cài đặt bạn chọn Tiếng Việt) các bạn chọn mục Themes. Các Themes sẽ hiện ra và có cả cái maker mà chúng ta vừa thêm vào, các bạn chọn active là xong

Sau đó các bạn ra trang chủ tức là localhost/wp-tut sẽ có kết quả trông như thế này. Như vậy là ổn rồi. Ở bài sau chúng ta sẽ tiến hành viết theme WordPress step by step nhé. Chúc các bạn một ngày tốt lành nà. Ngoài ra nếu các bạn muốn học WordPress cơ bản chỉn chu từ đầu thì đừng quên tham khảo khoá học WordPress của anh Duy võ trên kt.city nhé

Bài viết gốc được đăng tải tại evondev.com

Có thể bạn quan tâm:

Xem thêm Tuyển dụng lập trình WordPress hấp dẫn trên TopDev

Giới thiệu về Gulp JS

Giới thiệu về Gulp JS

Bài viết được sự cho phép của tác giả Tino Phạm

1. Gulp là cái gì vậy?

Gulp được biết đến như là một Task Runner, nghĩa là nó sẽ thực hiện các nhiệm vụ mà developer đặt ra cho nó một cách tự động.
OK, ví dụ  thế này nhé: bạn đang tham gia một dự án web và trong quá trình phát triển dự án bạn muốn là: mỗi khi bạn chỉnh sửa các file html, css, hoặc là js gì bạn sẽ không cần phải nhấn F5 (refresh) browser cho mất công nữa, bạn cũng muốn minify các file css và js khi bạn release package, và bạn còn muốn làm nhiều thứ khi phát triển dự án của mình. Vậy Gulp sẽ giúp bạn định nghĩa các tasks và tự động thực hiện các tasks đó cho bạn.
Lợi ích của Gulp là: giúp bạn tự động minify, complile, reload browser,… và nhiều thứ khác rất hay nữa.

  10 Công ty hàng đầu thế giới sử dụng Node.js
  8 lợi thế khi sử dụng Polymer so với Angular và React

2. Hướng dẫn cài đặt

Gulp hoạt động  trên môi trường Nodejs nên việc đầu tiên là bạn phải cài đặt Node.js và npm
– Download và cài đặt Node.js tại đây. Cài Node.js bao gồm cả npm.
– Mở hộp thoại cmd trong window và gõ lệnh: npm install gulp -g
Vậy là xong việc cài đặt Gulp rồi.
Giải thích lệnh trong npm: npm có 3 loại install
– install -g: là global, như thế e có thể truy cập tới package vừa cài ở bất kì đâu trong hệ thống
– install –save: là khi install, đồng thời save lại tên package đó vào package.json ở trường dependencies, thường dùng nếu package đó cần dùng cho product lúc runtime (ví dụ như cài các gói: express, socket.io,..)
– install –save-dev: là khi install, cũng save vô package.json nhưng ở trường dev-dependencies, ý nói tới các package mà e chỉ cần lúc development thôi chứ lên môi trường production thì ko cần nữa, ví dụ như gulp hay webpack, nodemon,…

3. Hướng dẫn sử dụng Gulp

Bạn tạo một file tên là gulpfile.js trong thự mục gốc của dự án. Nội dung cơ bản như sau:

var gulp = require('gulp');
gulp.task('default', function(){
         //Default task code
});

– Để chạy file gulp này, bạn mở command line/terminal và gõ lệnh: gulp
– Bạn cũng có thể tạo nhiều tasks mới tương tự code tạo task ‘default’ và chỉ cần đổi tên ‘default’ thành tên task của bạn. ví dụ:

gulp.task(‘tên-task’function() {
            // xử lý task
});

4. Gulp làm việc thế nào?

Một file gulp được chia thành  từng task và được định nghĩa bằng khối lệnh
gulp.task(‘tên-task’function() // xử lý task });

Mặc định khi chạy lệnh gulp trong terminal/command line không kèm theo tham số nào (như ví dụ trên), gulp sẽ tự động chạy task mặc định là default.

Khi muốn chạy một task cụ thể nào đó, ta gõ lệnh:
gulp tên-task

5. Sử dụng Gulp để tạo server ảo và tự động refresh server

Việc này có nghĩa là gulp sẽ tự động refresh lại trình duyệt ngay sau khi bạn có  bất cứ thay đổi nào với các file javascript, html hay css trong dự án của bạn.

Để làm được việc này, chúng ta cần cài đặt BrowserSync. Đây là module dùng để thực hiện việc refresh browser đang mở, đồng bộ scroll, form,…

Mở command line/terminal và gõ lệnh: npm install browser-sync –save-dev

Tiếp theo, tạo file gulpfile.js như các ví dụ trên.

Sau đó, mở gulpfile.js và thêm code sau:

var browserSync = require(‘browser-sync’);

Tạo một task mới với tên là ‘detect-changed’ theo cú pháp:

gulp.task(‘serve’, [], function () {

});

Trong task này, chúng ta tiến hành khởi động server:

browserSync({
    notify: false
    server: {
            baseDir:  ‘.’
       }

});

Câu lệnh trên khởi động một web server đơn giản và chạy ở địa chỉ mặc định là http://localhost:port, với thư mục root là ngay tại thư mục hiện hành của file gulpfile.js

Sau khi khởi động server, việc tiếp theo sẽ là watch (theo dõi) các file javascript, css và html (hoặc bất kì file nào bạn muốn), khi có bất kì thay đổi nào trên các file này thì gọi lệnh browserSync.reload để refresh trình duyệt đang mở.

gulp.watch([‘.html’], browserSync.reload);
gulp.watch([‘js/.js’], browserSync.reload);

gulp.watch([‘css/*.css’], browserSync.reload);
Và đây là file gulpfile.js hoàn chỉnh:

var gulp = require(‘gulp’);
var browserSync = require(‘browser-sync’);
var reload = browserSync.reload;

gulp.task(‘default’, [], function () {
console.log(“reload server”);
});

gulp.task(‘detect-changed’, [], function () {
browserSync({
notify: false,
server: {
baseDir: ‘.’
}
});

gulp.watch([‘*.html’], reload);
gulp.watch([‘js/*.js’], reload);
gulp.watch([‘css/*.css’], reload);
});

Để chạy file gulp này, chúng ta gõ lệnh:

gulp serve
Trình duyệt sẽ tự bật lên với địa chỉ http://localhost:port

Bây giờ, bạn thử sửa một file html hoặc javscript, css bất kì, và lưu lại, các trình duyệt đang mở sẽ tự động refresh lại và cập nhật thay đổi đó ngay lập tức.

Trên đây chỉ là một ví dụ đơn giản cho việc ứng dụng lệnh watch của gulp. Ngoài ra bạn nên tham khảo thêm tài liệu của Gulp tại đây:

https://github.com/gulpjs/gulp/tree/master/docs
http://labs.septeni-technology.jp/none/gulp-la-gi/
https://techmaster.vn/posts/34204/gulp-cho-nguoi-moi-bat-dau

Bài viết gốc được đăng tải tại thangphampt.wordpress.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Gửi STOMP message tới một user cụ thể với Spring WebSocket

Gửi STOMP message tới một user cụ thể với Spring WebSocket

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Trong bài viết trước, mình đã hướng dẫn các bạn cách hiện thực WebSocket sử dụng Spring WebSocket. Trong ví dụ của bài viết đó, tất cả các user subscribe vào “/topic/messages” sẽ nhận được các message được publish vào topic này. Trong trường hợp các bạn muốn chỉ gửi đến một user cụ thế nào đó thì làm thế nào? Trong bài viết này, mình sẽ hướng dẫn các bạn cách gửi STOMP message tới một user cụ thể với Spring WebSocket các bạn nhé!

  Discord đã lưu trữ hàng tỉ messages mỗi ngày như thế nào
  Giới thiệu JMS – Java Message Services

Mình cũng tạo một Spring Boot project với Web và WebSocket dependency như bài viết trước.

Kết quả như sau:

Gửi STOMP message tới một user cụ thể với Spring WebSocket

Mình cũng khai báo để sử dụng WebJars với JQuerySocketJS client và Stomp WebSocket dependencies như sau:

<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>jquery</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>sockjs-client</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>stomp-websocket</artifactId>
<version>2.3.4</version>
</dependency>

Tương tự như bài viết trước, mình cũng tạo mới một class để cấu hình WebSocket như sau:

package com.huongdanjava.springboot.websocket;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("queue");
registry.setApplicationDestinationPrefixes("/app");
registry.setUserDestinationPrefix("/users");
}
}

Điểm khác biệt ở đây:

  • Thứ nhất là mình để giá trị của tham số trong phương thức enableSimpleBroker() là “queue”, mục đích là để thể hiện mục đích của ví dụ thôi, point-to-point, chứ tên gì cũng được nha các bạn!
  • Cái chính mà các bạn cần biết là để send một message tới user cụ thể nào đó, chúng ta sẽ send message tới 1 endpoint mặc định bắt đầu với “/user”, ví dụ như “/user/queue/messages” chẳng hạn. Chúng ta có thể thay đổi prefix mặc định này bằng cách sử dụng phương thức setUserDestinationPrefix() của đối tượng MessageBrokerRegistry như mình làm ở trên. Trong ví dụ của mình thì bây giờ, chúng ta cần message tới endpoint “/users/queue/messages” chẳng hạn.

Để handle message từ client gửi tới STOMP endpoint của WebSocket server, mình cũng tạo mới một class MessageController với nội dung như sau:

package com.huongdanjava.springboot.websocket;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;

@Controller
public class MessageController {

@Autowired
private SimpMessagingTemplate simpMessagingTemplate;

@MessageMapping("/hello")
public void send(SimpMessageHeaderAccessor sha, @Payload String username) {
String message = "Hello from " + sha.getUser().getName();

simpMessagingTemplate.convertAndSendToUser(username, "/queue/messages", message);
}
}

Mình cũng sử dụng @MessageMapping để định nghĩa mapping method handle cho request “/hello” tới WebSocket server.

Điểm khác biệt ở đây là chúng ta không sử dụng annotation @SendTo như bài viết trước nữa mà sẽ sử dụng class SimpMessagingTemplate với phương thức convertAndSendToUser() để send message tới một user cụ thể.

Có nhiều phương thức overload cho phương thức convertAndSendToUser() này:

Gửi STOMP message tới một user cụ thể với Spring WebSocket

Mình chỉ đang sử dụng một phương thức đơn giản với 3 tham số: user, destination và payload.

Tham số thứ 2, destination, là endpoint mà client cần subscribe, tất nhiên là cần phải thêm prefix mà chúng ta đã cấu hình trong class WebSocketConfiguration nữa nha các bạn. Trong ví dụ của mình thì các client cần subscribe endpoint “/users/queue/messages”.

Tham số thứ 3, payload, là nôi dung message mà chúng ta cần gửi tới user.

Tham số thứ 1, user là tham số quan trọng nhất mà mình đã mất rất nhiều thời gian để xác định nó, vì hiện tại không có một official document của Spring nói về vấn đề này. Thật ra thì nó là username gắn liền với một session id khi một client connect tới WebSocket server. Mặc định thì chỉ có session id được generate và đi kèm với mỗi WebSocket connection còn user name thì nếu chúng ta không thêm code để xác định username thì username này sẽ là null. Thông tin username này nếu có, sẽ được chứa trong implementation của interface java.security.Principal và class SimpMessageHeaderAccessor chứa thông tin về WebSocket connection header và sẽ chứa thông tin của class implementation này. Đó là lý do mà trong phương thức send() của class MessageController mình có sử dụng class SimpMessageHeaderAccessor là một tham số của phương thức này.

Trong ví dụ của bài viết này, mình sẽ truyền thông tin username vào header của WebSocket connection khi client connect tới WebSocket server và phía WebSocket server, mình sẽ thêm code để Spring xem nó là thông tin username của WebSocket connection.

Code phần front-end của mình như sau:

index.html:

<!DOCTYPE html>
<html>
<head>
<title>Hello WebSocket</title>
<script src="/webjars/jquery/dist/jquery.min.js"></script>
<script src="/webjars/sockjs-client/sockjs.min.js"></script>
<script src="/webjars/stomp-websocket/stomp.min.js"></script>
<script src="/app.js"></script>
</head>
<body>
<div id="main-content">
<div>
<div>
<label>What is your username?</label> 
<input type="text" id="username" placeholder="Your username here...">
</div>
<button id="connect" type="submit">Connect</button>
<form>
<div>
<label>User will received message</label> 
<input type="text" id="name" placeholder="User will receive the message...">
</div>
<button id="send" type="submit">Send</button>
</form>
</div>
</div>
<div>
<label>Message from someone: </label><span id="message"></span>
</div>
</body>
</html>

app.js:

var stompClient = null;

function connect(username) {
var socket = new SockJS('/hello');
stompClient = Stomp.over(socket);
stompClient.connect({ username: username, }, function() {
console.log('Web Socket is connected');
stompClient.subscribe('/users/queue/messages', function(message) {
$("#message").text(message.body);
});
});
}

$(function() {
$("form").on('submit', function(e) {
e.preventDefault();
});
$("#connect").click(function() {
connect($("#username").val());
});
$("#send").click(function() {
stompClient.send("/app/hello", {}, $("#name").val());
});
});

Kết quả khi chạy ví dụ của mình như sau:

Gửi STOMP message tới một user cụ thể với Spring WebSocket

Chúng ta sẽ nhập tên username sẽ gắn liền với WebSocket connection sau đó thì nhấn nút Connect để tạo WebSocket connection. Để đơn giản thì mình chỉ cho phép người dùng nhập tên username mà họ muốn gửi message, nội dung message sẽ tự động generate từ phía WebSocket server. Khi một user nhận được message từ ai đó, nội dung của message này sẽ hiển thị phía sau dòng text “Message from someone”.

Trong tập tin app.js, như các bạn thấy, client đang subscribe vào endpoint “/users/queue/messages” để nhận các message từ các user khác.

Bây giờ, mình sẽ code phần quan trọng nhất là thêm thông tin username đi kèm với mỗi connection tới WebSocket server.

Đầu tiên, mình sẽ tạo mới một class User implement interface java.security.Principal:

package com.huongdanjava.springboot.websocket;

import java.security.Principal;

public class User implements Principal {

private String name;

public User(String name) {
this.name = name;
}

@Override
public String getName() {
return name;
}

}

Tiếp theo, mình sẽ update class WebSocketConfiguration để thêm một interceptor cho mỗi WebSocket connection tới WebSocket server, chúng ta sẽ thêm code để set thông tin user cho connection đó, như sau:

package com.huongdanjava.springboot.websocket;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("queue");
registry.setApplicationDestinationPrefixes("/app");
registry.setUserDestinationPrefix("/users");
}

@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.interceptors(new UserInterceptor());
}
}

Nội dung của class UserInterceptor như sau:

package com.huongdanjava.springboot.websocket;

import java.util.ArrayList;
import java.util.Map;

import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.messaging.support.MessageHeaderAccessor;

public class UserInterceptor implements ChannelInterceptor {

@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

if (StompCommand.CONNECT.equals(accessor.getCommand())) {
Object raw = message.getHeaders().get(SimpMessageHeaderAccessor.NATIVE_HEADERS);

if (raw instanceof Map) {
Object name = ((Map) raw).get("username");

if (name instanceof ArrayList) {
accessor.setUser(new User(((ArrayList<String>) name).get(0).toString()));
}
}
}
return message;
}
}

Nói nôm na thì cho mỗi WebSocket connection, mình sẽ lấy thông tin username mà mình đã truyền ở phía client lên để gán thông tin user cho connection đó. Phương thức setUser() của class SimpMessageHeaderAccessor với tham số là interface java.security.Principal sẽ giúp chúng ta làm điều này.

Bây giờ thì chúng ta có thể chạy ứng dụng để xem kết quả như thế nào các bạn nhé!

Mình sẽ mở 2 cửa sổ trình duyệt, nhập thông tin user “khanh” và “test” cho mỗi cửa sổ trình duyệt và nhấn nút Connect. Sau đó, ở cửa sổ của user “test”, mình sẽ nhập tên user “khanh” và nhấn nút Send. Ở cửa sổ của user “khanh”, các bạn sẽ thấy kết quả như sau:

Gửi STOMP message tới một user cụ thể với Spring WebSocket

System testing là gì?

System testing là gì?

Bài viết được sự cho phép của tác giả Lê Chí Dũng

1. Khái niệm

  • System testing là quá trình kiểm tra của một sản phẩm đã hoàn chỉnh và tích hợp đầy đủ. Sau khi Integration test và Unit test
  • Thông thường 1 sản phẩm phần mềm chỉ được test trên 1 vì môi trường demo, nhưng system test đảm bảo cho hệ thống vận hành trên nhiều môi trường khác nhau, tích hợp với nhiều phần mềm và hệ thống khác nhau.
  • System test thuộc loại kiểm thử hộp đen. System liên quan đến các hoạt động bên ngoài của phần mềm từ quan điểm của người sử dụng.
  Bài toán đồng thuận trong Distributed Systems
  Giải mã bí ẩn "system load" trên Linux

2. Tại sao system test là cần thiết?

System test sẽ thực hiện các công việc sau:

  • Sau khi hoàn thành quá trình test tích hợp chúng ta cần phải kiểm tra thêm về độ tương thích và tương tác với các thiết bị ngoại vi bên ngoài của ứng dụng để kiểm tra tính khả dụng của nó.
  • System test là việc xác minh kiểm tra kỹ lưỡng của mỗi đầu vào trong các ứng dụng để kiểm tra các kết quả mong muốn.
  • Thử nghiệm các kinh nghiệm của người dùng với các ứng dụng.

3. Các loại chiến lượt system testing

System test có hơn 50 loại, ở đây tôi chỉ giới thiệu 1 số loại system test điển hình sau:

  • Usability Testing – Kiểm tra tính khả dụng của ứng dụng, chủ yếu tập trung kiểm tra sự dễ sử dụng, tính linh hoạt, tính thân thiện của sản phẩm.
  • Load Testing – Kiểm tra tốc độ vận hành của sản phẩm, một sản phẩm tốt là 1 sản phẩm phải vận hành với tốc độ cao và có thể chịu được sức tải lớn khi có nhiều user truy cập.
  • Regression Testing – Kiểm thử hồi quy tập trung vào việc tìm kiếm lỗi sau khi xảy ra một thay đổi mã chính. Cụ thể, nó tìm cách phát hiện ra các hồi quy của phần mềm hoặc các lỗi cũ quay trở lại. Những hồi quy như vậy xảy ra bất cứ khi nào chức năng phần mềm trước đây đang hoạt động giờ tạm ngưng như đã định. Thông thường, những hồi quy xảy ra như một hệ quả không lường trước được những thay đổi chương trình, khi một phần mới của phần mềm được phát triển xung đột với mã tồn tại trước đó. Phương pháp phổ biến của kiểm thử hồi quy bao gồm chạy lại những kiểm thử trước đó và kiểm thử xem lỗi cố định trước đây tại sao lại xuất hiện. Độ sâu của kiểm thử phụ thuộc vào các nguy cơ và giai đoạn trong quá trình phát hành các tính năng bổ sung. Chúng có thể được hoàn tất khi thay đổi thêm vào đầu hoặc cuối bản phát hành, cũng có thể được có mức độ nguy hiểm thấp khi thực hiện kiểm thử tích cực trên mỗi tính năng.
  • Recovery Testing – Kiểm thử phục hồi là kiểm thử được thực hiện sau khi có các sự cố hệ thống dẫn đến chương trình lỗi, không hoạt động được. Kiểm thử phục hồi được thực hiện để đảm bảo chương trình sau khi khắc phục lỗi trên không xảy ra bug
  • Migration Testing – Kiểm thử di động được thực hiện để đảm bảo tính linh động của phần mềm, phần mềm có thể di chuyển được chuyển từ cơ sở hạ tầng hệ thống cơ sở hạ tầng hệ thống cũ để hiện tại không có bất kỳ vấn đề
  • Functional Testing – Kiểm thử chức năng nhằm đảm bảo chức năng phần mềm được vận hành theo đúng mục đích đưa ra
  • Hardware/Software Testing – Đây là khi các thử nghiệm tập trung chú ý về sự tương tác giữa các phần cứng và phần mềm trong quá trình thử nghiệm hệ thống.

4. Kết Luận

Trong quá trình hoàn thiện sản phẩm system test là vô cùng quan trọng, system test sẽ đảm bảo cho ứng dụng của bạn có khả năng tương thích cao với môi trường thực trước khi sản phẩm được ra mắt.

Bài viết gốc được đăng tải tại lcdung.top

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Lệnh if, elif, if else trong Python là gì?

Lệnh if - elif - else trong Python

Lệnh if có thể bạn đã gặp qua rất nhiều như trong C#, C++ hay đơn giản là trong excel để thực hiện một câu lệnh có điều kiện. Trong bài viết hôm nay, chúng ta sẽ cùng tìm hiểu về các lệnh if trong Python như if, elif hay if…else…. Đừng bỏ lỡ bài viết thú vị hôm nay của đội ngũ TopDev.

Câu lệnh điều kiện cho phép chương trình thực hiện các hành động khác nhau dựa trên các điều kiện nhất định. Dưới đây là các loại câu lệnh điều kiện phổ biến trong các ngôn ngữ lập trình.

Lệnh if trong Python

Lệnh if trong Python giống như trong ngôn ngữ C. Lệnh if được dùng để kiểm tra điều kiện, nếu thỏa mãn điều kiện if if-block (khối code) sẽ chạy, nếu không thì sẽ được bỏ qua.

lệnh if python
Lệnh if trong Python

Cú pháp của lệnh if là:

if dieu_kien
   if-block

Ở đây, nếu input thỏa mãn dieu_kien thì các lệnh trong if-block sẽ được thực hiện. Nếu dieu_kien trả về kết quả false thì lệnh sẽ không được thực hiện.

Lưu ý: trong Python, khối lệnh của lệnh if (if-block) được viết thụt lề vào trong so với dòng điều kiện if nếu sai cú pháp, dòng lệnh không thụt đầu dòng tiếp theo sẽ được hiểu là nằm ngoài khối lệnh.

Ví dụ của lệnh if trong Python:

var1 = 100
if var1 > 0
   print "1 - Nhan mot gia tri true"

var2 = 0
if var2 > 0
   print "2 - Nhan mot gia tri true"

print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

1 - Nhan mot gia tri true
Good bye!

Trong ví dụ trên, var1 = 100 thỏa mãn điều kiện var1 > 0, vì vậy lệnh print "1 - Nhan mot gia tri true" được thực hiện, ngược lại var2 = 0, không thỏa mãn điều kiện var2 > 0 nên chương trình sẽ tiếp tục thực hiện lệnh print "Good bye!" bên ngoài khối if.

  Str trong Python là gì? Kiểu dữ liệu chuỗi và định dạng chuỗi trong Python

Lệnh if…else… trong Python

Lệnh if else cũng dùng để kiểm tra điều kiện nhưng sẽ có hai vế, nếu khối code không thỏa mãn điều kiện if, thì lệnh else sẽ chạy.

Lệnh if...else... trong Python
Lệnh if…else… trong Python

Cú pháp của lệnh else if Python là:

if dieu_kien
   khoi_lenh_if
else
   khoi_lenh_else

Nếu điều kiện so với if == true, thì khối lệnh trong if sẽ được thực hiện, ngược lại nếu false thì chương trình sẽ chạy câu lệnh trong khối else.

Dưới đây là ví dụ minh họa lệnh if…else trong Python:

# trường hợp 1
var1 = 100
if var1 > 0
   print "1 - Nhan mot gia tri true"
   print var1
else
   print "1 - Nhan mot gia tri false"
   print var1

# trường hợp 2
var2 = 0
if var2 > 0
   print "2 - Nhan mot gia tri true"

else
   print "2 - Nhan mot gia tri false"

print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

1 - Nhan mot gia tri true
2 - Nhan mot gia tri false
Good bye!

Trong ví dụ này ta thấy rằng var1 = 100 thỏa điều kiện if var1 > 0 => chạy tiếp khối lệnh trong if print "1 - Nhan mot gia tri true"

Xét tới trường hợp 2, đầu tiên xét điều kiện if var2 > 0= false (vì var2 = 0) => chương trình sẽ chạy tiếp dòng lệnh trong else print "2 - Nhan mot gia tri false"

Sau khi đã kết thúc các câu lệnh trong if else chạy dòng lệnh độc lập print "Good bye!"

Tham khảo việc làm Python Hà Nội

Lệnh elif trong Python là gì?

Lệnh elif trong Python là tên gọi vắn tắt của dòng lệnh if lồng nhau if…elif…else được dùng để kiểm tra nhiều điều kiện lồng nhau, nếu khối code so với điều kiện trong if trả về false thì, nó sẽ tiếp tục kiểm tra điều kiện thứ 2, 3, 4,… trong khối elif và cứ như vậy cho đến hết. Nếu tất cả các điều kiện trong elif đều sai nó sẽ thực thi khối lệnh của else.

else if python
Lệnh elif trong Python là gì?

Cú pháp của lệnh elif là:

if dieu_kien_if
   khoi_lenh_if
elif dieu_kien_1
   khoi_lenh_1
elif dieu_kien_2
   khoi_lenh_2
elif dieu_kien_3
   khoi_lenh_3
else
   khoi_lenh_else

Dưới đây là ví dụ của lệnh elif trong Python:

var = 100
if var == 200:
   print "1 - Nhan mot gia tri true"

elif var == 150:
   print "2 - Nhan mot gia tri true"
  
elif var == 100:
   print "3 - Nhan mot gia tri true"

else
   print "4 - Nhan mot gia tri false"

print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

3 - Nhan mot gia tri true
Good bye!

Tương tự như các câu lệnh if ở phần trước, đầu tiên xét điều kiện var = 100 khác với điều kiện trong if var == 200=> chạy tiếp câu lệnh trong elif, trong ví dụ ta thấy có 2 dòng elif, chạy lần lượt đến khi thỏa mãn điều kiện của elif => chạy khối lệnh trong elif đó (trường hợp nếu có rất nhiều dòng lệnh elif thì khi chạy đến dòng lệnh đúng rồi thì chương trình sẽ thực hiện khối lệnh trong elif đó và dừng lại, không chạy tiếp các elif phía dưới).

Nếu chạy hết các elif rồi mà tất cả đều false thì sẽ chạy tới khối lệnh else
print "4 - Nhan mot gia tri false"
trong bài thì đã thỏa elif var == 100 nên kết quả chỉ có 3 - Nhan mot gia tri true

Lồng các lệnh if trong Python

Đôi khi có một tình huống là khi bạn muốn kiểm tra thêm một điều kiện khác sau khi một điều kiện đã được ước lượng là true. Trong tình huống như vậy, bạn có thể sử dụng các lệnh if lồng nhau trong Python.

Trong cấu trúc các lệnh if lồng nhau, bạn có thể có cấu trúc if…elif…else bên trong cấu trúc if…elif…else khác.

  Kiểu dữ liệu Boolean và toán tử logic AND, OR, NOT trong Python

Cú pháp của cấu trúc lồng các lệnh if như sau:

if bieu_thuc1:
   cac_lenh
   if bieu_thuc2:
      cac_lenh
   elif bieu_thuc3:
      cac_lenh
   else
      cac_lenh
elif bieu_thuc4:
   cac_lenh
else:
   cac_lenh

Dưới đây là ví dụ minh họa cho cấu trúc các lệnh if lồng nhau trong Python:

var = 100
if var < 200:
   print "Gia tri bieu thuc la nho hon 200"
   if var == 150:
      print "Do la 150"
   elif var == 100:
      print "Do la 100"
   elif var == 50:
      print "Do la 50"
elif var < 50:
   print "Gia tri bieu thuc la nho hon 50"
else:
   print "Khong tim thay bieu thuc true"

print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả sau:

Gia tri bieu thuc la nho hon 200
Do la 100
Good bye!

Chúc các bạn thành công!

Nguồn bài viết tham khảo ucode.vn

Xem thêm việc làm công nghệ thông tin hấp dẫn trên TopDev

Những áp lực khi HỌC và LÀM IT [Lập Trình Viên]

Những áp lực khi HỌC và LÀM IT

Bài viết được sự cho phép của blogchiasekienthuc.com

Chào anh em, vẫn là những vấn đề xoay quanh tiền lương nhiều người thường nghĩ rằng làm IT lương cao, kỹ sư công nghệ thông tin lương có thể lên tới hàng ngàn đô mỗi tháng.

Đúng ! Là một người trong ngành mình công nhận điều đó, nếu xét về mức lương thì làm IT có thể nói là cao hơn rất nhiều so với mặt bằng chung.

Thế nhưng điều kiện là bạn phải có năng lực thực sự, hay nói cách khác là bạn phải thực sự nổi bật và kèm theo đó là một áp lực không hề nhỏ để có thể với tới mức lương ngàn đô.

Mọi người thường chỉ quan tâm đến kết quả mà không biết về những áp lực khi làm IT. Vì vậy mà trong bài viết này mình sẽ chia sẻ với anh em để anh em dễ hình dung hơn về những áp lực khi làm IT nhé.

  "Ngành IT này học rất dễ, tài liệu ko bao giờ thiếu. Quan trọng là phải có đam mê và chịu cày"
  10 Add-on Google Sheets phải có dành cho các Recruiters

#1. Áp lực về tiến độ

Vâng, tiến độ có lẽ là câu chuyện chung không chỉ cho mấy anh em học IT mà còn cho nhiều anh em làm trong các ngành nghề khác.

nhung-ap-luc-khi-hoc-va-lam-it-cong-nghe-thong-tin (1)

Trễ tiến độ sẽ bị đánh giá, trễ tiến độ sẽ bị sếp chửi, trễ tiến độ sẽ bị khách hàng mắng, trễ tiến độ sẽ ảnh hưởng tới bộ phận khác…

Có muôn vàn lý do để anh em làm IT nói riêng phải bằng mọi giá sao cho cho kịp tiến độ và từ đó khái niệm OT (Over Time) là hai từ quen thuộc, nó sẽ hằn sâu vào tiềm thức Nếu anh em đã và đang làm IT thì mình tin chắc là anh em sẽ biết điều này ^^

Nhiều lúc ở công ty, các bộ phận khác như (kế toán, sale…) về hết rồi nhưng mấy anh em IT vẫn phải ngồi lại, cặm cụi ôm cái máy tính để làm cho xong việc ⊙﹏⊙

Rồi có những dự án gấp gáp quá, có khi anh em phải kéo nhau đi làm cả thứ bảy, chủ nhật để cho kịp tiến độ, còn bàn giao cho khách hàng.

Đặc biệt là anh em nào làm outsource cho các tập đoàn lớn hoặc các đối tác khó tính như khách hàng Nhật Bản thì việc làm sao kịp tiến độ là vô cùng quan trọng, nếu không muốn bị sếp chửi SML.

#2. Áp lực về chất lượng mã nguồn

nhung-ap-luc-khi-hoc-va-lam-it-cong-nghe-thong-tin (1)

Có những lúc lập trình viên phải code làm sao cho kịp tiến độ, trong khi chỉ còn có ít ngày nữa là đến hạn bàn giao rồi.

Câu chuyện đáng nói là, nếu chỉ còn ít thời gian như vậy thì liệu lập trình viên có đảm bảo được chất lượng mã nguồn code hay không?

Bình thường sẽ có bước review và đánh giá chất lượng mã nguồn nếu như chúng ta làm theo đúng quy trình trước khi bàn giao cho khách hàng. Nhưng bước này thường bị bỏ đi nếu dự án đã quá gấp.

Trong khi đội ngũ kiểm thử (tester) thường chỉ test được trên giao diện và kiểm tra xem dữ liệu có được lưu đúng, hay thay đổi đúng không… chứ rất khó để kiểm tra được cả chất lượng mã nguồn.

Một số công ty có áp dụng các công nghệ quét tự động để kiểm tra chất lượng mã nguồn, nhưng về cơ bản thì nó chỉ đảm bảo ở mức tương đối mà thôi.

Tất cả vẫn phụ thuộc vào việc lập trình viên viết như thế nào để đảm bảo chất lượng mã nguồn là tốt nhất (dễ bảo trì, dễ mở rộng sau này).

#3. Áp lực về sự nhàm chán

“Chán” đối với lập trình viên có thể xuất phát từ rất nhiều nguyên nhân khác nhau trong quá trình làm việc.

nhung-ap-luc-khi-hoc-va-lam-it-cong-nghe-thong-tin (2)

Đơn cử nhất có hai trường hợp đó là gặp vấn đề khó quá mãi không nghĩ ra cách giải quyết, hai nữa là có quá nhiều vấn đề cần giải quyết, mãi không hết việc.

Thực ra thì việc giải quyết vấn đề chính là trách nhiệm và cũng là công việc của lập trình viên, thế nhưng nếu vấn đề đó quá khó hoặc quá nhiều và lặp đi lặp đi thì đôi khi sẽ gây nên sự nhàm chán.

Trường hợp gặp vấn đề khó thì đối với nhiều anh em, đôi khi đây lại là cơ hội tốt để có thể thể hiện khả năng của mình, nhưng đối với nhiều bạn thì nó lại gây nên sự ức chế, chán.

Tất nhiên, để trở nên nổi bật hơn thì anh em cần phải tìm cho ra cách giải quyết vấn đề đó, thay vì cảm giác chán nản, bỏ dở giữa chừng (không biết thì có thể đi hỏi mà, làm miết rồi cũng ra thôi).

Còn việc gặp nhiều vấn đề nhỏ mà nó cứ lặp đi lặp lại thì anh em phải chấp nhận thôi. Đôi khi đây lại là “đặc sản” của mấy anh em làm IT khi làm các dự có cấu trúc chưa tốt.

#4. Áp lực trong việc trau dồi kiến thức mới

nhung-ap-luc-khi-hoc-va-lam-it-cong-nghe-thong-tin (3)

Ngành khác thì mình không rõ lắm về các tiêu chí đánh giá như thế nào, nhưng khi đã làm IT thì bắt buộc anh em phải có năng lực thực sự.

Năng lực tới đâu, lương tương tới đó. Mà muốn năng lực tăng thì phải không ngừng trau dồi kiến thức và công nghệ mới.

Nhưng khi làm thì anh em sẽ hiểu được một điều, đó là quỹ thời gian của anh em nó sẽ bị co lại nhiều như thế nào. Mỗi ngày mặc định có 8 tiếng làm việc trên công ty rồi, nếu anh em nào chăm chỉ (do OT mà ra ) thì có khi làm cả đêm nữa.

Vậy thời gian đâu để anh em học hỏi thêm kiến thức mới và công nghệ mới nữa? Thực ra thì nếu biết cách thu xếp thời gian hợp lý thì anh em vẫn có thể bố trí được thôi, nhưng buộc anh em phải “cày” trâu hơn, không khác được.

Bạn thử nghĩ mà xem, đi làm về là “oải” rồi, lại còn ngồi học cái mớ kiến thức mới nữa thì đôi khi rất áp lực và mệt mỏi thực sự !

Nhưng có làm thì mới có ăn mà đúng không, nếu anh em muốn nâng cao trình độ thì buộc anh em phải cố gắng hơn người khác thôi. Làm gì có gì dễ dàng đâu, dễ dàng thì thu nhập làng nhàng vậy thôi

#5. Áp lực từ cấp trên

nhung-ap-luc-khi-hoc-va-lam-it-cong-nghe-thong-tin (4)

Mình từng làm ở một công ty outsource cho Nhật, sếp tuy là người Việt nhưng sống ở Nhật lâu năm nên anh em cứ coi như là người Nhật luôn cũng được

Sáng nào đến sếp cũng kiểm tra tiến độ, soi từng ông một xem làm tới đâu rồi. Nhất là mấy ông Leader ngày nào cũng bị gõ đầu ép tiến độ.

Mình hiểu là làm việc với người Nhật thì buộc phải chấp nhận như vậy, vì để trễ tiến độ một lần thôi sẽ bị mất uy tín, lần sau có thể họ sẽ không thuê mình nữa.

Nhưng ngược lại, nhân viên (lập trình viên) đôi khi lại cảm thấy bị áp lực. Rõ ràng có những lúc đã rất cố gắng rồi, nhưng vẫn bị trễ tiến độ. Trong khi đó, sếp lại cứ lôi mình ra nói này nói nọ… bạn hiểu cảm giác đó chứ !

Mỗi một môi trường đều có những áp lực khác nhau, chỉ khi có áp lực thì chúng ta mới tiến bộ được. Nhưng cá nhân mình thì nghĩ, sếp không nên quá tạo áp lực cho nhân viên (một cách cứng nhắc) như vậy.

Làm sao để họ tự nhận thức được trách nhiệm công việc, làm việc có kế hoạch và hoàn thành kịp tiến độ thay vì ép tiến độ quá mức như vậy .

#6. Lời kết

Minh xin chốt lại vấn đề: Áp lực là một phần của thành công các bạn à, có áp lực thì chúng ta mới trưởng thành và khôn ra được.

Với lập trình viên nói riêng thì áp lực đến từ nhiều phía, nhưng tựu chung lại thì đó như là một phần của công việc, mà anh em buộc phải đối diện và vượt qua nó.

Xin chào và hẹn gặp lại anh em trong các bài viết tiếp theo của mình nhé !

Nguyễn Đức Cảnh – Bài viết gốc tại blogchiasekienthuc.com

Có thể bạn quan tâm:

Tìm việc IT lương cao, đãi ngộ tốt trên TopDev

Có nên tin các bài test tính cách? Định hướng nghề nghiệp?

test tính cách

Bài viết được sự cho phép của BQT Kinh nghiệm lập trình

MBTI, DISC, The Big Five Personalities Test (5 khía cạnh tính cách cơ bản); 7 loại trí thông minh, Holland code test; test phân loại thiên hướng…

MBTI có vẻ nổi nhất, 1 bài test dài, sau đó sẽ phân loại vào 1 trong 16 nhóm người…

Tôi cũng đã từng làm, thấy vừa đúng vừa sai.

Nó đúng vì nó được 1 nhà khoa học phát triển lên, kiểm chứng qua nhiều trường hợp rồi. Nhưng mà rồi cũng chỉ vậy thôi. Bạn sẽ thấy vào trường hợp nào thì cũng sẽ có phần đúng, mà lại không hoàn toàn đúng!

Tại sao cần test?

Nếu bạn đang có thời gian, đang mất phương hướng, cần sự lựa chọn, thì hãy làm 1 bài, 1 vài bài xem sao. Nhưng mà phải làm trung thực, và tốt nhất là có 1 chuyên gia hỗ trợ cho bạn.

Còn nếu bạn đang học đại học chuyên ngành rồi, bạn đang có công việc rồi, bạn cũng không còn trẻ nữa, nói tóm lại, bạn hơi khó để có thể hướng nghiệp lại từ đầu như mấy cháu học sinh.

Thì cái bạn cần, là bạn phải tin vào bản thân mình.

Từ nhỏ bạn thích văn thơ, báo chí, nhưng bố mẹ bạn bắt bạn làm kế toán thống kê. Bạn không thích kế toán, nhưng bạn làm lâu lâu rồi, quen quen rồi, giờ vẫn làm. Thậm chí bạn hơi có tuổi rồi, bạn còn phải nuôi con, bạn không thể bỏ nghề kế toán đi làm thơ, viết báo được. Bạn test tính cách thì ra INFP.

Vậy rồi bạn làm sao, bỏ kế toán đi theo ngành báo, hay dẹp việc yêu thích đó lại.

Đâu là lựa chọn?

Câu trả lời thì tôi không biết, nhưng mà nếu bạn bỏ được công việc, thì bỏ đi, chuyển ngành khác. nếu không bỏ được, thì bạn hãy master ngành đó đi, từ đó bạn có thể chọn công việc, chọn cách làm việc theo ý mình. Bạn hãy giỏi chuyên môn, tạo mối quan hệ trong ngành kế toán, rồi làm tư vấn, tài chính, cố vấn, đào tạo, viết bài luận về kế toán tài chính đăng lên báo, tạp chí…cũng liên quan đến ngành văn, ngành báo của bạn mà.

Đừng nói với tôi, nói thì dễ, làm thì khó.

Tất nhiên là thế rồi, bạn nói câu đó là bạn chưa làm được.

  04 Điều Cần Chú Ý Cho Người Mới Làm Automation Test
  A/B testing và những tiêu chí chính để đánh giá sự thành công của ASO

Cũng trường hợp khác, ngành kỹ thuật. Bạn không biết mình thích gì, rồi bạn vào Bách khoa, do sức học tốt, do trường top, do oai oai vì khu nhà bạn có 1,2 người vào được đó thôi.

Và vào đó, nát như tương, bạn oải mấy môn khoa học cơ bản, đến chuyên ngành còn chán nữa. Bạn không thích kỹ thuật, bạn thích kinh doanh hơn chẳng hạn. Thì hoặc bỏ học sang học kinh tế.

Nhưng tôi có 1 giải pháp hay hơn cho bạn, bạn cứ học tốt ngành kỹ thuật đó đi, ra trường làm sale kỹ thuật. Quá tuyệt vời luôn. Sale kỹ thuật, vừa có kỹ năng sale, vừa có chuyên môn, khoa học logic, không chém gió vớ vẩn @@

Lời kết

Có nhiều sự lựa chọn công việc trong các ngành mà bạn đang học, đang làm lắm, hãy dành thời gian cho nó, bạn sẽ tìm được công việc đúng với cả đam mê, sở thích, năng lực hiện tại của mình, cho dù ở trong 1 lĩnh vực bạn không yêu thích.

Nhiều công việc đến tôi nghe còn lạ lẫm, không định hình được nó là gì, làm gì luôn, nhưng nó thú vị, với người đặt tâm sức vào đó.

Tác giả: Vân D

Nguồn: Tư vấn hướng nghiệp & tạo động lực

Ngoài ra, bạn có thể tham khảo thêm Bài test tính cách trong công việc – Workplace Personality Test do Saramin x TopDev phát triển để đánh giá tổng quan về tính cách của bản thân và sự phù hợp với môi trường công việc ngành CNTT.

Bài viết được đăng tải tại kinhnghiemlaptrinh.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Điều khiển luồng trong Python

Điều khiển luồng trong Python

Bài viết được sự cho phép của tác giả Nguyễn Chí Thức

Các bạn cũng đã khá quen thuộc với các lệnh điều khiển luồng trong C, C++ như if, if else, … Chương này sẽ trình bày về các lệnh điều khiển luồng trong Python.

Ngôn ngữ lập trình Python coi các giá trị khác null và khác 0 là true, và coi các giá trị là null hoặc 0 là false.

Trong bài này chúng ta cùng tìm hiểu các lệnh điều khiển luồng trong Python:

Lệnh if trong Python

Lệnh if trong Python là giống như trong ngôn ngữ C. Lệnh này được sử dụng để kiểm tra một điều kiện, nếu điều kiện là true thì lệnh của khối if sẽ được thực thi, nếu không nó sẽ bị bỏ qua.

  Khởi Đầu Dự Án Python Như Thế Nào Để Thuận Tiện Phát Triển Lên

Lệnh if…else trong Python

Một lệnh else có thể được sử dụng kết hợp với lệnh if. Một lệnh else chứa khối code mà thực thi nếu biểu thức điều kiện trong lệnh if được ước lượng là 0 hoặc một giá trị false. Lệnh else là lệnh tùy ý và chỉ có duy nhất một lệnh else sau lệnh if.

Xem thêm tuyển dụng python lương cao cho bạn

Lồng các lệnh if trong Python

Đôi khi có một tình huống là khi bạn muốn kiểm tra thêm một điều kiện khác sau khi một điều kiện đã được ước lượng là true. Trong tình huống như vậy, bạn có thể sử dụng các lệnh if lồng nhau trong Python.

Trong cấu trúc các lệnh if lồng nhau, bạn có thể có cấu trúc if…elif…else bên trong cấu trúc if…elif…else khác.

  Python free variable

Trường hợp các Suite lệnh đơn

Bạn đã tìm hiểu về suite trong chương Cú pháp cơ bản. Nếu suite của một mệnh đề if chỉ bao gồm một dòng lệnh đơn, thì nó có thể ở trên cùng một dòng như là header của lệnh.

Dưới đây là ví dụ đơn giản về một mệnh đề if một dòng:

var = 6677028

if ( var  == 6677028 ) : print "Gia tri cua bieu thuc la 6677028"

print "Wellcome to uCode!"

Khi code trên được thực thi sẽ cho kết quả:

Gia tri cua bieu thuc la 6677028
Wellcome to uCode!

Các bài viết tiếp theo tôi sẽ giúp các bạn tìm hiểu kĩ hơn về từng lệnh trong python. Chúc các bạn học tốt!

Bài viết gốc được đăng tải tại ucode.vn

Có thể bạn quan tâm:

Xem thêm việc làm it HCM, đà nẵng, hà nội hấp dẫn trên TopDev

TOP 10 Plugin được SỬ DỤNG NHIỀU NHẤT trên ECLIPSE

TOP 10 Plugin được SỬ DỤNG NHIỀU NHẤT trên ECLIPSE

Bài viết được sự cho phép của blogchiasekienthuc.com

Chào anh em, nói về Eclipse có lẽ chúng ta sẽ liên tưởng tới Java nhiều nhất, vì IDE này hỗ trợ khá mạnh cho Java.

Nhưng trên thực tế thì Eclipse lại hỗ trợ khá nhiều ngôn ngữ lập trình khác nhau chứ không riêng gì ngôn ngữ Java. Ngoài ra thì công cụ này còn hỗ trợ người dùng cài thêm các plugin (tiện ích) rất đa dạng, với nhiều mục đích khác nhau.

  12 plugin nên dùng trong Adobe XD
  Cách sử dụng các plugins jQuery trong VueJS

Vâng, và trong bài viết này, mình sẽ cùng anh em điểm qua Top 10 plugin được được các lập trình viên sử dụng nhiều nhất khi làm việc với Eclipse nhé. Ok, bắt đầu thôi nào !

#1. Spring Tools

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (1)

Nếu anh em nào code Java thì chắc đều nghe nói về Spring Framework rồi đúng không. Hệ sinh thái của Spring Framework hiện nay bao gồm rất nhiều các thành phần khác nhau.

Bản thân Eclipse là công cụ hỗ trợ Java rất mạnh, nhưng để nói về việc hỗ trợ Spring Framework thì nó cũng chưa thực sự đầy đủ cho lắm.

Chính vì vậy mà người ta đã phát triển một công cụ dựa trên Eclipse đó là Spring Tool Suite, với mục đích là để tối ưu cho việc lập trình với Spring Framework.

Nhưng việc sử dụng riêng một IDE chỉ để lập trình với Spring đôi khi lại là không cần thiết, vậy nên Eclipse đã hỗ trợ tích hợp Spring Tools plugin trực tiếp vào Eclipse để các lập trình viên có thể làm việc một cách dễ dàng và gọn gàng hơn.

NOTE: Nếu bạn chưa biết cách cài đặt Plugin trên Eclipse thì có thể tham khảo luôn bài viết này: Làm thế nào để có thể lập trình Python trên Eclipse?

#2. Darkest Dark theme

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (2)

Nếu đem so sánh giao diện của Eclipse với một số công cụ khác như IntelliJ hoặc Visual Studio Code thì khả năng tùy biến giao diện của Eclipse là tương đối kém.

Chính vì vậy, nếu các bạn muốn có bộ giao diện (hay background) có màu tối để tránh mỏi mắt khi code thì Darkest Dark Theme là lựa chọn số một dành cho bạn đấy.

#3. Emmet

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (3)

Việc sử dụng Eclipse để code HTML, CSS, JavaScript đôi khi gây ức chế cho lập trình viên, vì mã nguồn thường dài mà lại không có gợi ý code.

Nhiều người chọn sử dụng Visual Studio Code thay cho Eclipse trong việc code HTML, CSS, JavaScript. Nhưng làm như vậy khá là mất công vì phải dùng tới 2 công cụ cho một dự án.

Để khắc phục điều đó thì bạn có thể cài đặt Emmet plugin là một tiện ích giúp gợi ý code HTML, CSS, JavaScript giống như khi bạn dùng VS Code vậy.

#4. SonarLint

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (4)

Việc viết code mà gặp bugs là quá bình thường đối với các lập trình viên. Nhưng làm thế nào để hạn chế được tối đa số lượng bugs và nâng cao chất lượng mã nguồn thì không phải là dễ.

Vâng, với tiện ích SonarLint thì các bạn có thể kiểm tra, xác định được các lỗi phổ biến khi code với nhiều ngôn ngữ khác nhau như Java, JavaScript, PHP, Python… để từ đó nâng cao chất lượng mã nguồn.

#5. JBoss Tools

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (5)

JBoss có rất nhiều chức năng, nhưng khi tích hợp vào Eclipse các bạn có thể thấy chức năng nổi bật nhất đó là việc dùng để tạo ra các Entity Class từ các bảng trong Database.

Đây thực sự là một chức năng rất hay mà cụ thể là đó là Hibernate Tool nó giúp lập trình viên tiết kiệm rất nhiều công sức trong việc tạo ra các lớp thực thể trong code.

#6. WindowBuilder

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (6)

Nói đến việc xây dựng các ứng dụng desktop với Java thì chúng ta phải nhắc đến Netbean, với bộ công cụ Java Swing nổi tiếng một thời.

Nhưng với Eclipse thì các bạn không có sẵn bộ công cụ giúp kéo thả giao diện như Netbean. Và cách duy nhất nếu các bạn muốn lập trình ứng dụng Desktop trên Eclipse là cài thêm tiện ích mở rộng.

Chúng ta có WindowBuilder là một trong số những plugin phù hợp nhất cho mục đích này. Bạn có thể tham khảo và sử dụng xem OK không nhé.

#7. Subclipse

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (7)

Như mình được biết thì hiện nay, nhiều công ty (đặc biệt là các công ty có tuổi đời khoảng 7-10 năm) về công nghệ thì họ vẫn quản lý mã nguồn bằng SVN.

Tất nhiên nếu so sánh SVN với Git thì Git thực sự có rất nhiều ưu điểm nhưng đôi khi việc sử dụng SVN cho các dự án nội bộ lại phù hợp hơn.

Subclipse là tiện ích được sử dụng để merge, update, commit… code được tích hợp vào Eclipse nhằm giúp lập trình có thể thực hiện các thao tác này ngay trên Eclipse.

#8. PyDev

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (8)

Python đang là ngôn ngữ lập trình được sử dụng nhiều trong những năm gần đây. Việc cài đặt Python cũng không quá phức tạp và các công cụ phát triển Python cũng tương đối dễ sử dụng.

Nhưng nếu các lập trình viên Java muốn chuyển qua học Python thì sao? Liệu họ có sẵn sàng ngồi cài cắm một loạt các công cụ không?

Vâng, để giải quyết vấn đề này chúng ta có thể cài đặt plugin PyDev và lập trình Python ngay trên Eclipse.

#9. JRebel

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (9)

Trên thực tế thì có rất nhiều dự án phát triển rất lâu dẫn đến việc kích thước mã nguồn trở nên rất nặng và phức tạp.

Nếu chúng ta Import (xuất dữ liệu) hay mở trực tiếp bằng Eclipse thì sẽ mất rất lâu để start project. Có khi phải ngồi hơn 10 phút mà vẫn chưa lên !

Plugin Rebel được sinh ra là để giải quyết vấn đề đó, rebel hoạt động theo kiểu reload code tức thì mỗi khi bạn sửa đổi mà không cần chạy lại server.

#10. EclEmma

top-plugin-duoc-su-dung-nhieu-nhat-trong-eclipse (10)

EclEmma là tiện ích được sử dụng để kiểm tra độ bao phủ của code Unit Testcase. Có nghĩa là EclEmma sẽ đánh dấu những đoạn code nào mà testcase chưa đáp ứng được.

Ngoài ta thì EclEmma còn tính được tỷ lệ phần trăm bao phủ của testcase trên từng file, package hay là cả project. Thông qua đó thì chúng ta có thể đánh giá được chất lượng của Unit Testcase.

Vậy là mình đã cùng anh em điểm qua 10 plugins được sử dụng phổ biến nhất trên Eclipse rồi ha.

Tất nhiên là nếu các bạn cài càng nhiều plugins thì Eclipse sẽ càng nặng lên, vậy nên các bạn hãy cân nhắc và chỉ nên cài các plugin phù hợp với nhu cầu của bạn thôi nhé.

Hi vọng là bài viết này sẽ hữu ích với anh em. Hẹn gặp lại anh em trong các bài viết tiếp theo nhé.

Nguyễn Đức Cảnh – Bài viết gốc tại blogchiasekienthuc.com

YAML là gì?

YAML là gì?

Bài viết được sự cho phép của tác giả Lê Chí Dũng

YAML là gì?

YAML là 1 định dạng dũ liệu trung gian được thiết kế để người dùng và các ngôn ngữ lập trình cùng hiểu được. YAML được dùng vào mục đích tương tự JSON, XML nhưng nó lại có nhiều tính năng nổi bật hơn vì cấu trúc dữ liệu linh hoạt hơn, hỗ trợ nhiều ngôn ngữ lập trình, diễn đạt và mở rộng dữ liệu hơn và dễ sử dụng vì khá có nhiều kiểu dữ liệu lập trình.  chi tiết tại http://www.yaml.org/

  Yaml cho web developer
  "Bắt đầu từ vị trí dev, làm tốt sẽ được trao cơ hội trở thành leader"

Ví dụ về 1 đoạn YAML được biểu diễn như sau:

-
  name: dung
  mail: me@lcdung.top
-
  name: admin
  mail: admin@lcdung.top

http://yaml-online-parser.appspot.com/ Là 1 trang chuyển đổi YAML sang JSON. Bạn nên dùng trang này trong lúc đọc sẽ nhanh hiểu hơn.

YAML dùng làm gì?

Tương tự JSON hay XML, YAML có thể dùng để chứa đựng thông tin ở dạng text. Dùng cho các file config, lưu giá trị hằng…

YAML và JSON

– JSON là YAML, nói cách khác JSON có thể đọc được bởi các trình đọc YAML, điều ngược lại không đúng.
– JSON đáp ứng tốt hơn mục đích trao đổi dữ liệu ( thông qua AJAX…), YAML để xử lý các dữ liệu offline (file config…). Chắc vì JSON thường được xử lý nhanh hơn (http://stackoverflow.com/questions/2451732/how-is-it-that-json-serialization-is-so-much-faster-than-yaml-serialization-in-p)

YAML và XML

– YAML không có các thẻ thuộc tính như XML nhưng thay vào đó nó hỗ trợ các kiểu khai báo để xử lý dữ liệu.

Ví dụ
1 đoạn XML

<user id="babooey" on="cpu1">
    <firstname>Bob</firstname>
    <lastname>Abooey</lastname>
    <department>adv</department>
    <cell>555-1212</cell>
    <address password="xxxx">ahunter@example1.com</address>
    <address password="xxxx">babooey@example2.com</address>
</user>

1 đoạn YAML

babooey:
            computer : cpu1
            firstname: Bob
            lastname: Abooey
            cell: 555-1212
            addresses:
                - address: babooey@example1.com
                  password: xxxx
                - address: babooey@example2.com
                  password: xxxx

Muốn lấy thông tin của 1 user: với XML bạn tìm đến thẻ user có id=”babooey”, với YAML bạn tìm đến key: babooey.

– Sau 2 ví dụ trên, bạn thấy cách viết nào tối ưu ngắn gọn và linh hoạt trong việc chỉnh sửa hơn!

Ưu điểm YAML
– Hỗ trợ comment trong file
– Tính linh hoạt trong biểu diễn dữ liệu cao nhờ có hỗ trợ kiểu dữ liệu: float, array, list…
– Hỗ trợ phép gán (anchor)…
– YAML dễ đọc-hiểu-viết, cú pháp ngắn gọn làm đoạn code YAML trong khá thoáng đãng.- Hiện tại YAML có rất nhiều thư viện cho các ngôn ngữ khác nhau: Chi tiết xem ở đây http://yaml.org/

Cú pháp sử dụng YAML

– Giống cú pháp của Python, YAML yêu cầu thụt đầu dòng trước mỗi câu. Thụt đầu dòng bởi các dấu cách (tùy cấu trúc (khối lệnh – block) mà dùng 1 hay 2,4… dấu cách), không dùng tab.

– Dùng dấu # để bắt đầu comment.

– dấu “-” để bắt đầu cho 1 list các phần tử

Ví dụ:

# start YAML
- a
- b
-
  - c1
  - c2
-
  -
    - d1
    - d2

Kết quả: Do link dài nên rút gọn – Click vào đây

– “—” để bắt đầu cho 1 đoạn YAML, và … để kết thúc đoạn đó ( … có thể có hoặc không )

Ví dụ: Link

– Với các giá trị lặp lại hoặc dùng nhiều lần,dùng “&” để gán và “*” để lấy giá trị ra:
Ví dụ: Link
Ở đây pink được gán nhãn cl bằng “&cl” ở đầu. Để lấy lại giá trị pink dùng “*cl”.
Cái này có vẻ giống con trỏ trong C & để ghi địa chỉ, * để lấy giá trị.

Tham khảo thêm về cú pháp khác ở đây: http://www.yaml.org/refcard.html

Bài viết gốc được đăng tải tại lcdung.top

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Junior Developer là gì? Điều kiện đạt chuẩn và yêu cầu công việc của Junior Developer

junior developer là gì

Bài viết được sự cho phép của BQT Kinh nghiệm lập trình

Hiện nay các ngành nghề liên quan đến IT – công nghệ thông tin đều nằm trong top những nghề hot. Đặc biệt có rất nhiều người đang chọn con đường theo đuổi ngành lập trình viên. Thế nhưng để có thể trở thành một Developer giỏi cần trải qua rất nhiều giai đoạn. Trong công ty chuyên nghiệp thường chia ra thành nhiều cấp bậc của lập trình viên. Và Junior Developer là cấp chuyển tiếp để có thể đạt đến trình độ cao cấp. Vậy Junior Developer là gì? Điều kiện đạt chuẩn và yêu cầu công việc của một Junior Developer là gì?

Junior Developer là gì?

Junior Developer là một chức danh/ cấp bậc được phân chia dựa theo trình độ kinh nghiệm của một lập trình viên. Có thể hiểu Junior Developer là thuật ngữ dùng để chỉ những người vào nghề được một thời gian ngắn. Tuy nhiên họ không phải là thực tập sinh hoặc những người mới tập trở thành Developer. Thông thường các Junior Developer đã có một ít kinh nghiệm làm việc và kỹ năng nhưng hầu như vẫn chưa đạt được trình độ chuyên sâu. Những người này có thể đều có vốn hiểu biết nhất định về công nghệ, lập trình nhưng cần phải học tập và rèn luyện lên trình độ cao cấp.

Những điều kiện cần có để trở thành một Junior Developer thật thụ

Junior Developer có thể tự mình giải quyết các vấn đề cơ bản thường gặp. Tuy nhiên khi gặp những điều mới lạ, chưa va chạm họ thường lúng túng và phải nhờ đến sự giúp đỡ của các tiền bối cấp cao hơn. Lúc này, các Junior Developer không tập trung phát triển phần mềm mà chủ yếu tập trung vào việc viết code hoặc phụ trách các dự án nhỏ. Phần lớn Junior Developer là giai đoạn để một lập trình viên học tập và rèn luyện để có thể trở thành một Senior Developer.

Tuyển dụng lập trình viên junior mới nhất trên TopDev

Những điều kiện cần đạt của một Junior Developer

Lập trình viên chia ra thành nhiều cấp bậc và để đạt được một cấp cần đạt những điều kiện nhất định riêng. Vậy Junior Developer cần có những điều kiện gì?

Đầu tiên, các Junior Developer phải có trình độ cơ bản về lập trình. Không chỉ biết vận dụng các lý thuyết, kiến thức đã được học ở trường đại học, người ở cấp bậc này còn phải hiểu biết sơ bộ về Web, ngôn ngữ lập trình, Code… Tuy là người có ít kinh nghiệm làm việc và cọ sát nhưng Junior Developer phải nắm vững những kiến thức cơ bản của chuyên môn.

Các Junior Developer không cần có trình độ chuyên môn quá sâu. Thông thường cấp bậc này sẽ đảm nhận những công việc rất nhẹ nhàng, những dự án nhỏ, đơn giản. Hơn nữa cách nhìn nhận và giải quyết vấn đề của Junior Developer cũng không quá chuyên nghiệp. Thay vì chú trong bài học kinh nghiệm những người này sẽ cố gắng khẳng định bản thân bằng việc chỉ chú tâm vào kết quả công việc.

Những Junior Developer cần được định hướng rất nhiều. Họ cần được chỉ dẫn và giám sát bởi những Senior Developer có kinh nghiệm, trình độ chuyên môn để có thể nhanh chóng nắm bắt những kỹ năng cần thiết nhất của một lập trình viên. Thật sự cho thấy, Junior Developer thường chưa được tiếp xúc nhiều với công nghệ thực tế cũng như chưa có nhiều cơ hội cọ sát với chuyên ngành. Điều này khiến không ít người hoang mang trước môi trường làm việc thực tại. Vì thế một vị tiền bối dẫn dắt chính là cách tốt nhất để Junior Developer có thể nhanh tiến bộ và thăng cấp. Vì vậy các bạn nên chú ý, chọn cho mình một Team leader đủ CHẤT, đủ CỨNG, và nhiệt tình hướng dẫn bạn.

  7 sự thật mình bỏ lỡ khi còn là lập trình viên junior

Làm thế nào để trở thành một Junior Developer thực thụ?

Trước tiên để có thể trở thành một Junior Developer cần thông thạo các kiến thức đã được học trên ghế nhà trường. Có thể hiểu cấp bậc này cần có trình độ cơ bản về công nghệ thông tin. Không cần đạt cấp độ chuyên nghiệp nhưng ít nhất các Junior Developer đều đã biết vận dụng tri thức để giải quyết những vấn đề đơn giản gặp phải khi làm việc.

  Trở thành Junior Dev ở tuổi 30

Các Junior Developer cần biết viết code đơn giản và cho code chạy thành công. Chính vì vậy, các lập trình viên đang ở cấp bậc này thường tập trung học viết code đến khi thông thạo và dần sáng tạo thêm nhiều code phức tạp hơn. Trình độ viết code chính là yếu tố quan trọng để xác định vị trí và tương lai của một Developer. Tùy vào tốc độ nắm bắt nhanh chậm, lập trình viên có thể được thăng cấp hoặc không.

Đồng thời, lập trình viên ở cấp này cũng phải biết cách quản lý công việc ở mức cơ bản. Junior Developer thường đảm nhiệm vụ fix bug, code những task nhỏ. Vì vậy những người này phải biết tự lập hoàn thành công việc của mình. Chăm chỉ, hòa đồng và trách nhiệm chính là những tố chất cần có ở một người bước vào nghề chưa được bao lâu. Thay vì thụ động ngồi đợi phân công, hãy tích cực tham gia vào các dự án lớn hơn cùng những Senior Developer cùng đơn vị. Hoạt động team và phụ trách dự án tầm cỡ chính là cơ hội tốt nhất để học hỏi kinh nghiệm và được các tiền bối chỉ dạy tận tình.

Tổng kết

Junior Developer tuy là những người chưa có quá nhiều kinh nghiệm trong lĩnh vực lập trình Web, công nghệ thông tin. Tuy nhiên những người này hầu hết đều có nền tảng kiến thức vô cùng chắc. Để có thể nhanh chóng nắm bắt công việc và được thăng cấp, các lập trình viên bậc Junior Developer cần nỗ lực không ngừng. Trong bài viết sau, mình sẽ mách bạn những lưu ý cần thực hiện để mau chóng trở thành Junior từ khi mới ra trường. Và làm sao để củng cố giai đoạn này tốt nhất.

Bài viết gốc được đăng tải tại kinhnghiemlaptrinh.com

Tuyển dụng nhân viên IT mới nhất trên TopDev