Chào các bạn,<br />
<br />
Rất nhiều bạn gởi email về hộp thư của myclass.vn để nhờ tư vấn là các bạn có đam mê CNTT nhưng <br />
không biết bắt đầu từ đâu.<br />
<br />
Trong chuỗi các bài viết này, qua việc sưu tầm cũng như từ kinh nghiệm của tôi, tôi xin phép được chia <br />
sẻ những kinh nghiệm của mình để có thể giúp các bạn có được những định hướng cho việc học lập <br />
trình của mình.<br />
<br />
<br />
1. L ập trình là gì ?<br />
Lập trình là công việc tạo ra một sản phẩm, một thành quả, và con đường trở thành lập trình viên sẽ rõ <br />
ràng hơn khi bạn biết rõ thứ mà các bạn sẽ tạo ra. Nếu mục tiêu của bạn chỉ là “học viết code”, mà không <br />
có định hướng rõ ràng về thứ mà các bạn sẽ làm ra và cách chúng sẽ làm cho cuộc sống tốt đẹp hơn, <br />
bạn sẽ thấy con đường phía trước đầy chông gai và khó nhọc.<br />
<br />
Lập trình là việc xây dựng ra các sản phẩm CNTT để phục vụ cho cuộc sống hằng ngày, từ các sản <br />
phẩm web, các ứng dụng máy tính, ứng dụng di động, các phần mềm, các trò chơi…<br />
<br />
<br />
2. B ạn mu ốn l ập trình cái gì ?<br />
Vậy, bạn muốn lập trình thứ gì? Một website, một trò chơi, hay một ứng dụng iPhone? Hoặc có thể bạn <br />
muốn xây dựng hẳn một công ty khởi nghiệp đáng giá hàng triệu USD? Đó cũng có thể là một sản phẩm <br />
tương tác mang tính nghệ thuật. Hay bạn muốn sử dụng kiến thức của mình để làm các sếp hài lòng và <br />
dành thời gian để làm những việc khác? Hoặc đơn giản bạn chỉ muốn kiếm việc dễ dàng hơn, muốn bổ <br />
sung vào hồ sơ của mình những thuật ngữ to tát, hoặc hoàn thiện chương trình học của mình. Tất cả <br />
những lí do trên đều có thể trở thành mục tiêu của bạn. Nhưng trên hết, bạn cần phải biết mình cần gì, <br />
và hãy học tập phục vụ cho điều đó.<br />
Bạn nên xác định rõ mình sẽ làm gì trước khi học lập trình – Ảnh: ST<br />
3. Không có gì là bí ẩn v ề l ập trình<br />
Lập trình cũng là một kỹ năng, giống như những việc khác. Giống như việc học ngoại ngữ, lập trình viên <br />
cũng phải học những mệnh đề ngữ pháp và từ vựng. Lập trình cũng giống như toán, các bạn sẽ phải <br />
theo các bước trong quy trình để giải một đề bài.<br />
<br />
4. Không có gì ch ạy ngay t ừ l ần th ử đầ u tiên<br />
… và chưa chắc đã chạy trong lần thứ hai hoặc thứ 3<br />
Khi bạn mới học lập trình, bạn sẽ gặp phải tính huống sau: bạn nghĩ rằng tất cả các dòng code đều hoàn <br />
hảo và bạn đã kiểm tra kỹ tất cả mọi thứ, nhưng code của bạn không hề chạy! Bạn không biết bắt đầu từ <br />
đâu để sửa, và những dòng thông báo (nếu may mắn chúng sẽ được hiện lên màn hình) khó hiểu. Bạn <br />
có thể nghĩ tới việc từ bỏ tại đây, bạn nghĩ rằng sẽ không bao giờ có thể tìm ra câu trả lời, bạn không thể <br />
có lời giải.<br />
Không phải lúc nào code cũng chạy – Ảnh: ST<br />
Nhưng điều này rất phổ biến với lập trình viên ở bất kỳ trình độ nào. Nó không phản ánh trí tuệ của bạn, <br />
cũng như ảnh hướng tới khả năng khám phá công nghệ cũng như cuộc đời lập trình sau này của bạn. <br />
Điều này sẽ xảy ra thường xuyên với những người mới, và cả với những lập trình viên chuyên nghiệp. <br />
Sự khác biệt thực sự lại là cách mà mọi người xử lí nó.<br />
Một điểm khác biệt giữa những lập trình ít kinh nghiệm và những người lâu năm trong nghề khi gặp khó <br />
khăn là niềm tin. Niềm tin vào việc bản thân họ sẽ tìm ra được cách khắc phục cũng như tìm ra điều <br />
chưa đúng trong dòng code. Họ cũng tin rằng sẽ có nhiều hơn một cách để thực hiện mục tiêu. Giải pháp <br />
để biến những dòng code vô dụng thành hữu ích có thể không rõ ràng, những với sự kiên trì, họ sẽ tìm <br />
ra.<br />
<br />
5. S ẽ có ai đó luôn luôn nói r ằng nh ững gì b ạn làm là sai<br />
Những tranh cãi xung quanh việc dùng dấu ngoặc nhọn ( } ) ở cuối dòng lệnh hay ở đầu dòng tiếp theo <br />
sẽ diễn ra liên miên. Việc này cũng xảy ra với việc dùng phím tab để lùi vào khi viết code. Đôi khi bạn <br />
cũng bị cuốn vào những tranh cãi trái chiều dạng như “phải comment cho từng hàm khi viết code” và <br />
“code tốt là không cần dùng comment”.<br />
<br />
<br />
<br />
<br />
Có rất nhiều phong cách trình bày code, bạn có thể chọn lấy cách phù hợp với mình – <br />
Ảnh: ST<br />
Tất cả những tranh cãi, lời khuyên này đều sẽ làm phiền bạn. Nhưng thực sự thì không bao giờ có một <br />
chuẩn mực rõ ràng cho việc lập trình. Rất nhiều lập trình viên đã lựa chọn cách làm việc mà họ cảm thấy <br />
phù hợp nhất với mình, nhưng đó chưa chắc đó đã là con đường duy nhất. Việc đối mặt với nhiều người <br />
trong nghề và nghe những nhận xét đúng sai của họ về việc lập trình của bạn là một việc vô cùng vất vả <br />
khi bạn bắt đầu sự nghiệp.<br />
Nếu bạn làm trong một nhóm lập trình, sẽ có một vài người sẽ gặp phải khó khăn khi tiếp nhận các dòng <br />
code từ bạn. Đôi khi họ đúng, những cũng có khi, họ rất cổ hủ và bắt bạn phải sửa theo cách viết của cả <br />
nhóm.<br />
Sẽ có những người nhận xét bạn không phải là lập trình viên thực thụ<br />
<br />
Viết HTML không phải là lập trình!<br />
Nếu bạn không dùng vi, bạn không biết cách lập trình đúng nghĩa.<br />
<br />
Những lập trình viên thực thụ sẽ chỉ dùng C.<br />
<br />
Windows không phải nơi để lập trình.<br />
<br />
Những thứ này không phải dành cho tất cả mọi người.<br />
<br />
Cậu không phải thể trở thành lập trình viên!!!<br />
<br />
Lập trình có ý nghĩa khác nhau với những người khác nhau, và bản thân công việc lập trình cũng đã khác <br />
rất nhiều so với thời điểm nó mới xuất hiện. Điều nực cười là rất nhiều công cụ, nền tảng được tạo ra để <br />
giúp cho những người mới học lập trình hoặc những lập trình viên lão luyện tạo ra sản phẩm nhanh hơn <br />
đều bị gán cho nhãn “không dành cho lập trình viên đích thực”.<br />
<br />
<br />
<br />
<br />
Comment hay không comment, đó là lựa chọn của bạn – Ảnh: ST<br />
Có thể thấy ở đây là sự sợ hãi của những lập trình viên. Khi ai cũng có thể dễ dàng tiếp cận với ngôn <br />
ngữ lập trình và tự tạo sản phẩm, cũng như tự gọi mình là người lập trình, thì sẽ không còn ai là lập trình <br />
viên nữa. Nhưng có lẽ, rào cản về kiến thức này đã bị phá bỏ từ rất lâu rồi.<br />
//<br />
Hãy sử dụng những công cụ giúp bạn dễ dàng xây dựng sản phẩm bạn mong muốn. Sẽ không phải xấu <br />
hổ nếu bạn nói trò chơi bạn làm ra được dựng trong Stencuyl hoặc GameMaker chứ không phải được <br />
viết từ đầu. Hãy lựa chọn cho mình môi trường và công cụ mà bạn cảm thấy thoải mái và có thể gắn bó <br />
với nó.<br />
<br />
6. Hãy kiên trì v ới vi ệc l ập trình<br />
Không có bất cứ tài liệu nào có thể chỉ cho bạn con đường đúng hoặc nhanh nhất để nắm vững kiến <br />
thức lập trình. Có rất nhiều cách để có thể học, và thực hành. Bạn có thể học những khái niệm đầu tiên <br />
từ sách hoặc những bài học trực quan trên mạng, hoặc có thể bắt đầu ngay bằng việc sửa lỗi sai của <br />
người khác. Và tất nhiên, có rất nhiều ngôn ngữ cho bạn lựa chọn để bắt đầu.<br />
Một vấn đề khá phổ biến khi các bạn tự học lập trình, đó là các bạn sẽ dễ dàng vượt qua những phần <br />
đơn giản, nhưng sẽ gặp khó khăn tại những phần rất quan trọng sau đó. Bạn có thể biết cách in một vài <br />
dòng lên màn hình, nhưng không thể làm việc được với những dự án thật. Bạn sẽ bắt đầu cảm thấy mất <br />
phương hướng và đổ lỗi cho giáo trình.<br />
<br />
<br />
<br />
<br />
Ngày nay việc học đã không còn khó khăn – Ảnh: ST<br />
Khi bạn gặp phải tình huống này, tất cả những giáo trình trực tuyến hay tài liệu đều trở nên vô dụng, vì <br />
những viết ra nó đều mặc định rằng, bạn đã có kinh nghiệm trong lập trình. Việc khó khăn tiếp theo là <br />
ệ<br />
bạn sẽ phải tìm ra thứ mình cần phải học tiếp, trong khi bạn không thể biết cái mà bạn không biết. H <br />
th ố<br />
ng khóa h<br />
ọ<br />
c l<br />
ậ<br />
p trình mi<br />
ễ<br />
n phí http://myclass.vn<br />
cũng xuất phát từ nhu cầu này, với mong muốn <br />
hỗ trợ tối đa việc học lập trình của các bạn, chúng tôi đã tạo ra kênh học lập trình miễn phí này.<br />
Bạn sẽ vấp phải trở ngại này khi học lập trình ở bất kỳ đâu, còn cách giải quyết nó, là hãy tiếp tục kiên trì <br />
với việc lập trình. Hãy tiếp tục tìm kiếm những điều mới mẻ xung quanh những thứ đã học, thu nạp thêm <br />
thông tin, và tự tay xây dựng những ứng dụng của riêng mình. Bạn sẽ dễ dàng tìm được thành công nếu <br />
như bạn biết rõ mục tiêu học lập trình của mình là gì.<br />
Thành công sẽ đến với bạn nếu bạn kiên trì xây từng viên gạch lên bức tường của mình. Nếu bạn kiên trì <br />
và dành thời gian để tìm hiểu nó, việc lập trình sẽ dễ dàng bị bạn chinh phục.<br />
<br />
7. Đi ểm c ốt lõi c ủa vi ệc h ọc l ập trình<br />
Học lập trình không khó . Khó ở chỗ là chúng ta có phương pháp học và có chịu <br />
cố gắng học hay không thôi. Khi bắt đầu học một ngôn ngữ lập trình cũng giống như bạn đang <br />
bắt đầu vào học một môn ngoại ngữ để giao tiếp với người nước ngoài. Ngôn ngữ lập trình là cách để <br />
người lập trình giao tiếp với máy tính , và nhờ nó làm 1 công việc nào đó trong phạm vi khả năng cho <br />
phép của nó. Bạn muốn điều khiển được chiếc máy tính của mình không còn cách nào khác là bạn phải <br />
nắm được tư duy lập trình (chính yếu) và ngôn ngữ lập trình (thứ yếu).<br />
Và hãy luôn nhớ điều này bất kỳ một bài toán, một yêu cầu, một công việc dù lớn hay nhỏ thì khi đưa vào <br />
lập trình sẽ trải qua 3 giai đoạn : (Nhập – Xử Lý – Xuất)<br />
<br />
<br />
<br />
<br />
Hãy nhớ kỹ điều này, nó sẽ giúp cho <br />
bạn định hình được tư duy lập trình của mình sau này. Và tôi sẽ tiếp tục chia sẽ kiến thức về tư duy lập <br />
trình với các bạn trong những phần tiếp theo .Mong các bạn xem tiếp hồi sau . Nói về lập trình thì nó <br />
mênh mông, bao la. Có thể nói là chuyện dài nhiều tập . Nhưng một khi các bạn đã nắm được cốt truyện <br />
rồi (tư duy lập trình) thì chắc chắn bạn sẽ đam mê và thích thú nó . Tôi tin là như vậy !<br />
<br />
8. Ch ọn h ướ ng l ập trình nào ?<br />
Có rất nhiều hướng đi, sau đây là một trong các hướng:<br />
Lập trình web : Frontend (là làm HTML, CSS, Javascript), Backend(PHP, Java, Ruby, Python, <br />
ASP.Net,Perl, …)<br />
<br />
Lập trình mobile : iOS, Android, Windowphone, …<br />
<br />
Lập trình mạng<br />
<br />
Lập trình nhúng<br />
<br />
Và một số hướng khác mình không thể nói hết được<br />
<br />
Và khi đã chọn được hướng đi, việc bắt đầu từ đầu cũng rất là khó khăn, đòi hỏi bạn phải kiên trì và có <br />
lòng đam mê, nếu không 1 tuần hay chừng 1 tháng là bạn sẽ nản và từ bỏ ngay.<br />
Còn nếu bạn kiên trì, vượt qua nhưng không đam mê, không tò mò lạ lẫm, không tự hỏi mình những câu <br />
hỏi về những đoạn mã đó tại sao không nên viết thế này, viết thế kia, chạy sao … rất nhiều câu hỏi. Bạn <br />
tự đặt và hỏi thì bạn thích hợp với CNTT vì bạn có đam mê, ngược lại bạn đừng đi theo nó, vì không có <br />
đam mê, bạn sẽ không thể bắt kịp mọi người khi mà tốc độ phát triển CNTT rất nhanh, nhanh hơn những <br />
ngành khác rất nhiều, điều này bạn nên cân nhắc.<br />
<br />
<br />
<br />
<br />
Về việc chọn ngành học, là do các bạn tự cân nhắc<br />
Nếu bạn đi theo lập trình web, đòi hỏi bạn rất nhiều ngôn ngữ cần hiểu biết. Bởi vì làm được 1 trang web <br />
cần kết hợp nhiều ngôn ngữ : HTML, CSS, Javascript, và 1 ngôn ngữ server (PHP, Python, Ruby, Java, <br />
C#/VB, ….) cùng với 1 database (MySQL, SQL Server, NoSQL, …)<br />
Về lập trình mobile(di động) thì bạn chỉ cần nắm 1 ngôn ngữ là đủ như : ObjectiveC dùng cho lập trình <br />
iOS, C# dùng cho lập trình Windowphone, Java cho lập trình Android. C# và Java ở đây nó là Java <br />
nhưng có biến thể 1 chút, các bạn học là sẽ nắm được sự khác biệt này.<br />
Lập trình mạng và lập trình nhúng thì mình không dám chia sẻ gì, nhưng những ngành này thì tỉ lệ việc <br />
làm kiếm được ít hơn 2 hướng trên là lập trình web và mobile, tuy nhiên ít hơn không có nghĩa là khó xin <br />
việc, vẫn có nhiều việc được đăng tuyển đều đều và lương khá cao.<br />
<br />
V ậy chúng ta nên ch ọn h ướ ng l ập trình nh ư th ế nào?<br />
Hướng nào cũng có thể mang lại cho bạn cuộc sống ổn định cả, tuy nhiên thời gian đầu bạn cũng có thể <br />
thử, thử hướng này trong một thời gian đủ dài, 3, 4 tháng chẳng hạn, nếu bạn thấy không ổn, bạn có thể <br />
đổi sang một hướng khác, cuộc sống rất dài, bỏ ra vài tháng hoặc thậm chí 1 năm để tìm được hướng đi <br />
phù hợp cho mình thì cũng không đáng là bao nhiêu, tuy nhiên qua việc thử chọn hướng, các bạn cũng <br />
sẽ ngày càng có thêm nhiều kinh nghiệm cho chính bản thân mình.<br />
<br />
9. Nên ch ọn ngôn ng ữ nào để h ọc ho ặc h ọc tr ướ c các<br />
môn l ập trình nào?<br />
Qua kinh nghiệm của tôi, thật sự ngôn ngữ không quan trọng lắm, có nhiều bạn nói tôi rằng nên học <br />
Pascal trước khi học C, C++ sẽ dễ hơn, tuy nhiên, với tôi, do là dân tỉnh lẻ, không có điều kiện học Tin <br />
học từ nhỏ, nên tôi không được học Pascal từ trường phổ thông.<br />
Sau khi thi đậu vào trường KHTN, chúng tôi được học C và C++ sau đó, tôi thấy vẫn tiếp thu tốt, nhiều <br />
bạn bè tôi từng đạt giải quốc gia tin học, tôi thấy chúng tôi không có nhiều khác biệt khi học các môn học <br />
về lập trình.<br />
Do vậy, tôi thấy học ngôn ngữ không quan trọng mấy, thứ mà tôi thấy quan trọng, chính là học cách xử lý <br />
vấn đề, suy nghĩ các thuật toán để giải quyết vấn đề, cách tổ chức chương trình, các phần này có thể tìm <br />
thấy trong các môn học về Lập trình căn bản, Lý thuyết đồ thị, Cấu trúc dữ liệu và giải thuật, CSDL và <br />
một môn học tôi thấy cực kì quan trọng đó chính là Lập trình Hướng Đối Tượng. Tư duy lập trình Hướng <br />
Đối Tượng là cực kì quan trọng, cho đến hiện này, tất cả các ngôn ngữ, các phần mềm, các ứng dụng <br />
đều phải sử dụng tư tưởng lập trình HĐT này. Do vậy, tôi nghĩ các bạn muốn làm tốt công việc lập trình, <br />
các bạn cần phải học tập vào trao dồi nhiều thứ liên quan đến lập trình Hướng đối tượng.<br />
Về ngôn ngữ lập trình, tôi đã từng lập trình từ C, C++ đến C#, đến Java, PHP, tôi thấy chúng ta chỉ cần <br />
học các từ khóa, các khai báo kiểu dữ liệu, viết một chương trình HelloWorld được là chúng ta có thể học <br />
ngôn ngữ đó, ngoại trừ một số khai báo đặt biệt, còn đa số là giống nhau về tư tưởng mà thôi.<br />
Do vậy, theo kinh nghiệm của tôi, tôi thấy rằng tư duy lập trình, lập trình Hướng đối tượng là quan trọng, <br />
còn ngôn ngữ, các bạn cứ chọn và thấy phù hợp là mình học, và tập làm các dự án một cách thuần thục <br />
về ngôn ngữ đó, khi chuyển qua ngôn ngữ khác thì mọi thứ sẽ dễ dàng.<br />
Chúc các bạn thành công theo đam mê của mình.<br />
Tổng hợp các nguồn: pandora.vn, laptrinhccanban.com<br />