Lập trình viên cần học những gì ?

Một trong những câu hỏi được nhiều bạn sinh viên ngành công nghệ quan tâm nhất đó là: Cần học những kiến thức gì, rèn luyện kỹ năng gì để trở thành một lập trình viên? 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 như một trò đùa”.

Dạo này mình có tham gia vài nhóm học lập trình trên facebook, 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.

lập trình viên

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ọ. 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.

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 sử dụng git và 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, thi thoảng có over time muộn quá cũng đ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 900 điểm 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. 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 :smile:) 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ì? Có thể chia lũ “code thuê” 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 điện thoại 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 (android) hoặc Objective-C (ios)

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…

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.

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.