Hôm nay cũng không rảnh lắm nhưng ngứa tay viết vài dòng chia sẻ về vấn đề tác phong và thói quen khi làm việc, giải đáp 1 số câu hỏi kinh điển 😀
Mình cũng hay lang thang trên các diễn đàn và group lập trình, thấy có 1 số kiểu câu hỏi lặp đi lặp lại rất nhiều lần, ngày này qua năm khác
- Nên chọn ngôn ngữ lập trình nào?
Đầu tiên, khi nói về lập trình thì nhiều bạn mới học sẽ đắn đo về việc lựa chọn ngôn ngữ để theo đuổi, ngôn ngữ nào dễ học/phổ biến/lương cao/… Để nói về dễ học thì theo mình có thể chọn 1 trong các ngôn ngữ như Pascal/C/VB/Delphi/Python, cú pháp của các ngôn ngữ này khá gần gũi và dễ tiếp cận để làm quen với tư tưởng lập trình, cảm thấy hứng thú với cái nào thì chọn cái đó. Còn nếu các bạn học trên lớp không được lựa chọn mà phải học theo giáo trình 1 ngôn ngữ gì đó thì tốt nhất cứ cố gắng học cho tốt nó đi, mọi ngôn ngữ đều làm được những thứ nghịch ngợm rất hay ho chứ không chỉ là giải mấy bài phương trình bậc 2 trên lớp, nếu chưa thử tìm hiểu được những cái đó thì nên tiếp tục học thay vì kêu gào đòi sửa sách giáo dục, dù sao cũng chỉ là ngôn ngữ làm quen với lập trình chứ ko phải bám theo nó suốt đời nên chả ảnh hưởng gì cả. Mình thấy nhiều bạn phản ứng thái quá với việc nhà trường cho nhập môn bằng Pascal hay VB trong khi bạn đó lại thích Python, cách phản ứng đó không tốt cho lắm mà còn ảnh hưởng đến nền tảng của bạn. - Vậy ngôn ngữ nào phổ biến và lương cao?
Cũng nhiều bạn đang học năm nhất nhưng đã rất quan tâm đến vấn đề này và muốn đầu tư thời gian cho nó. Nhưng có 1 vấn đề quan trọng khác là công nghệ thay đổi từng ngày, những gì là xu thế của hiện tại thì rất có thể sẽ là cổ hủ sau khi bạn ra trường. Định hướng sớm là tốt nhưng bám chặt 1 cái gì quá sẽ không phải là lợi thế. Đến lúc đi làm thì việc ngôn ngữ lập trình chỉ là hư vô, tư tưởng lập trình mới trường tồn 😀 . Thay vì việc học 1 ngôn ngữ thì nên học cách tiếp cận 1 ngôn ngữ, như vậy sau này nếu có cái gì mới ra thì sẽ biết cách tiếp cận rất nhanh. Để học được cách tiếp cận 1 ngôn ngữ thì nên học nhiều ngôn ngữ khác nhau sẽ tự đúc kết được phương pháp riêng cho mình. Rồi đến năm 3 năm 4 thì hãy quan tâm đến định hướng chính xác của mình (Java/.Net/Android/iOS/…) vì sau đó 1-2 năm bạn tốt nghiệp thì công nghệ sẽ không thay đổi quá nhiều, trend bấy giờ vẫn sẽ kiếm được tiền 😀 Và khi định hướng được rồi thì tranh thủ nghiên cứu cả các framework nội bật của ngôn ngữ đó, bản thân mình và mình cũng thấy nhiều sinh viên mới ra trường không có chút kiến thức gì về framework, có khi còn chưa nghe thấy tên bao giờ, đó là do không được ai đi trước tư vấn và bản thân cũng không biết để tìm hiểu, đó là thiếu sót lớn của sinh viên mới ra trường. - Lập trình Java nên dùng IDE gì?
Sau khi chọn được ngôn ngữ rồi thì lại băn khoăn cái công cụ lập trình nào ngon nhất :v . Với .Net thì mặc định là Visual Studio rồi, PHP thì cái gì cũng được, còn Java thì hơi hỗn loạn, nhưng mạnh nhất cũng chỉ có Eclipse/IntelliJ/Netbean. Tùy theo yêu cầu của công ty có bắt buộc sử dụng IDE nào không, nếu không thì mình khuyên dùng theo thứ tự dưới đây- IntelliJ: Hàng mất tiền có khác, nếu là sinh viên thì có thể lấy được licence dành cho sinh viên, bộ phím tắt mạnh mẽ hỗ trợ sẵn chuyển đổi dễ dàng thành eclipse/netbean/visual studio/… tùy theo thói quen người dùng. Liên tục cập nhật tính năng mới theo phát triển của JDK. Đặc biệt khả năng tìm kiếm text trong project nhanh, call hierarchy và reference trên cả html/css/js rất nhanh do cái gì cũng được đánh index khi khởi tạo project. Ngoài ra còn tích hợp sẵn decompile class và debug vào class hay lib jar dễ dàng. Nhưng nhược điểm lớn nhất là không thể mở nhiều project trên cùng 1 cửa sổ như netbean hay eclipse, và quan trọng là phải trả tiền mới dùng được full chức năng. Cùng với đó thì có Android Studio là bản free dành cho Android, hay các anh chị em ruột khác dùng dòng Jetbrains như PyCharm, PhpStorm,… là những IDE khá tốt với đầy đủ những thế mạnh chung của Jetbrains. Mình cũng hay sử dụng DataGrip để làm việc với Database all in one thay cho SQL Navigator/SQL Developer/MySQL/…
- Eclipse: Miễn phí, thông dụng và được nhiều công ty sử dụng do dễ cài đặt, có vẻ thị phần lớn nhất vẫn là eclipse, có cả bản portable chính thống, nhiều plugin hỗ trợ. Nhưng mình không thích dùng eclipse vì thi thoảng hay bị Not Responding rồi mờ tịt màn hình, và cũng không có Ctrl+Tab để chuyển đổi nhanh giữa các tab file code đang làm việc được.
- Netbean: IDE này phần lớn dùng trong giảng dạy (thực tế giờ cũng nhiều trường chuyển sang IntelliJ rồi vì được hỗ trợ licence cho sinh viên) và 1 số công ty cũng đang sử dụng, gọn nhẹ, dễ config, nhưng plugin không đa dạng bằng eclipse nên ít được sử dụng hơn.
Dưới đây thì mình sẽ nói chuyện đến 1 số thứ mà mình thấy nên rèn luyện để có được hiệu quả công việc tốt nhất.
- Sử dụng phím tắt thay vì chuột: Lập trình là gõ phím, khi đang gõ code mà hạn chế dùng chuột được là tốt nhất, thay vì dùng chuột thì nhớ phím tắt của công cụ. Những thao tác rất hay dùng và cần phím tắt để tăng tốc làm việc như Copy/Paste/Dịch 1 đoạn code lên xuống/Trở về 1 vị trí đã sửa trước đó/Duplicate 1 đoạn code/Chuyển đổi giữa các tab file code/Trở về đầu cuối file, đầu cuối dòng/Debug/…
Thường xuyên review code, đọc code của người khác, vì phần lớn các đoạn code mình gõ ra là do đã từng nhìn thấy ở đâu đó rồi chắp ghép lại, đọc càng nhiều thì càng có nhiều cái để chắp ghép, nếu chỉ tự ngồi nghĩ ra và gõ thì vài năm nữa cũng không gõ được thêm cái gì mới. Rảnh nữa thì fixbug cùng người khác =)) vì thời gian bạn làm việc có nhiều đến bao nhiêu cũng không đủ để gặp được tất cả các bug trên đời, chỉ có fixbug của người khác mới tăng được số lần va chạm với bug, từ đó mới tăng thêm kinh nghiệm xử lý. - Debug: Khi gặp bug, hãy chịu khó sử dụng tính năng debug của IDE thay vì việc dò lỗi bằng mắt hoặc dùng print console 😀 Muốn tiến bộ và tự chủ trong xử lý vấn đề thì phải thuần thục debug, biết cách Evaluate/watch value của 1 biến hay 1 đoạn code, biết debug vào hàm, debug trong thread và khắp mọi nơi trong project kể cả lib đã đóng gói.
- Ghi log: Có nhiều trường hợp không debug trên máy tính được ví dụ như hệ thống chạy trên server thật, có khi lỗi đó cũng rất khó tái hiện lại, vậy nên hãy chịu khó ghi log không quá nhiều nhưng phải đủ tại các đoạn code rủi ro, các dịch vụ chạy thường xuyên, các đoạn nghiệp vụ xử lý chậm, khi có lỗi thì có thể trace log để biết càng nhiều thông tin càng dễ tìm ra lỗi. Mình sẽ có 1 bài chi tiết hơn về việc ghi log trong phần mềm sao cho hợp lý và những lợi ích to lớn nó đem lại.
- Thời gian giải quyết lỗi: Khi gặp 1 lỗi khó nếu cố ngấu nghiến nó vài ngày thì sẽ phản tác dụng, vì lúc đó bạn đang bị cuốn theo 1 luồng suy nghĩ không break ra nổi, nếu suy nghĩ đó đúng hướng thì không sao, nhưng nếu sai hướng thì càng ngày càng sai. Nên tạm dừng lại chuyển sang việc khác (có thể là giải trí) và quay lại sau để refresh đầu óc. Cách làm việc của mình là, nếu quá 4-8 tiếng không tìm ra cách xử lý thì đi hỏi các cao nhân, lúc đó mới có cơ sở để hỏi “Em đang gặp lỗi ABC, em đã tìm kiếm XYZ và thử JQK,… nhưng không được”. Nếu sau khi hỏi cao nhân mà vẫn không tác dụng thì sau 4-8 tiếng nên thoát ra làm task khác hoặc đi chơi, 1-2 ngày sau quay lại xử lý tiếp. Đôi khi các lỗi nhỏ mang tính ngớ ngẩn thì chỉ cần đi WC về là thông luôn =))
- Cuối cùng là 1 lời khuyên vui vui: Không nên làm việc liên tục 8 tiếng mỗi ngày, hãy chia nhỏ ra khoảng 2-3 tiếng thì đứng dậy đi lại loanh quanh, trà đá chém gió. Vừa tăng kỹ năng giao tiếp, tăng mối quan hệ với đồng nghiệp, giảm thiểu các bệnh về cột sống, mắt và bệnh liên quan đến “cửa hậu” =))) Tất nhiên việc đang làm mà đi chém gió thì cũng phải phụ thuộc vào môi trường làm việc của công ty 🙂
Hết giờ liên thiên rồi, chúc các bạn cuối tuần vui vẻ! 🙂
One Reply to “Nên học ngôn ngữ lập trình nào? Nên chọn IDE nào cho lập trình Java?”