Lập trình viên cần học những gì ?
Một câu hỏi được nhiều bạn sinh viên IT quan tâm là để trở thành một lập trình viên cần học những kiến thức gì, rèn luyện kỹ năng gì? Câu hỏi nghe có vẻ đơn giản nhưng rất khó để trả lời, lập trình là một lĩnh vực rất rộng, có hàng tá ngôn ngữ cần phải học, hàng trăm công nghệ cần nghiên cứu, và môi trường mỗi công ty lại hoàn toàn khác nhau, do đó các thanh niên vẫn cảm thấy rất mông lung.
Dạo này có tham gia vài nhóm lập trình trên facebook nên mình phát hiện ra là hầu hết các bạn sinh viên vẫn chưa tưởng tượng được ra trường đi làm sẽ như thế nào. Thế nên trong bài viết này, mình sẽ dùng hết kinh nghiệm bao nhiêu năm đi “code thuê” của mình, như một lời tâm sự, để cố gắng miêu tả cho các bạn sinh viên về đời sống thật của các lập trình viên ngoài kia, họ đang làm gì? Dùng ngôn ngữ gì? Có mệt không? Và làm thế nào để sống sót.
Kỹ năng mềm:
Bạn phải nhớ rằng: lập trình là “giải quyết vấn đề bằng máy tính” chứ không phải “lập trình là viết code” như được dạy trong trường đại học. Khách hàng của bạn gặp vấn đề trong việc quản lý nhân viên, bạn viết một phần mềm giúp họ, khách hàng của bạn cần quảng bá sản phẩm thương hiệu, bạn thiết kế website giúp họ, quán cafe kia order đồ uống rất chậm vì nhân viên phải ghi ra giấy, bạn làm ứng dụng android cho họ. Lập trình giải quyết các vấn đề rất thực trong cuộc sống, do đó bạn cần phải rèn luyện nhiều kỹ năng khác để giải quyết được vấn đề, đây mới là thứ quan trọng nhất, không phải là kỹ năng code của bạn. Kỹ năng mềm bao gồm cả kỹ năng phỏng vấn xin việc, trình bày vấn đề, phác họa đề xuất ý tưởng, văn hóa văn nghệ…
Team work:
Làm việc nhóm, tức là làm việc với người khác, chẳng ai viết code một mình cả đâu, bạn phải biết viết code chạy được với code của những thằng khác, thế nên từ khi còn trong trường, hãy học cách giao tiếp thật tốt với mọi người nếu sau này không muốn chửi nhau. Chấp nhận làm việc với những thằng ngu hơn bạn và học hỏi từ những thằng giỏi hơn bạn. Rảnh thì kiếm mấy quyển sách về giao tiếp với tâm lý học về mà đọc. Chân thành hòa nhã với mọi người, biết trình độ mình ở đâu và luôn có tinh thần nâng cao, mà nói chung bạn cũng không giấu dốt được đâu, sau vài lần review code là mọi người đều biết nhau ở trình độ nào cả. Thi thoảng có over time muộn quá thì cũng vui vẻ đi nhậu, trà đá hay mát-xa với anh em cho nó tăng tinh thần đoàn kết :))
Tiếng Anh:
Mình nói thật, không biết tiếng Anh thì đừng có hòng lập trình ngon, google thì cũng phải google bằng tiếng Anh nó mới nhanh ra đáp án. Tuy nhiên bạn không cần phải chém tiếng Anh như gió hay đạt điểm cao TOEIC mới lập trình giỏi. Bạn chỉ cần đọc hiểu tài liệu là đủ, gặp lỗi gì còn lên stackoverflow mà tìm cách fix được, viết tên hàm thì cũng phải viết tiếng Anh, trong thời buổi toàn cầu hóa hiện nay, outsource nhiều, code của bạn có thể được đọc bởi một thằng tây nào đó là chuyện bình thường. Đừng quá lo lắng, theo cách của mình cứ đọc gặp từ nào khó thì tra từ điển, sau một thời gian sẽ đọc được cả thôi.
Kỹ năng tự học:
Đây là yếu tố sống còn, bởi thế giới công nghệ thay đổi quá nhanh. Tin buồn là bất cứ cái gì bạn học ngày hôm nay thì sẽ là lỗi thời sau vài năm, kiểu như bạn làm được một app chạy ngon lành cành đào trên iphone 6 thì cái định mệnh, vài ngày sau Apple nó ra iphone 7, méo chạy. Kiến thức nhanh bị cũ, thế nên để khỏi bị tụt hậu, bạn phải “học cách học”, có nghĩa là bạn phải học cho mình “cách làm sao để tiếp thu một cái mới nhanh nhất có thể”.
Vấn đề sức khỏe:
Đừng tưởng làm lập trình ngồi một chỗ trong phòng máy lạnh thì không lo bệnh tật. Sau vài năm bạn sẽ thấy có vài vấn đề như đau lưng, mỏi vai hay hoa mắt… Hãy bỏ ngay các thói quen thức quá khuya, ăn uống không đúng giờ và sử dụng chất kích thích như rượu bia, thuốc lá… Một số thanh niên sau khi code điên cuồng làm vài ván dota để giải trí, lại ngồi thêm vài tiếng nữa,. Nói chung nếu không chịu khó vận động, sắp xếp thời gian chơi thể thao thì đừng mong tồn tại, bạn có sức khỏe mới theo đuổi đam mê được.
Chuyên môn về kỹ thuật:
Lập trình là một ngành kỹ thuật (of course :)) thế nên bạn phải trang bị cho mình những kiến thức về kỹ thuật nhất định. Vậy cụ thể lập trình viên cần học những gì?
Mình tạm chia lập trình viên ra làm mấy loại như sau, bạn chỉ việc chọn một cái mà bạn thích nhất, và lao vào nghiên cứu.
Mảng mobile:
Bạn sẽ viết phần mềm chạy trên các điện thoại thông minh mà phổ thông nhất là android và ios. Gần đây mảng này khá hot vì thiết bị di động ngày càng đa dạng và giá rẻ, lượng người dùng ngày càng tăng. Theo mảng này bạn học java (nếu bạn theo android) hoặc Objective-C, swift (nếu bạn theo ios)
Hiện nay nổi lên một số công nghệ multi-platform, giúp bạn có thể viết code một lần cho cả android và ios, ví dụ như React native hay Flutter cũng rất hot.
Mảng embedded:
Còn gọi là lập trình nhúng, tức là viết các chương trình chạy trong các thiết bị điện tử như tivi điều hòa, tủ lạnh, máy giặt, robot… nói chung là điều khiển các thiết bị thật, sờ nắm được. Mảng này hơi khó nhằn, yêu cầu cao về trình độ, lại liên quan đến điện tử, nhưng khá thú vị. Mảng này khó, cộng thêm xu hướng Internet Of Things đang nở rộ, thế nên lương mảng này cao ngất. Theo mảng này bạn học ngôn ngữ C, C++ hoặc có thể là java.
Mảng web:
Web là cái gì thì khỏi phải giới thiệu nữa rồi, nó là thứ lâu đời nhất trên internet. Theo cái này thì khỏi lo thiếu việc, vì công ty nào cũng cần web, nhưng mà nói thật lương bọn làm web chả cao như các mảng khác đâu. Rất nhiều ngôn ngữ có thể dùng lập trình web được, thoải mái chọn: php, java, node, python, ruby… nhưng phải học thêm cả đống lằng nhằng: html, css, javascript…
Trong mảng web, có 3 hướng cho bạn chọn đó là backend, frontend và fullstack. Lập trình viên backend lập trình xử lý phía máy chủ, lưu trữ dữ liệu, trong khi đó lập trình viên frontend xử lý phía máy khách, tức là trên trình duyệt, hiển thị giao diện với người dùng. Lập trình viên fullstack thì đa năng hơn, là người làm cả backend và frontend, bạn có thể tham khảo khóa học fullstack web developer của blog để hiểu rõ hơn.
Mảng desktop app:
Tức là làm phần mềm chạy trên máy tính, các ngôn ngữ c#, python, C, C++ đều có thể làm desktop app được. Nhưng mình khuyên là học .NET win form của bác Bill cho nó phổ thông, vì windows crack nhiều nên khá dễ kiếm việc làm, lương cũng khá ổn.
Việc của bạn là chọn một trong 4 mảng mà mình đã nêu ở trên rồi nghiên cứu thật kỹ về nó. Học đến năm 3 hoặc năm 4 hãy làm một vài project nhỏ nhỏ để còn có cái mà show ra khi đi xin việc. Theo mobile thì làm vài app trên điện thoại, theo web thì làm mấy web tin tức hoặc bán hàng, theo desktop app thì cũng phải làm được phần mềm quản lý sinh viên. Khi đi làm, trải qua vài lần đập bàn phím, kiến thức của bạn sẽ được tích lũy dần theo năm tháng.
Tuy nhiên đừng quá lo lắng rằng trình độ mình chưa đủ đáp ứng yêu cầu công việc, các công ty nơi bạn thực tập sẽ có chương trình đào tạo, cầm tay chỉ việc, bạn sẽ làm được cả thôi. Kể cả các lập trình viên có kinh nghiệm, khi vào một môi trường mới vẫn phải có thời gian để làm quen với hệ thống hiện tại.
Đăng ký kênh youtube Lập Trình Viên TV để theo dõi các video chia sẻ về định hướng trong nghề lập trình tại đây
Nói chung, lập trình là một thế giới vô cùng thú vị. Đây là bài viết mà mình lảm nhảm tất tần tật những điều bạn cần phải học, những vấn đề mà bạn sẽ gặp trên con đường trở thành một lập trình viên. Hi vọng sẽ giúp được bạn cái gì đó, chúc bạn thành công với đam mê của mình.