Bạn là sinh viên, muốn rèn luyện khả năng code của bản thân nhưng không biết làm thế nào?
Bạn nghĩ mình code giỏi hơn bạn bè, muốn tìm một nơi để “thi đấu” và “thể hiện trình độ”?
Bạn là dân đi làm, muốn mài giũa kĩ năng code để có thể cạnh tranh với “lớp trẻ”?
Bạn sắp có một cuộc phỏng vấn quan trọng, muốn ôn lại những dạng đề thi hay gặp?
Bạn có khả năng lập trình, muốn được lọt vào mắt xanh của các nhà tuyển dụng lớn như Google, Facebook?
Bài viết này sẽ giới thiệu cách để bạn đạt được những điều nói trên. Kéo xuống để đọc tiếp nhé!
Làm sao để code giỏi? Dĩ nhiên là phải… tập code
Có một sự thật hiển nhiên, đúng với mọi ngành nghề là: Muốn trở nên giỏi một việc gì đó thì phải thường xuyên luyện tập.
Bác sĩ muốn khám chữa bệnh giỏi thì phải thường xuyên khám nhiều bệnh nhân, luyện tập chữa bệnh. Anh ăn xin muốn xin được nhiều tiền thì phải thường xuyên tập các tư thế xin ăn mới…
Lẽ đương nhiên, muốn code giỏi thì chúng ta phải… tập code. Tuy nhiên, tập code không đơn giản chỉ là ngồi xuống, mở máy lên và gõ code lung tung. Cái đó gọi là tập gõ phím chứ không phải là tập code!
Để tập code, ta phải nghĩ ra vấn đề, sau đó thử dùng code để giải quyết vấn đề đó. Thế nhưng, làm sao nghĩ ra vấn đề hay, thú vị, thử thách được bản thân? Làm sao để biết cách giải quyết của mình có đúng hay không?
Đừng lo, trong bài này mình sẽ giới thiệu một số trang web rất hay! Bạn sẽ có vô số vấn đề hay ho để giải quyết. Mỗi vấn đề đều đi kèm với test case để kiểm tra code, đồng thời có đáp án của những người đi trước để bạn học hỏi. Không tin à, xem phần dưới nhé.
Một số trang web nổi tiếng để… luyện code
Hiện tại, ta có thể truy cập một số trang dưới đây để “luyện tập” khả năng code, nâng cao trình độ, cũng như … thi đấu với các coder khác.
Hackerrank
Trang này quá nổi tiếng nên chắc nhiều bạn cũng biết rồi. Hackerrank có vô số câu đố cho bạn thử trình độ, từ cơ bản cho tới phức tạp (qui hoạch động, đồ thị, đệ qui, …). Các bài tập đều có phân loại từ dễ tới khó, ai cũng có thể thử sức.
Topcoder
Trang này chỉ thua hackerrank về độ nổi tiếng. Topcoder đặt nặng tính thi đấu hơn. Bạn sẽ không được điểm khi giải bài tập mà chỉ được điểm khi tham gia các tournament. Bạn sẽ phải thi xem ai viết code nhanh hơn, performance cao hơn, khá là hồi hộp.
Codefights
Trang này khá mới nên chưa nổi tiếng lắm. Tuy nhiên, nó có chế độ combat 1vs1 và tournament ngăn ngắn (10 phút) khá hay. Nội dung thi đấu không chỉ có viết code mà còn có fix bug hoặc điền code vào chỗ trống.
Một điều thú vị nữa của codefight là chế độ vs bot. Mỗi công ty nổi tiếng (Uber, Quora, Instagram,…) sẽ có một con bot đại diện. Nếu đánh thắng bot, bạn sẽ có cơ hội thử apply vào các công ty này.
Những lợi ích khi tham gia “thi đấu”
Luyện tập và thi đấu trên những trang này sẽ giúp bạn nâng cao khả năng tư duy và khả năng code. Thông qua việc xem câu trả lời của người khác, bạn có thể học được cách code hay, cách nghĩ lạ. Lâu lâu mình cũng hay vào để rèn luyện trí óc và ôn kiến thức cơ bản luôn.
Những đề bài dạng này cũng giúp bạn luyện tập trước khi phỏng vấn. Để giải được các bài toán trên này, bạn cần phải rành thuật toán, các cấu trúc dữ liệu thường gặp. Độ khó của những câu hỏi khi phỏng vấn cũng chỉ ngang ngửa các bài trên này thôi.
Ngoài ra, bạn còn có thể chứng mình trình độ, khả năng của bản thân bằng cách thử “leo rank”. Nếu đạt thứ hạng cao, bạn có thể được các nhà tuyển dụng (nước ngoài lẫn trong nước) để mắt đến. Chưa kể, bạn còn góp phần nâng rank của Việt Nam trên bản xếp hạng, giúp gây dựng danh tiếng cho quốc gia (nghe oai phết).
Đôi điều lưu ý
Cái gì cũng có hai mặt. Các trang web mình giới thiệu tập trung vào competitive programming, tức là programming thi đấu. Nó giúp bạn tư duy nhanh nhạy và sắc bén hơn, nhưng nó không giống với công việc hằng ngày của bạn.
Công việc thường ngày của lập trình viên là viết code, xây dựng sản phẩm. Bạn có thời gian để suy nghĩ, thiết kế, tìm ra cách giải chung với mọi người chứ không phải tranh đua thi thố với ai cả. Người đưa ra bài toán ở đây là khách hàng. Code viết ra phải dễ đọc, dễ bảo trì, giải quyết được vấn đề.
Do đó, dù bạn có xếp hạng cao hay gì đó thì cũng nên khiêm tốn, đừng tự cao quá nhé. Xét cho cùng, đây chỉ là thi thố! Trình độ thật sự của coder không nằm ở chỗ ai viết code chạy nhanh hơn, ai giải toán nhanh hơn, mà nó thể hiện ở khả năng thiết kế hệ thống, tạo ra phần mềm và sản phẩm cơ.
Bạn nào đã có kinh nghiệm tham gia những trang này thì comment chia sẻ kinh nghiệm cho những bạn đi sau nhé.
Techtalk via toidicodedao