Search This Blog

Thursday, April 1, 2021

Q&A – Hiểu nhiều hơn về Lập trình

[Q&A – Hiểu nhiều hơn về Lập trình] 

Xin chào mọi người, mình là một Lập trình viên ở trình độ senior. Mức kinh nghiệm của mình là 8 năm, và những ngôn ngữ mình đã biết đến bao gồm: PHP, C#, C/C++, Java, Javascript, Python, Visual Basic,... trong đó C# và Javascript (NodeJS) là ngôn ngữ mình thành thạo nhất. Và mình cũng gần như là full stack. 

Mình đã nằm vùng rất là nhiều nhóm lập trình, điển hình như nhóm này, vì tình yêu của mình đối với lập trình là bất diệt, đó là một niềm đam mê duy nhất của mình và mình vẫn luôn duy trì nó suốt hơn 8 năm.

Đây là một bài viết chia sẻ về kinh nghiệm trong lập trình mà mình đã lên kế hoạch từ lâu. Nhưng mà hơi chậm trễ một tí so với mình dự tính, vì cũng có kha khá bận với công việc hiện tại. Nhưng mà mình vẫn dành thời gian theo dõi nhóm để nắm bắt tình hình và chia sẻ những quan điểm đúng đắn hơn. Mình đã từng chia sẻ kinh nghiệm cho rất nhiều nhóm, và chắc hẳn nhiều bạn ở đây cũng từng biết và theo dõi mình từ khi mình còn là một lập trình viên kiêm một founder trẻ cho một công ty công nghệ 'nho nhỏ'. =]]

Vậy chúng ta sẽ bắt đầu với FAQ (những câu hỏi thường gặp) nhé. 

–––
Q –> Question
A –> Answer
–––
Q: Học lập trình thì nên bắt đầu từ đâu? 
A: Lập trình có rất nhiều hướng để bắt đầu, và nó không hề cố định. Và tùy thuộc vào mảng trong mà bạn chọn.

Đây là một số ví dụ bạn có thể tham khảo:
- Lập trình web: HTML/CSS (đây không phải là ngôn ngữ lập trình, nhưng nó là căn bản để bắt đầu cho việc lập trình/thiết kế web) —> PHP, NodeJS, Java, C#, Python,... (bạn có thể chọn một trong những ngôn ngữ này) 
- Lập trình phần mềm: C# .NET, Java, Python, C/C++, NodeJS (Electron.js),... (bạn có thể chọn một trong những ngôn ngữ này) 
- Lập trình game: Javascript (cocos2d), C# (Unity Engine), C/C++ (Unreal Engine), Python (Pygame),... (bạn có thể chọn một trong những ngôn ngữ này) 
- etc.

* Đây là những ngôn ngữ trong tầm hiểu biết của mình, bạn có thể đưa ra lựa chọn khác nếu bạn cảm thấy thích hợp. 

Tuy nhiên, bạn muốn học lập trình (nói chung) thì mình đề xuất các bạn nên học C/C++ để rèn luyện tư duy. Nhưng cũng không hẳn là cần thiết nếu bạn đã lựa hướng đi của bản thân và đã chọn một ngôn ngữ riêng mình. 

–––
Q: Trong quá trình học lập trình thì có nên đi hỏi hoặc tìm sự giúp đỡ không? 
A: Câu trả lời là CÓ. 

Khoảng mấy năm trước, khi mình mới bắt đầu tìm hiểu về PHP. Vì lúc đó mình chưa phải một lập trình viên chuyên nghiệp, nên khả năng tìm kiếm của mình hơi kém nên vì thế mình đã tìm đến group PHP trên Facebook để tìm sự giúp đỡ, lúc đó gần như mình ngày nào mình cũng lên đó để hỏi và tìm sự giúp đỡ. Và những thành viên ở đó cũng đã giải quyết rất nhiều vấn đề của mình khi mới tìm hiểu, và đến bây giờ mình vẫn thật sự biết ơn họ. Đương nhiên mọi thứ cần phải phát triển, bao gồm cả tư duy của bản thân, nên hiện tại thì mình không cần phải đi hỏi nữa vì mình có thể tự giải quyết vấn đề với tri thức hiện có, nhưng mình cũng không phủ nhận việc tìm sự giúp đỡ là cũng là một cách để giải quyết vấn đề trong lập trình. 

Nên mình cũng mong, nếu bạn nào có gặp khó khăn trong việc tìm hiểu lập trình, thì các không phải ngại gì mà để đi hỏi cả. Nhưng mình cũng khuyến khích mọi người là nên hỏi có chừng mực, như vậy sẽ mang lại kết quả tốt hơn, chứ cái gì cũng đi hỏi thì nó có thể sẽ mang lại nhiều kết quả không tốt. 

–––
Q: Có thể học lập trình khi không giỏi (hoặc không tốt) tiếng Anh và Toán không? 
A: Câu trả lời là CÓ.  

Bạn vẫn có thể học lập trình khi bạn không có kiến thức về tiếng Anh, với sự tồn tại của Google Dịch, và những tài liệu tiếng Việt ngày càng nhiều thì việc không biết đến anh không phải một vấn đề nữa.

Còn về Toán cũng thế. Lập trình có một định nghĩa rất rộng, và hay khác hơn lập trình có rất nhiều mảng (eg: lập trình web, lập trình mobile, lập trình game,...), thực tế có khá ít mảng của lập trình áp dụng toán cao siêu, còn lại thì nó thường chỉ áp dụng kiến thức toán cơ bản. Nên bạn cũng không cần một kiến thức về Toán tốt mới có thể học lập trình. 

NHƯNG, đó chỉ là mình nói về hướng tích cực nhất của vấn đề thôi. Thực tế thì tiếng Anh và Toán không quan trọng với lập trình, nhưng nó lại cần thiết với lập trình? Vậy sẽ ra sao nếu bạn không tốt nó? 

Như ở trên mình đã nói, "tiếng Anh và Toán không quan trọng với lập trình nhưng nó lại cần thiết với lập trình" có nghĩa là vì nó không quan trọng nên dù bạn không có kiến thức nhiều về nó thì bạn vẫn có thể học lập trình được, nhưng vì nó cần thiết nên nếu bạn không cải thiện nó thì bạn sẽ bị giới hạn, tuột hậu khi học lập trình. 

Đối với Toán. Việc giỏi Toán đồng nghĩa tư duy của bạn rất tốt, và nó một lợi thế để cải thiện vấn đề trong lập trình. Giảm bớt những khó khăn lập trình và khả năng tối ưu của người giỏi toán thường tốt hơn người không giỏi. Và bạn cũng sẽ không cơ hội học những ngành có sự liên kết chặt chẽ với Toán (điển hình là Lập trình Game). Đây cũng thật sự không phải là một vấn đề lớn, nói chung việc cải thiện thì tốt, còn không thì sẽ xảy ra một chút khó khăn nhưng nó vẫn sẽ được bù đắp bằng nhiều thứ khác. 

Đối với tiếng Anh. Những ngôn ngữ lập trình có mối liên kết mạnh mẽ với tiếng Anh (cụ thể cú pháp, tên hàm, tên biến,... đều có sự liên quan đến tiếng Anh), và những tài liệu về lập trình thì sẽ luôn hỗ trợ tiếng Anh. Nên nếu bạn không giỏi tiếng Anh, việc tìm hiểu lập trình của bạn sẽ khá là khó khăn, dù ở trên mình đã có nói là "tài liệu tiếng Việt ngày càng nhiều" thì thật sự nó vốn đã rất ít và chỉ đang nhiều lên, nên như vậy vẫn chưa đủ để phục vụ cho mục đích tìm hiểu sâu rộng về lập trình. Và hơn hết, tiếng Anh rất quan trọng trong việc xin việc, đa số các công ty thật sự không muốn tuyển người có trình độ tiếng Anh kém, vì nếu bạn code mà dùng quá nhiều tiếng Việt nó sẽ thiếu chuyên nghiệp, và rất nhiều công ty luôn thường xuyên sử dụng tiếng Anh để thể hiện sự chuyên nghiệp. Sẽ ra sao nếu đối tác họ nhìn vào code toàn tiếng Việt? Đương nhiên là họ sẽ không muốn rồi. Nhưng bạn đừng lo, bạn chỉ cần đọc hiểu và viết tiếng Anh ở mức bình thường là được rồi, chứ không cần phải giỏi như đi thi IELTS đâu. =))))

–––
Q: Để học lập trình thì bản thân cần phải có những gì?
A: Đầu tiên, cần thiết nhất đó chính là máy tính (dĩ nhiên rồi). =))) Và thứ hai, ngoài tư duy ra, bản thân bạn phải có quyết tâm và sự kiên trì, vì nói đến lập trình thì cũng có thể học, nhưng học được hay không thì không phải chuyện đơn giản. =))) Những người thiếu quyết tâm, thiếu kiên trì, xem nhẹ vấn đề thường rất khó để học lập trình. 

Mà tại sao sự quyết tâm và sự kiên trì lại sún trọng? Lập trình là một thứ phức tạp, và có thể nó sẽ mang lại nhiều áp lực nếu bạn nghiêm túc với nó, nên bạn cần có một quyết tâm lớn để chịu đựng và đồng hành cùng nó. Song đó, thước đo của lập trình viên thì thường là kinh nghiệm, mà nhắc tới kinh nghiệm thì chỉ có thể tính bằng năm và người đạt ở mức thành thạo thường có 2 năm kinh nghiệm trở lên. Lập trình là một phần của công nghệ, và công nghệ thì không hề có điểm đừng, và vì thế bạn cần có sự kiên trì, để tiếp thu nhiều kiến mới hơn và trở nên giỏi hơn. 

Có nhiều bạn vài ngày hay vài tuần đã than lên than xuống, nhưng các bạn đâu biết 8 năm qua mình đã phải trải qua biết bao nhiêu cái địa ngục đâu. :c 

–––
Cuối cùng. Như ở trên mình đã nói về lý do mình viết bài này, nhưng đầy đủ hơn là rất yêu lập trình, và mình tôn trọng những người đã và đang (có ý định) học lập trình, và với tình yêu của mình với lập trình, mình luôn luôn mong muốn mọi người cùng nhau giúp đỡ lẫn nhau, cùng nhau chia sẻ những kiến thức tốt đẹp với nhau. 

Và mình cũng mong cộng đồng sẽ xuất hiện câu hỏi của những người thật sự quan tâm đến lập trình nhiều hơn. Hơn hết, không nên đăng những quan điểm lệch lạc hay những câu đùa mang tính cợt nhả về lập trình hoặc người học lập trình. Đôi khi mình cũng muốn chửi lắm, nhưng nói thật là mình không muốn bận tâm đâu nên mình đã không bình luận gì với mấy bài đó, nhưng có vẻ nó ngày càng nhiều khiến mình không thoải mái, vì vậy mình chỉ mong mọi người sẽ có ý thức hơn trong việc xây dựng cộng đồng =^_^=

— Chúc may mắn, những lập trình viên trẻ! 

–––
Các bạn có gì các bạn có thể hỏi thêm, và nếu cần thiết chúng ta có thể cafe với nhau tại Sài Gòn (nếu mình và bạn rảnh =))))

Image source @ dreamlevels[.]com

No comments:

Post a Comment

CON NGƯỜI và TINH THẦN

CON NGƯỜI và TINH THẦN 1 –  " Nếu có một gã trọc phú hàng to súng lớn, có thể mua biệt thự alibaba cho em ở, xe lếch xù cho em đi, nạp ...