Cách học lập trình thất bại

A có nói quá khi nói như vậy?
Practise make perfect.

  • Có giải đi giải lại nhiều bt nhuẫn nhuyên rồi mà không ứng dụng được mới là thất bại của bộ giáo dục. Bộ làm vậy là đúng thôi. Giải nhiều, não sẽ hình thành phản xạ tự nhiên nên khi gặp 1 vấn đề nào đó. Não sẽ tự động lôi những cái “phản xạ” ra để so sánh giải quyết. Con người chứ ko phải là máy mà nhớ hết mọi thứ chỉ qua vài lần học.
  • A nói người ta nghiên cứu, nhưng đó cũng là 1 bài tập ứng dụng lại CT và KT đã học để sáng tạo ra cái mới. Mà BT đó thay vì được giáo viên giao thì tự nghĩ ra mà làm. Nếu trong quá trình đó, có những CT không đáp ứng đc người ta mới bắt đầu hình thành CT mới. Mà quá trình hình thành 1 CT mới và để chứng minh đc nó đúng cũng dùng lại CT cũ để chứng minh thôi. Mà dùng CT cũ cm chả khác gì a lại làm lại BT của CT cũ. Bởi nếu a đã nhuần nhuyễn từ trc. Thì liệu việc CM có khó? Nếu nhuẫn nhuyễn từ trc thì việc sáng tạo có khó nữa ko?
  • Vậy nên chả cớ gì, facebook hay cho hacker marathon hằng năm, google cho code jam cũng chỉ là các dạng bt với thuật toán cũ chỉ là có 1 chút biến đổi để tìm nhân tài cả. vì họ yêu cầu rành về cái gì đó rồi hẵng nghiên cứu, nghiên cứu mà ko có nền vững chắc thì chỉ mất thời gian công sức đi học lại cái cũ mà thôi. Mà cái nền đó muốn chắc thì cũng từ bt mà ra.
  • À giải quyết vấn đề thực tế thì nó cũng là BT thôi. Chỉ qua là bài tập ứng dụng. Chả có gì ko có lời giải cả. Chỉ là chưa tìm ra câu trả lời đúng và hợp lý thôi.
15 Likes

Chính xác! Ở trường đại học mình được học C . Nhưng ngay từ đầu đã không thích cái cách tiếp cận ‘thừa bài tập, thiếu ứng dụng’ như thế. Và đã trượt môn này, sang kì sau học lập trình nâng cao , biết rằng cái mình nhận được chỉ là một đống khái niệm mông lung, cứng nhắc, khô khan qua một ‘rổ’ bài tập ngoài ra trí tưởng tượng, óc sáng tạo, trí tò mò, cái nhìn tổng quát, tính tỉ mỉ… rất hạn hẹp nên đã bỏ không đăng kí học nữa (hơi nổi loạn nhỉ!).

Và ở nhà tự down sách tiếng anh về học. Nếu ai đã đọc một số cuốn như: ‘Learn Python the hard way’, 'Hacking Cipher with Python, hay ‘Invent with Python(making game)’ thì sẽ thấy cách mà người tây học. Các khái niệm ‘khô khan’ được hiểu qua một chương trình ‘mã hóa’ hay chương trình ‘giải mã’ hay qua một chương trình làm game… rồi sau đó là giải thích các khái niệm, rồi tại sao lại như này mà không như thế kia… Rất thực dụng! Và mình thấy học kiểu thế sẽ ‘kích thích’ óc giải quyết vấn đề một cách thực tế hơn, mang tính ‘vận dụng’ nhiều hơn là ‘thuộc lòng qua bài tập’.

17 Likes
  1. Hi, em cũng có ý nghĩ như a đó, hiện tại má e ở nhà có mở 1 quầy tạp hóa, tết này về quê em dự định làm 1 chương trình xuát tên mặt hàng, giá tiền, số lượng mặt hàng còn trong kho qua việc nhập má số của mặt hàng đó, và 1 chương trình tính in ra hàng hóa đã bán trong ngày, thời gian bán, số lượng bán và tổng tiền bán trong ngày đó, có gì thắc mắc e sẽ lên DNH hỏi a và mấy mem nhé! Dự là sẽ rất nhiều đấy :smile:

  2. Em có đọc bài này http://vinacode.net/2014/10/31/tro-thanh-mot-lap-trinh-vien-gioi/
    Theo em nghĩ, ý tác giả muốn nói…
    Bước 1: là học hết những thứ căn bản của 1 NNLT và chỉ tập trung giải bt thuộc ngôn ngữ đó thôi.
    Sau đó Bước 2 mới làm 1 ứng dụng thực tế .
    Còn a @ltd nghĩ sao?.

Hiện tại e đang học theo kiểu đó :sweat:.

7 Likes

Anh cũng hoàn toàn đồng ý với ý của em, anh chưa đọc bài kia, anh sẽ đọc rồi edit comment này lại. Cái anh muốn nói là mọi người đừng học như học phổ thông nữa. Học phổ thông gọi là học nhồi nhét, giáo viên ra đề, học sinh đem về giải rồi giải thật nhiều để nhớ dạng đề. Sau đó đi thi, cứ dạng để nào thì có cách giải đấy. Anh nói đấy là “Thất bại giao dục” bởi vì nó sẽ giết chết hứng thú học tập của người học. Thay vào đó nó cổ vũ tinh thần học thuộc lòng.

Anh viết bài này là để nhắn nhủ với các bạn sinh viên rằng mình đã lên đại học rồi, hãy học một cách có hệ thống hơn. Sau khi làm các bài tập cơ bản của ngôn ngữ. Thay vì đi tìm thêm sách bài tập và bài giải để giải như thời học sinh. Các bạn hãy tìm các quyển sách được đánh giá cao, mua về đọc và nghiên cứu cho sâu rồi thực hành những lý thuyết này. Về sau, các bạn sẽ không tìm thấy các loại sách như thế này nữa đâu

Và hiện tại anh thấy là hầu hết các nội dung học đều học như vậy, và không phải toàn bộ các học sinh đều có thể nắm được kiến thức và áp dụng được kiến thức. Vì vậy anh bảo đây là thất bại. Nhưng nếu mình là người học, mình phải chọn cho mình một phương pháp khoa học hơn thay vì chăm chăm giải bài tập mà quên mất bản chất của việc học lập trình là giải quyết các vấn đề trong cuộc sống chứ không phải các bạn sẽ chỉ phải giải các bài tập trong sách.

Cũng giống như toán, nó dùng để giải quyết các vấn đề phức tạp trong cuộc sống chứ không phải để giải bài tập. Lúc anh học phổ thông, nếu ai hỏi anh học toán để làm gì. Anh sẽ dõng dạc trả lời học toán để sau này nghiên cứu khoa học. Nhưng trong lòng anh sẽ trả lời, học toán để giải bài tập và kiếm điểm cao.

Nếu em ra trường, vào công ty đi làm. Ai sẽ là giáo viên cho em? Anh đã nói ở trên, học như phổ thông em sẽ đậu đại học. Học như phổ thông, em sẽ không kiếm được việc làm tốt.

Nếu em đã nhuần nhuyễn thì sẽ không khó, nhưng vấn đề là thời gian để em làm bài tập em dành cho nghiên cứu vấn đề thật sâu, sau đó mới bắt tay vào làm bài tập. Khi đó em không nhuần nhuyễn như cái máy, mà em hiểu vấn đề và có thể làm nhiều thứ không có trong sách.

Anh đã từng hâm mộ cách làm của Thomas Edison, ông có thể làm đi làm lại một thí nghiệm cả ngàn lần để sáng tạo ra cái mới. Nhưng sau này khi anh biết đến Nikola Tesla anh còn hâm mộ ông này hơn, ông này từng làm việc với Edison và ổng nói một câu đại loại như “Edison có thể làm 1000 thí nghiệm, nhưng nếu Edison chịu phân tích vấn đề rồi mới làm thì Edison có thể loại bỏ 800 thí nghiệm không cần thiết”.

Em có thể chọn theo Edison hoặc Tesla. Anh viết bài này có ảnh hưởng cách nghĩ của Tesla.

Em nên đọc thêm bài viết này

Nếu bạn hỏi một nhà phát triển phần mềm rằng họ dành thời gian để làm công việc gì nhiều nhất, thì họ sẽ nói với bạn rằng họ dành phần lớn thời gian để viết code.
Tuy nhiên, nếu bạn thực sự quan sát công việc mà các nhà phát triển phần mềm dành thời gian của họ để làm, thì bạn sẽ nhận ra rằng họ dành phần lớn thời gian của họ để cố gắng hiểu code:

Em có chắc chắn các thuật toán cũ này chỉ cần làm nhiều mà mà không cần nghiên cứu mà đạt giải không? Anh chưa xem những đề này, nhưng anh không nghĩ là Facebook hoặc Google lại chọn những cái đề có thể giải chỉ cần mua sách về làm nhiều làm tới nát sách ra như ở VN khi thi đại học.

Đúng, nhưng vấn đề thực tế không phải là bài tập của người khác. Mà là vấn đề của bản thân. Lời giải của các vấn đề trong lập trình không cụ thể, nếu cụ thể thì sẽ chỉ có một sản phẩm cho một vấn đề.

Nếu có Myspace rồi thì không cần Facebook, nếu có Facebook rồi thì không cần Google+

Đạt đang học quyển “Learn Python The Hard Way” đây, cái Đạt thích từ quyển này là ở chỗ mỗi bài, chỉ có vài bài tập rất đơn giản. Mục đích của các bài tập này là để người học lập trình hiểu được cú pháp của các câu lệnh. Học theo cách này nắm vấn đề rất hay.

16 Likes

theo ý kiến của mình thì cách học anh đạt đưa ra rất hay, rất đúng …, nhưng cho e bổ sung thêm là cách đó chỉ có 60% là tốt, nhưng không có cách nào là đúng trong mọi trường hợp cả, và cũng không thể áp dụng 1 cách làm cho mọi tình huống, mà ta chỉ có thể áp dụng nhiều cách cùng 1 lúc, và nhiệm vụ của người áp dụng là biết phối hợp các tình huống 1 cách hài hòa nhất;, phù hợp với mình (phần bên trong) , phù hợp với bố cảnh tại thời điểm sống của mình ( phần bên trong) thì trong mọi tình huống ta đều có tăng ưu điểm giữ các cách học và giảm nhược điểm xuống tối đa, giúp ta thành công hết mức, đó mới là người có thể thích nghi để thành công

5 Likes
  • A nói vậy e hiểu nhưng chắc a chưa hiểu ý e. Ý là nhuẫn nhuyễn bt, là bt về mọi mặt trong 1 chủ đề. Như tích phân có rất nhiều dạng BT. Mà hầu hết c3 đều chỉ dạy dạng cơ bản và dạng từng phần, còn dạng như xoay vòng bla bla thì bỏ qua. Vậy nên hs chỉ đc học 2 dạng và làm đi làm lại 2 dạng, mấy dạng kia bỏ đi hết mặc dù đã nhuẫn 2 dạng này nhưng nói về BT tích phân chung thì chưa nhuần.
  • Và BT của nhà trg giao thường khô khan và lặp lại và nó là chữ là chữ nên nhiều người thấy nó không khoa học. Chứ nếu thay vì dùng chữ, quăng cả đám hs ra cách đồng cho nó 100 cái thửa ruộng hoặc 100 cái bình bông, cho pt từng cái rồi thách đố tụi nó tính được diện tích của thửa ruộng hay bình bông này thì nó ko không khan và lại đc xem là thực tế. Mặc dù chả khác gì BT trong sách cả. Chỉ khác là có cái vật để sờ và lăn lộn :v
  • Khách hàng sẽ là “Giáo viên” của anh. ;:wink: Mà “giáo viên” này chỉ ra đề và cho tiền để làm chứ không có sửa bài và cho điểm. Thật ra thì có GV cũng chỉ xem và cho điểm rồi nhận xét chứ chả thèm sửa bài nữa là!
  • Thật là khi đi học GV kêu em về nhà làm cho tôi trang web bán hàng trong vòng 1 tuần. Ko có = 0đ. Thế là trong não mặc định đó là 1 BT. Còn nếu đi làm, người ta cũng giao như vậy nhưng chỉ khác là ko có = 0 đồng. Thế là chúng ta lại xem nó là công việc. Nhưng cv này chả khác gì làm “BT” mà được tiền thay vì được điểm.
  • Và ko trách học như phổ thông thì abc đc. Do cách học của mỗi người, chứ bậc học chả liên quan. Bậc học chỉ là nơi giới hạn kiến thức học. Còn cách dạy là do thầy cô bàn bạc w nhau để phù hợp với cái giới hạn đề ra mà ko bị thừa hoặc thiếu mà thôi.
  • Cái đó a nói lại thuộc về cách học lý thuyết mới. Tất nhiên học là học lý thuyết trc rồi mới làm BT. Chứ chả ai làm BT rồi mới học LT. Cái e nói là lúc nghiên cứu và sáng tạo ra cái mới. Nếu ko rành cái cũ liệu có làm cái mới được??? Hay khi nghiên cứu cái mới rồi thấy cái cũ này quen quen. “hình như tui học cái này mà tui quên mất rồi” :v “Đợi tí tui xem lại cái nha” -> FAIL
  • Còn Edison, như e đã nói là ko rành CT + KT cũ thì chỉ làm tốn công sức khi nghiên cứu cái mới thôi. Edison đã chứng minh câu của e là đúng! Thank you Mr.Edison! :smiley:
  • Hiểu code? Code của ai? Họ ko hiểu code của họ thì họ chỉ là newbie hoặc là nghiệp dư mà thôi. Chuyên nghiệp thì chuyện hiểu code của mình là chuyện đương nhiên. @_@ Dân chuyên họ biết họ code gì chỉ là code họ chưa tối ưu mà thôi, có ý tưởng mới họ sẽ biết họ cần sửa ở đâu. Vì họ code rất chắc và đảm báo đúng 80% trở lên họ mới code. Chứ ko như nghiệp dư, nghĩ gì là code nấy nên phải dành thời gian đọc lại code khi rewrite. Nên bài viết a tag vô e đọc e k đồng ý.
  • Đề của họ là những thuật toán có trong mọi cuốn sách trên TG vì là toàn cầu mà. Nhưng thay vì code thuật này là ra cái toạch đáp án thì họ khéo léo kết hợp một chút kiến thức khác để tìm ra đáp số. Tức là khi đọc đề, những người code nát sẽ biết được dùng thuật gì áp dụng vô. Nhưng còn kq ra sao thì những người tư duy thông minh sẽ chiến thắng. Vì google và facebook biết ai code nhiều sẽ có cơ hội thắng nhiều hơn, nhưng code nhiều mà ko biết ứng dụng thì vẫn sẽ thua. Thi đh cũng cần tư duy thôi. Tại sao có đứa học 1 cuốn sách mà nó thử khoa, trong khi thằng trăm thầy mà vẫn rớt? Vì thằng kia nhuần nhuyễn mà biết ứng dụng còn thằng này thì ko!

Sr vì post dài @_@

8 Likes

em mất 4 ngày để dịch bài sinh hoán vị từ Pascal sang C++ đấy

5 Likes

trong lúc học áp dụng nhiều cách e nghĩ đó mới thực sự đúng vì không có cái gì là hoàn hả cả anh a, và nhiệm vụ cuẩ người học là học là biết cách tập trung những cách học đó để hạn chế nhược điểm, và tăng ưu điểm của từng phương pháp rồi biến nó thành cái riêng của mình, cho nó phù hợp với mình nhât, giúp phát huy tối đa khả năng của bản thân,

5 Likes

và nói thêm về dòng bình luận ở trên. là có trường chưa học lý thuyết đã là bài tập đấy anh, không phải là không có đâu anh

4 Likes

Thực chất ra những bài tập trên lớp nếu không làm sẽ là một thất bại lớn cho người theo nghề DEV, bất cứ cái gì cũng cần có nền tảng, khi đã có nền tảng rồi thì mới cần chuyên sâu.

Việc code bài tập thì e hoàn toàn ủng hộ người code, nhưng người quăng 1 đống bài tập lên và nhờ giải thì em không xem đây là ltv.

Còn bác nào bên trên nói gì gì bài tập giáo viên chấm và khách hàng chấm thì cũng khá đúng, nhưng cũng rất khập khiểng.

Xây nhà người ta cũng cần cái móng, cái móng nhà thì mua dễ, nhưng cái kiến trúc thì mua khó. Vì cái kiến trúc là những sáng tạo, những suy nghĩ của con người, còn cái móng nhà thì nó chỉ là nên tảng, và ai cũng có thể biết được.

Còn DEV thì dành thời gian đọc hiểu code thì đúng hoàn toàn. Nếu đi làm việc bảo trì thì mình chỉ ước rằng thôi để mình làm cái mới luôn. Vì code là ngôn ngữ, không phải là ngôn ngữ tự nhiên mà ai cũng hiểu. Mọi DEV đều có phong cách code riêng.

Ví dụ như bạn là 1 dân it, và bạn xin vào một công ty phần mềm có cung cấp dịch vụ OTA. và bạn phải phát triển phần mềm OTA, điều tất yếu bạn phải hiểu nó trước đã. Bạn không được làm lại, không được làm mới, mà phải làm theo những người đã làm trước mình.

8 Likes

ngày trước mk học chỉ áp dụng 1 cách học và nó đã mang lại kết quả cho minh đỗ đại học, nhưng lên đại học mk đã bị choáng khi rất khó thích nghi với cách ms học mới, nêm mk nghĩ sao mk không phối hợp tất cả các cách là và hạn chế nhược điểm của chúng, làm tằng ưu điểm của từng cách nhỉ, thì mình vừa có sự sáng tạo vừa nhuần nhuyễn được

6 Likes

và mình cũng muốn chia sẻ thêm là việc áp dung trong thực tiễn rất khó , đế nói việc lâp kế hoạch của môn quản trị, quy luật nhân quả môn triết,… vào môn tin nói riêng và thực tế nói chung rất khó vì mình đâu có thực tế, nên lời anh đạt nói là đúng, nhưng nếu không học nó trên bài tập mà thực hành luôn thì xẽ có những sự đáng tiếc sẩy ra, nên theo mình với mỗi cá nhân nếu áp dụng nhiều phương pháp và biến nó thành của mình cho phù hơp với từng thời điểm, của người đó, thì đây ms là cách đi mà có thể hạn chế tối đa nhược điểm từng cách và tăng ưu điểm của chúng

7 Likes

Bạn biết vì sao kiến trúc khó mua ko? Sáng tạo là chuyện như bỡn của KTS thôi. Nhưng ở được hay ko? Hợp với kiến trúc nơi xây nhà hay ko! Hợp với mắt của thằng chủ nhà hay ko thì lại là 1 chuyện khác! Sáng tạo tựa trên khuôn mẫu, nó rất khó so với sáng tạo tự do. Như ở VN chuộng mô hình nhà ống. Đề: Hãy sáng tạo 1 nhà ống và nó phải phong thủy, đơn giản, nhiều ánh sáng nó khác xa với chuyện hãy sáng tạo một ngôi nhà đẹp! Nói kiến trúc khó mua? Thuê 1 thằng KTS trẻ vào và xem nó sáng tạo kiến trúc đẹp mê ly luôn! Ko thua gì đàn anh của nó cả. Nhưng, cái sáng tạo nó tinh tế và hợp lý được như đàn anh của nó ko mới là vấn đề. Mà để đc như đàn anh thì nó cũng luyện tập chả ít nhỉ! ‘3’

Thì trg đấy có thể có cách dạy đặc biệt như lồng LT vào BT. Hoặc yêu cầu BT cực kì đơn giản rồi tự tìm hiểu LT cơ bản, sau dó mới giảng dạy nâng cao. Nhưng nếu vậy sv ở đó đòi hỏi ý thức tự giác cực kì cao và thông minh. Mà vậy chẳng phải là học LT rồi làm BT ư? Chả qua là tự giác thay vì trg day thôi :smile:

5 Likes

có trường làm bài tập trước học lý thuyết đấy bạn

1 Like

Ý anh muốn nói ở đây không phải là không làm bài tập, ý anh muốn nói là thay vì mình chỉ tập trung tìm bài tập để giải thật nhiều như lúc học thi ĐH, các bạn hãy dành thời gian tìm thêm bài tập để tìm thêm tài liệu nghiên cứu.

6 Likes

mình thích cái gì? ( sở thích), mình giỏi cái gì? (sở trường) có khi nào các bạn tự hỏi như vậy? có câu trả lời rồi? nhưng chẳng biết làm gì không?

3 Likes

Phân tích vấn đề quá hay.

2 Likes

đại loại như tự minh đặt ra một bài toán thực tế trong cuộc sống và tự giải lấy. Chứ mấy bài tập trong sách vở là lối mòn, người ta dẫm nát rồi, k thú vị

3 Likes

Bạn này mới học Python nhưng tự viết chương trình này, Đạt thấy hay hơn ngồi giải “bài tập” rất nhiều.

6 Likes

e cũng mới học lập trình ngôn ngữ C, như a nói cũng sư dụng được nhưng lệnh cơ bản, nhưng để bắt tay vào nghiên cứu làm 1 bài tập thực tế thấy rất khó, không biết phải đi từ đâu, ví dụ như viết game cờ tướng chẳng hạn, cũng rất khó khăn để bắt đầu, a có thể tư vấn thêm cho e về vấn đề đó không ạ

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?