Wednesday, July 8, 2015

BẮT ĐẦU HỌC LẬP TRÌNH WEB NHƯ THẾ NÀO?

BẮT ĐẦU HỌC LẬP TRÌNH WEB NHƯ THẾ NÀO?

Lượn lờ 1 vòng với vài từ khóa kiểu kiểu như “Học lập trình web như thế nào?”, “bắt đầu từ đâu?”, “trung tâm nào tốt nhất?”, “Lương lập trình cao không?”… vân vân và vv… thì thấy 1 loạt kết quả cũng như 1 loạt bài viết về lập trình web nào là dễ như chơi, lương cũng kha khá và trăm $ gì gì đấy, học cũng nhanh, ra trường nhiều việc, nhiều lựa chọn, rồi thì nghề này cũng không vất vả lắm, đơn giản thôi… từ từ nhé DKM – cho chửi bậy phát cho đỡ ngứa cái mắt và thỏa mãn cái mồm trước đã rồi làm gì thì làm!

1. Lập trình website dễ hay khó?

Thế này đi, các bạn chẳng cần quan tâm mình là ai & ở trình độ nào đê khỏi phải so với sánh cho nhức đầu, các bạn không thừa thời gian và mình cũng vậy, chỉ mong sao chúng ta có 1 cái nhìn đúng hướng và quan trọng hơn hết nó phải thực tế. Mình cũng đã học qua trung tâm, qua trường lớp và làm nhiều năm kinh nghiệm, chưa bao giờ mình đánh giá lập trình là dễ cả, đương nhiên việc dễ hay khó nó tùy vào mỗi người, có thằng bảo dễ cho oai, có thằng bảo dễ để PR để kheo lớp học để câu kéo học viên, để làm đủ thứ, các bạn biết cái thằng “Cư Dân Mạng” mà đúng ko? nó thích nói gì chẳng được, chém gió kiểu gì nghe chẳng phê pha nhưng cơ bản mà nói thì nó éo thực tế, mạng là mạng – thực tế là thực tế, nếu các bạn đã từng tự tay kiếm ra đồng tiền và tự tay nộp nó cho 1 khóa học nào đó thì các bạn sẽ thấy cái mà thiên hạ bảo dễ, bảo ngon ăn, bảo đơn giản ấy nó thực tế đến mức nào!
Xin lỗi, đời chẳng có gì là dễ cả! nếu lên mạng mà bạn tin vào cái người ta quảng cáo, cái người ta PR – bạn tin vào kiếm tiền từ bán hàng trên facebook dễ, chạy quảng cáo google kiếm tiền dễ, chơi adsense dễ, youtube adsense dễ, rồi thì học lập trình cũng dễ và làm giàu cũng dễ… thì thực sự bạn là con người dễ dãi quá, bạn ơi những con đường dễ đó nếu nó dễ đến vậy thì chắc chắn cũng có nhiều người đi trước và chặt cây, ngăn đá, phá đường để cho nó khó khăn hơn rồi! thế nên con đường của bạn đang đi không hề dễ đâu, không hề đơn giản như vậy bạn nhé! cạnh tranh mỗi lúc càng khắc nghiệt, thực tế hơn đi, đừng đu dây điện nữa, xuống đi thôi.

2. Bạn đã có kế hoạch cho bản thân?

Trước khi các bạn tìm hướng đi cho mình, quyết định đi trên con đường mà mình đã chọn chúng ta cần có những kế hoạch cho bản thân để không bao giờ hối hận bởi quyết định mình đã làm – “Lập Trình Web” nói riêng và “Lập Trình” nói chung nó là 1 nghề, bạn đang đi học nghề để có trong tay 1 cái cần câu, rồi đi câu ở khu vực nào là tùy ở bạn thế nhưng trước hết chúng ta cần phải nói rõ về cái gọi là học nghế này 1 chút, bạn học lái xe cũng mất 6 tháng đến 1 năm để học xong, bạn học làm thợ xây cũng phải mất khoảng thời gian tươn tự, học kế toán, tài chính, ngân hàng… ít nhất bạn cũng mất 1 đến 5 năm để ban có được 1 cái gọi là nghề, chưa kể năng lực của bạn, bạn là người thông minh, bạn là người nhạy bén… không quan tâm – Trong tất cả yếu tố để dẫn đến thành công bạn cần có thời gian và xin đừng lãng phí nó. Với lập trình web bạn cũng vậy – bạn học xong Trung cấp, Cao Đẳng hay cả Đại Học thì bạn vẫn chưa thực sự làm được 1 sản phẩm gọi là thành nghề, trong tất cả những con người mình quen biết, cả những Giám Đốc, Thạc Sỹ, Tiến Sỹ hay cả Giáo Sư họ đều không thể có trong tay 1 cái nghề với khoảng thời gian ngắn ngủi như vậy được! Thế nên tất cả những khóa học ngắn hạn dưới 6 tháng nó chỉ đem lại cho bạn 1 mớ kiến thức cơ bản thôi, ngay cả những người đã trong nghành trong nghề, có cần câu cơm thì vẫn có người đi làm đến tận 3 năm, 5 năm hoặc hơn nữa thì họ vẫn đang loay hoay cho sự nghiệp của mình và chẳng có con đường nào là trải sẵn hoa hồng để bạn bước qua cả, Trust me!
Vậy đó, nếu bạn dám chấp nhận cuộc chơi, lao vào đường đời với 1 cái nghề thì đương nhiên 1 năm chưa đủ để bạn khôn lớn đúng không nào? có chăng nó chỉ là những bước đi chập chững đầu tiên, chúng ta cần nhìn vấn đề 1 cách thực tế nhất và hợp lý nhất đúng không nào? bạn muỗn trồng cây để hái quả thì 1 năm cũng chẳng có nhiều loại cây thành quả – đương nhiên là có nhiều loại cây khác nhau, chúng mình không phải đang làm nghiên cứu về sinh học! Thế còn nếu bạn đang đi trên con đường ấy? hoặc đang đi trên 1 con đường khác? bạn có dám chặt cái cây mà bấy lâu nay mình vun trồng để trồng 1 loài cây khác không? và bao giờ nó sẽ thành quả? câu trả lời dành cho bạn thế nhưng bạn phải có 1 kế hoạch cho đúng đắn và bạn phải có thời gian và sẵn sàng bỏ nó ra để theo đuổi cuộc chơi, Ok?
Vậy thì bao nhiêu thời gian là đủ? cũng khó nói nhỉ? thế này nhé: bạn đam mê thể thao, thích đá bóng, đánh cầu, tennis, bóng bàn, cờ tướng… bạn nghĩ xem bạn mất bao nhiêu lâu để nổi tiếng? để giỏi hơn người khác? và chưa kể nếu bạn chưa biết gì bạn sẽ mất bao lâu để chơi Golf cho giỏi? chưa biết bơi bạn mất bao lâu để bơi giỏi? và môn thể thao nào là sức mạnh của bạn? bạn nhanh nhạy để chơi cờ hay bạn khỏe mạnh để đá bóng? và nếu bạn đã đánh cầu lông thì học Tennis cũng sẽ dễ chịu hơn đúng không?… Lập trình cũng vậy: bạn có giỏi ngoại ngữ không? bạn có sợ đọc tài liệu Tiếng Anh không? bạn đã từng lập trình .NET hay java? bạn đã biết nghề này sẽ cần học cái gì? xoay quanh cái trình duyệt 1 lập trình viên web cần biết cái gì?… có đến hàng ngàn câu hỏi đặt ra, nếu chỉ để thảo luận chỉ để trả lời những câu hỏi này có khi chũng ta phải mất cả tháng, cả năm thậm chí cả vài chục năm – nói thế thì chung chung quá nhỉ? đương nhiên nó sẽ chẳng cụ thể được cho đến khi nào bạn hiểu về nó, chẳng có giáo trình nào để dạy chúng ta thành người trước tuổi 25 hay kiếm nhiêu tiền trước tuổi 35 hay làm tỷ phú ở tuổi 45… còn với ý kiến cá nhân mình thì nếu bạn theo học đúng nghĩa lập trình web và chủ động đúng nghĩa với tự học lập trình web và chịu khó đọc tài liệu ngoại ngữ 1 cách đúng nghĩa thì bạn sẽ mất ít nhất 1 năm để có 1 cái cần câu cơm và khoảng 2 năm để kéo cái cần dài hơn ra và câu được những con cá to hơn, xa bờ hơn, và cần 3 năm miệt mài đúng nghĩa để có được những khả năng sát thủ, nhìn đâu có cá là biết, nơi nào nên câu là biết… và câu chuyện sẽ còn dài hơi hơn cho đến khi bạn khởi nghiêp thành công và bước ra khỏi giới làm thuê và trở thành giới đi thuê người làm – rồi lại khởi nghiệp – rồi lại lên kế hoạch – rồi lại vài năm ABC, Bla bla…
Sẽ không có chính xác 1 giáo trình để nâng cho bạn từng bước đi chính xác cả bạn ơi, hãy tập cho mình thói quen tự học và khả năng đánh giá vấn đề, mọi câu chuyện về từ “dễ” chỉ là câu chuyện chơi chơi thôi hoặc câu chuyện ngụ ngôn hay hàm ý hay PR hay kiếm chác, hay lợi ích hay bất kì cái gì khác, bạn là người quyết định nó, bạn sẽ biết nó khó hay dễ không cần đợi bố con thằng nào chỉ cách xem nó dễ hay khó :) và quan trọng hơn hết là chúng ta phải có 1 kế hoạch cho thời gian tương lai có thể là 1 năm, 2 năm, hoặc 3, 5 năm – để chúng ta có cái nhìn nghiêm túc nhất và kiên nhẫn đi trên con đường đó, Ok.

3. Bắt đầu từ đâu bây giờ?

Cứ cho là bạn đã quyết định theo con đường công nghê, theo nghiệp lập trình viên và cụ thể là làm lập trình web thì chúng ta sẽ phải bắt đâu từ đâu? đâu là cách chúng ta sẽ biết mình đi đúng hướng? làm gì trước? làm gì sau?… đừng quá quan trọng nó như vậy, bạn đã chấp nhận nó khó khăn, nó không dễ dàng và chấp nhận bỏ khoảng thời gian không nhỏ của lứa tuổi thanh niên để đi theo nó – giờ thì cứ chấp nhận thôi, Let’s It Be :)

- HTML, CSS, JAVASCRIPT, Ngôn ngữ phía client

Đừng tin những quyển sách hay những tiêu đề kiểu kiểu như “Tự học HTML trong 24h” hay “HTML thật đơn giản” hay “Mỗi ngày vài phút HTML”… kiến thức thuộc về bạn – bạn học nhiều bạn biết nhiều, học ít biết ít, bạn bỏ thời gian nhiều biết nhiều, bỏ thời gian ít thì biết ít vậy thì bạn quan tâm làm éo cái gì cái mặt thời gian ấy, cư học đi w3schools là nơi bạn nên bắt đầu –  đọc Tiếng Việt để hiêu bản chất rồi quất Tiếng Anh luôn.
Hãy bắt đầu với việc hiểu nó là cái gì trước nhé “HTML là gì?”, “CSS là gì?”, “Javascript là gì?”, “Ngôn ngữ phía client là gì?”, “Trình duyệt web và html chơi với nhau như nào?” rồi bạn sẽ thấy sẽ có demo, có example có những bài hướng dẫn nhiệt huyết rất hay và bạn phải làm bằng được nó – đó là cách chúng ta trở thành người chiến thắng!
Và sau khi bạn bỏ ra 1 khoảng thời gian, bạn theo đuổi và bạn đang hoc nó và rồi bạn sẽ thấy là chúng ta học HTML cả đời, CSS cả đời, Javascript cả đời… cũng như tất cả các ngôn ngữ khác chúng ta học cả đời việc quái gì phải quan tâm đến cái 24h, hay cái 1 tháng hay vài tuần làm gì cho mệt, đã học là học lâu dài, đã nắm bắt là nắm bắt lâu dài, và dần dần nó trở thành niềm đam mê lúc nào không hay!

- PHP & Mysql

Trước hết bạn phải làm sao để trả lời được cho người khác câu hỏi PHP làm gì? Mysql để làm gì? đúng vậy chúng ta phải trả lời được câu hỏi này và sẽ thấy được sự khác biệt – bản chất của nó nằm ở đâu? tại sao phải học những cái đó? tại sao thuật ngữ lại quan trong đến vậy? và bạn sẽ thấy mình cần học thêm nhiều và thấy rất nhiều thứ nó liên quan đến nhau: Vd chúng ta giải thích như sau – PHP là ngôn ngữ lập trình, nó giống với HTML, CSS, nhưng nó là ngôn ngữ phía server -> rồi thì server là gi? client là gì? Web server là cái quái gì?…
Khi bạn biết thêm 1 thứ là lúc bạn sẽ phải học thêm nhiều thứ khác, đừng chán nản mà hãy học tập nghiêm túc và sau vài tháng hãy nhìn lại và bạn sẽ thấy những điều kỳ diệu hoặc sau vài tháng bạn đọc lại bài viết này bạn sẽ thấy không còn mơ hồ nữa – có nghĩa là sao? bạn đã đi được 1 quãng đường rồi vì cái ngày ban đầu của bạn là cái ngày mà đọc cái gì cũng không hiểu, cái gì cũng mơ mơ màng màng, và bây giờ cái gì cũng đã rõ hơn rồi, đọc cái gì cũng thấy dễ hiểu hơn rồi và sẽ còn nhiều thứ khác đang chờ bạn…
HTML phía clien, PHP ngôn ngữ phía server, Mysql là cái gì? sao phải có nó? có bắt buộc không? biết HTML thôi cũng đã làm được web rồi? sao còn phải học PHP? và Mysql làm gì? Web tĩnh và Web động sẽ là cái bạn tiếp cận lúc này –  bạn cần biết Mysql để biết về 1 “hệ quản trị cơ sở dữ liệu” và PHP sẽ chơi với Mysql như nào? nó kết nối ra làm sao? lấy dữ liệu ra rồi thêm dữ liệu như nào?… rồi khi bạn biết vê Mysql 1 chút chút bạn sẽ đặt câu hỏi tại sao không phải là cái khác mà phải là Mysql ? và Open Source(Mã nguồn mở) là cái gì?.. rồi bạn sẽ được dẫn dăt đến nơi xa hơn 1 chút đó là hệ thống:

- Linux & Apache

Sao phải dùng Linux trong khi mọi người dùng windows nhiều như thế? lại mất công học thêm hệ điều hành mới ah? Web server Apache là cái gì? cứ phải cài nó vào máy thì mới chạy được website ah? người ta chỉ dùng apache thôi sao?… rất nhiều câu hỏi đúng không nào? chúng ta phải lần lượt đi những bước đi như vậy đó các bạn ah, rồi bạn sẽ biết được Ubuntu khác với windows ra làm sao? rồi web server Apache với Nginx hay với những công nghệ cao siêu hơn 1 chút chút là cached, là worker, là indexed search là solr và vvv… rồi thì cài cắm nó, config nó, thuê server ở đâu? VPS là cái gì? 1 con server hay nhiều con server? adsense là gì? kiếm tiền như nào?… lúc này cũng là lúc bạn đã mất kha khá thời gian với nghề lập trình rồi.
Trong lúc học lúc nghiên cứu bạn sẽ phải biết thêm về Framework về CMS… và đương nhiên nếu bạn đã có đủ kiến thức thì những thứ này bạn sẽ dễ tiếp cận và nắm bắt hơn. Mọi thứ cần diễn ra theo 1 trình tự như vậy, giáo trình nào hay thì bạn học và nên nhớ tự học là chính, sẽ chẳng có giáo viên nào đem cho bạn kiến thức giống như cách cắm USB vào đầu của thầy rồi Copy sang đầu của học sinh đâu! và cũng phải xin lỗi chửi thêm 1 phát nữa chứ thời buổi này nhìn thấy nhiều thầy lương tâm, đam mê thì ít mà suốt ngày tiền bạc với danh vọng thì nhiều – cái này hên xui, học đâu cũng vậy nhé, bạn phải tự đưa bản thân mình vào chỗ khó để ló cái khôn thôi, cái này miễn bàn thêm!
Mới học lái Oto ban cũng phải biết chức năng của cái cần số, chân phanh, vô lăng… nó hoạt động làm sao? sử dụng như nào? … nên nhớ rằng một người học lái oto đến 10 năm mà chưa từng thực hành thì khi lên lái xe lần đầu cũng chỉ là thực tập thôi nhé! bạn cũng vậy đừng để việc học lập trình kéo dài đến 10 năm hãy bắt đầu bằng 1 dự án cụ thể, thực hành nó, mơ ước nho nhỏ với nó, sống với nó và rồi sẽ yêu quí nó – tuyệt vời nhất khi chúng ta làm việc mà như chơi, làm việc mà không hề có chút áp lực, làm việc mà hăng say và vui vẻ, thế nên đừng đặt kỳ vọng quá cao ngay ở giai đoạn đầu, các bạn cứ làm đi rồi sẽ thấy kết quả. mình sẽ cố gắng đưa đến các bạn những bài viết, những bài hướng dẫn cụ thể nhất trên website Codekeo.com theo từng chuyên mục và thời gian và sớm hi vọng chúng ta trở thành những đồng nghiệp và cùng chung chí hướng, thân ái và quyết thắng!

Tại sao lập trình viên nên biết bơi?

Thống kê mang tính cá nhân của tôi thì hầu hết các lập trình viên tại Việt nam là nam giới. Từ tuổi 30 trở đi, tỷ lệ này gần như 100%. Thời gian ngồi gõ code trước màn hình khoảng 40 - 45 tiếng một tuần, phòng điều hòa. Nhưng nhìn chung, lập trình là một nghề vất vả về thần kinh. Do đó số lượng lập trình viên tiếp tục lập trình thực sự ở tuổi 40 chỉ vào khoảng 2% trên tổng số lập trình viên.

Một số bệnh thường thấy ở lập trình viên
  • Cận thị do mắt thường xuyên nhìn ở một khoảng cách cố định
  • Mất ngủ, căng thẳng thần kinh thường xảy ra với lập trình viên ngày ngủ tối code
  • Rối loạn tiêu hóa: đau dạ dày, kém ăn
  • Tim mạch. Đã có 2 trường hợp mình biết chết ngục trên bàn làm việc sau những dự án kéo dài vài tháng không được nghỉ cuối tuần.
  • Mỏi, đau cổ, đau lưng, thoát vị đĩa đệm do ngồi sai tư thế
  • Hệ thống hô hấp kém do ngồi điều hòa nhiều, thiếu vận động nên hay bị viêm xoang, cảm cúm
  • Trĩ
Bơi sải
Tại sao bơi là môn thể thao có lợi nhất cho lập trình viên?
  • Bơi yêu cầu vận động toàn bộ cả hai tay và hai chân, khớp vai, khuỷu tay, khuỷu chân, bàn tay, bàn chân. Bóng bàn chỉ tập trung vào một tay. Đá bóng tập trung vào 2 chân.
  • Tỷ lệ chấn thương thấp gần như bằng không so với bóng đá, thể hình, tennis
  • Bơi nếu đúng động tác, người duỗi hoàn toàn sẽ giúp thả lỏng toàn thân. Khi bơi quãng dài, không cần thành tích, người bơi có thể ngủ hoặc thư dãn đầu óc.
  • Bơi không yêu cầu vận động mạnh gấp gáp theo những quãng ngắn như đá bóng (môn thể thao vua của nam giới).
  • Bơi tốt cho tim mạch, cơ bắp, và hô hấp. Nước, sóng bể bơi mát xa cơ thể tự nhiên.
  • Học bơi không quá khó, chỉ mất khoảng 5 - 10 buổi là có thể học bơi ếch. Bơi sải (free style) mất thêm 10-20 buổi tập nữa.
  • Bể bơi phổ biến ở nhiều nơi cả ở VN lẫn nước ngoài.
  • Bơi không cần nhiều người tham gia như bóng bàn (2), tennis (2-4), bóng đá (8 -> 22). Có thể bơi từ sáng sớm 5h đến 10h tối. Đối với bể ngoài trời, không nên bơi lúc nắng gắt.
  • Dụng cụ bơi mang theo nhỏ gọn hơn so với tennis, golf.
  • Chi phí bơi cao hơn chi phí đá bóng, bóng bàn, tuy nhiên mua vé tháng khoảng 30,000 VND/buổi thì khá hợp lý với nhiều người.
  • Trong khi bơi, lập trình viên có thể suy nghĩ, chuẩn bị kế hoạch làm việc hoặc nghe nhạc.
  • Biết bơi là kỹ năng sinh tồn và giúp bạn tự tin hơn khi đi nghỉ mát
  • Đợt này có phong trào pool party, anh em nào trẻ, khỏe, bơi giỏi có thể tham gia.
Pool party
Chuẩn bị đồ bơi
  • Kính bơi. Hiện có dòng kính bơi cận rất tốt của Nhật là nhãn hiệu View dùng rất tốt. Kính ít bị xước. Gioăng cao su kín nước không bị lão hóa. Dùng tốt trong khoảng 2 năm. Giá khoảng 450-500,000 VND.
  • Quần bơi chỉ cần loại đàn hồi tốt. Màu sắc chim cò, xanh đỏ tím vàng, hay đơn màu tùy gu thẩm mỹ của anh em. Tuy nhiên không nên chơi quần bảy sắc cầu vồng, tránh gây hiểu nhầm.
  • Phao bơi, chân nhái, tay quạt chỉ dùng khi tập bơi sải. Giá cũng không quá đắt thử vào trang này coi http://www.kinhboi.com/
Kính bơi View
Chọn bể bơi
  • Bể Sao Mai trên Hồ Tây, bề dài, sâu, nước sạch, có view nhìn ra Hồ Tây, giá vé tháng 1,200,000 VND cho 30 buổi. Mùa hè 2015, trời rất nắng, những bể không có mái che thì phải bơi từ 5:00-7:00 không là cháy nắng
  • Bể Tăng Bạt Hổ: bể này có mái che, mùa đông vẫn hoạt động vì có hệ thống sưởi. Bể dài. Nước tạm ổn, sạch hơn các bể khác, kém bể Sao Mai. Bể rất đông nên đi từ sáng sớm hoặc trưa hoặc tối từ 7:00 trở đi.
Tự học bơi qua YouTube

Tác giả cùng học viên Techmaster bơi trên hồ sông Đà. Nước sâu đeo phao cho an toàn

Lập trình viên có thực sự cần bằng cấp

Bài viết được dịch từ blog Simple Programmer
Khi lần đầu tiên tôi bắt đầu nghề nghiệp của mình với tư cách là một lập trình viên, tôi đã không có một bằng cấp nào cả.
Tôi có cần kiếm một mảnh bằng đại học để trở thành lập trình viên?
Tôi có cần kiếm một mảnh bằng đại học để trở thành lập trình viên?
Tôi kiếm được công việc thực sự đầu tiên của mình khi đang trong kỳ nghỉ hè năm nhất đại học. Lúc đó, kỳ nghỉ hè sắp kết thúc và đó là thời điểm mà tôi phải quay lại trường đại học, tôi nhận ra rằng mức lương mà mình kiếm được từ công việc mùa hè đó tương đương với mức lương mà tôi mong chờ sẽ kiếm được sau khi tốt nghiệp đại học - lúc đó tôi cũng không có bất kỳ khoản nợ nần nào - vì vậy, tôi đã bỏ học để giữ lấy công việc đó.
Nhưng liệu đó có phải là quyết định đúng đắn mà tôi đã chọn?
Bạn có thực sự cần một tấm bằng đại học để trở thành một lập trình viên máy tính?

Sự khác nhau giữa giáo dục và nhà trường

Chỉ bởi vì bạn có một tấm bằng đại học không đồng nghĩa với việc bạn đã học được bất kỳ chút kiến thức gì. Đó là vấn đề chính mà chúng ta gặp phải trong hầu hết các chương trình giáo dục truyền thống ngày nay. Trường học ngày nay đã trở thành nơi chỉ để kiếm một mảnh bằng - một mẩu giấy - hơn là để học được một cái gì đó thực sự có giá trị.
Về mặt nào đó, tôi giống như là đang giảng đạo vậy. Nếu bạn có một tấm bằng mà bạn đã học tập vất vả và phải trả một số lượng học phí lớn cho nó, thì bạn có khuynh hướng tin rằng mẩu giấy đó đáng giá hơn nhiều so với giá trị thực của nó.
Học lập trình truyền thống vs. trực tuyến
Nếu bạn không có một bằng cấp, thì bạn có khả năng nhiều khuynh hướng tin rằng những bằng cấp là vô giá trị và hoàn toàn không cần thiết - mặc dù có thể bạn cũng có mong ước thầm kín là ước gì mình cũng có một cái.
Vì vậy, cho dù bạn đang có quan điểm nghiêng về bên nào, thì tôi cũng yêu cầu bạn ngừng niềm tin của mình trong giây lát - vâng, những thành kiến - và xem rằng cả hai góc nhìn nói trên đều không hoàn toàn chính xác, có một nơi nào đó nằm giữa hai quan điểm này, nơi mà một tấm bằng không nhất thiết là phải có giá trị hay vô giá trị.
Bạn biết đấy, vấn đề không thực sự là liệu một tấm bằng có bất kỳ giá trị nào hay không. Tấm bằng đó tự bản thân nó không đại diện cho điều gì cả ngoài học phí đã trả và thời gian mà bạn dành cho nó. Một tấm bằng có thể kiếm được theo nhiều cách khác nhau, không có điều gì đảm bảo rằng bạn đã học được chút gì trong thực tế khi đạt được nó. Nếu bạn đã từng tham gia học đại học, thì bạn biết rằng có nhiều cách để có thể hoàn thành khóa học mà không thực sự học được chút gì vào đầu cả.
Bạn đừng hiểu lầm ý tôi, tôi không nói rằng bạn không thể học được bất cứ điều gì ở trường đại học. Tôi không nói rằng mọi bằng cấp đều là gian lận. Tôi chỉ đơn giản nói rằng tấm bằng đó tự thân nó không chứng minh được gì nhiều; có một sự khác nhau giữa đến trường để hoàn thành một chương trình học và bạn có thực sự học được gì từ nó hay không.
Việc học không chỉ là ghi nhớ các sự kiện. Học đích thực là phải hiểu. Bạn có thể học thuộc lòng bảng tính nhân và không hiểu ý nghĩa của nó làm gì. Với kiến thức đó, bạn có thể nhân hai số bất kỳ nào mà bạn có trong trí nhớ để lấy kết quả, nhưng bạn sẽ thiếu hụt khả năng nhân bất kỳ số nào mà bạn không có trong phần học thuộc lòng của mình. Nếu bạn hiểu về phép nhân, thậm chí không cần biết bất kỳ bảng tính nhân nào, bạn cũng có thể biết làm thế nào để tìm thấy câu trả lời cho bất kỳ phép nhân nào - cho dù nó có thể khiến bạn mất một chút thời gian.

Bạn có thể có trình độ học vấn cao mà không cần bằng cấp

Các hệ thống giáo dục truyền thống không phải là cách duy nhất để học về mọi thứ. Bạn không phải đến trường và nhận một bằng cấp thì mới trở thành người có học vấn. 50 năm về trước, điều này có thể không đúng - mặc dù tôi không dám chắc, vì tôi không thể sống trở lại thời gian đó. 50 năm trước đây chúng ta không có thông tin dễ dàng như ngày nay. Chúng ta không có tất cả những nguồn tài nguyên mà chúng ta có ngày nay để học tập, bất kỳ chủ đề nào cũng có thể truy cập dễ dàng.
Một mảnh bằng khoa học máy tính đơn thuần chỉ là một bộ sưu tập các chương trình giảng dạy chính thức. Nó không có gì là kỳ diệu cả. Không có lý do gì mà một người không thể tiết kiệm được tiền bạc và một số lượng thời gian rất lớn để nhận một tấm bằng khoa học máy tính từ một tổ chức giáo dục bằng cách tự học chính xác kiến thức giống như vậy.
Ngày xưa, các giáo sư truyền đạt kiến thức và trí tuệ tới các sinh viên đơn giản bằng cách ở trong cùng lớp học với họ. Chắc chắn đó có thể là cách dễ dàng hơn để thu nhận kiến thức khi có một ai đó trực tiếp truyền thụ cho bạn, nhưng bạn không cần một giáo viên để học. Bạn có thể trở thành giáo viên của chính mình.
Thực ra, ngày nay có một số lượng lớn các tài nguyên trực tuyến nơi bạn có thể nhận lấy một lượng kiến thức tương đương, mà miễn phí - hoặc với mức học phí vô cùng rẻ.
Thậm chí nếu bạn có một bằng cấp, thì tự học là một kỹ năng mà bạn không thể lờ đi - đặc biệt là khi nó thiết thực và miễn phí.
Bạn cũng có thể tìm thấy nhiều cuốn sách về khoa học máy tính trực tuyến rất tuyệt vời. Ví dụ, một trong những cuốn sách tốt nhất là: Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science)

Liệu có bất kỳ lợi ích thực sự nào khi có một bằng cấp?

Câu trả lời của tôi có thể làm bạn ngạc nhiên, nhưng ngay lúc này đây tôi nghĩ rằng là có.
Tôi đã nói với bạn rằng tôi đã không tiếp tục học đại học để giữ lấy công việc của mình, nhưng điều mà tôi chưa nói với bạn là tôi đã quay lại và lấy bằng cấp của mình sau đó. Tôi đã không quay lại trường đại học và nghỉ việc, nhưng tôi đã nghĩ có đủ giá trị trong việc lấy một tấm bằng khoa học máy tính thực sự, và tôi đã quyết định đăng ký một chương trình học trực tuyến có cấp bằng và nhận bằng cấp của mình trong khi vẫn giữ được việc làm.
Bằng cấp lập trình viên
Tại sao tôi lại quay lại và nhận bằng cấp của mình ư?
Vâng, đó không phải là vấn đề về kiến thức. Bởi tại thời điểm đó, tôi biết rằng bất cứ cái gì mà tôi muốn hoặc cần học, thì tôi có thể tự học được. Tôi không thực sự cần một bằng cấp. Tôi đã có một công việc với mức lương tốt và vô số kinh nghiệm làm việc thực tế. Nhưng, tôi nhận ra rằng có một số lượng cơ hội rất lớn mà tôi có thể bỏ lỡ nếu mình không trải qua quá trình chính thức để nhận lấy mảnh giấy đó.
Trong thực tế mặc dù cả bạn và tôi đều biết rằng những bằng cấp đó không có ý nghĩa gì cả, nhưng không phải ai cũng có cùng quản điểm như vậy. Bạn có thể có khả năng làm công việc của mình và bạn có thể biết tay nghề của mình tốt hơn cả mấy tay có bằng cấp, nhưng đôi khi mẩu giấy đó sẽ tạo ra sự khác biệt giữa việc có kiếm được một công việc hay không, và sẽ có một tầm ảnh hưởng vào việc bạn có thể leo lên những vị trí cao trong một môi trường tổ chức.
Chúng ta không thể đơn giản đi theo những giá trị của mình và mong chờ thế giới này cũng đi theo những giá trị đó. Chúng ta phải nhận ra rằng một số người sẽ có chỗ đứng cao hơn khi có một bằng cấp - cho dù họ có thực sự học được chút gì khi nhận nó hay không.
Nhưng đồng thời, tôi tin rằng bạn cũng có thể sống tốt mà không có nó - bạn sẽ chỉ có ít cơ hội hơn - một số cánh cửa sẽ đóng lại đối với bạn. Đối với một lập trình viên, điều quan trọng nhất là khả năng viết code. Nếu bạn có thể chứng tỏ khả năng đó, thì hầu hết các nhà tuyển dụng sẽ thuê bạn - ít ra là theo kinh nghiệm của bản thân tôi.
Tôi có trải nghiệm ở cả hai trường hợp trên. Tôi đã cố gắng xin việc làm khi không có bằng cấp và tôi cũng thử xin việc làm khi tôi có một mảnh bằng. Tôi thấy rằng trong cả hai trường hợp đó, tấm bằng không quan trọng bằng việc chứng tỏ khả năng tôi có thể thực sự viết ra code tốt và giải quyết vấn đề.
Vì vậy, tôi biết rằng không cần thiết phải có một bằng cấp, nhưng có nó thì cũng tốt.

Bạn nên làm gì nếu bạn vừa mới bắt đầu?

Nếu tôi bắt đầu vào ngày hôm nay, thì đây là điều mà tôi sẽ làm: tôi sẽ lên kế hoạch để đạt được bằng cấp của mình một cách rẻ nhất có thể và hoặc là làm việc toàn thời gian, hoặc tốt hơn là tạo ra sản phẩm hoặc công ty của mình trong khoảng thời gian đó.
Tôi sẽ cố gắng học 2 năm đầu tiên tại một trường cao đẳng cộng đồng, nơi mà học phí vô cùng rẻ. Trong khoảng thời gian đó, tôi sẽ cố gắng thu được kinh nghiệm làm việc thực sự tại một công việc thực tế hoặc là bằng cách phát triển một phần mềm của riêng mình.
Một khi tôi đã hoàn thành bằng cấp 2 năm đó, sau đó tôi sẽ thi tuyển vào một trường đại học, hy vọng rằng tôi sẽ nhận được học bổng có thể trang trải cho phần lớn học phí của mình. Tôi cũng tránh việc vay mượn bất kỳ khoản tiền nào. Tôi sẽ chắc chắn rằng mình có thể kiếm đủ tiền làm thêm để có khả năng trang trải cho học phí đó. Tôi nhận ra điều này không phải luôn luôn có thể thực hiện được, nhưng tôi sẽ thử giảm thiểu mức nợ nần nhiều nhất có thể.
Điều mà bạn hoàn toàn không muốn đó là bắt đầu làm việc sau khi hoàn thành 4 năm đại học và bạn có một khoản nợ khổng lồ vào lúc đó. Rất có thể, số lượng tiền thưởng ít ỏi mà bằng cấp của bạn mang lại sẽ không thể bù đắp cho những hy sinh mất mát 4 năm kinh nghiệm làm việc và tiền lương, và bạn sẽ chìm sâu vào nợ nần. Đừng phạm phải sai lầm như vậy.
Một con đường khác mà bạn cũng nên cân nhắc đó là hoàn thành một khóa học trực tuyến - và hoàn toàn lờ đi các trường học truyền thống. Mức học phí ở các trường học truyền thống ngày càng tăng trong khi bằng cấp truyền thống ngày càng giảm giá trị - đặc biệt trong lĩnh vực phát triển phần mềm.
Nếu bạn đi theo lộ trình này, bạn cần phải có một chút khả năng tự động viên bản thân và tự kỷ luật. Bạn cần sẵn lòng tạo ra cho mình một kế hoạch học tập và bắt đầu xây dựng phần mềm của riêng mình, nó sẽ chứng tỏ rằng bạn biết cái mà bạn đang làm.
Vấn đề lớn nhất bạn sẽ phải đối mặt khi không có một bằng cấp là khi bạn tìm kiếm công việc đầu tiên của mình. Rất khó để tìm được một công việc khi chưa có kinh nghiệm, nhưng khi bạn không có bằng cấp thì điều đó còn khó hơn nhiều. Cái bạn cần là một portfolio công việc để cho thấy rằng bạn có thể thực sự viết code và phát triển phần mềm.
Tôi thậm chí còn đề xuất bạn nên tạo ra công ty của riêng mình và tạo ra ít nhất một sản phẩm phần mềm để bạn bán thông qua công ty đó. Bạn có thể đưa kinh nghiệm đó vào trong hồ sơ của mình và chủ yếu là tạo ra công việc đầu tiên của bạn. (Một ứng dụng di động là một sản phẩm tuyệt vời dành cho một lập trình viên mới bắt đầu.)

Điều gì xảy ra nếu bạn đã là một lập trình viên có kinh nghiệm?

Bạn có nên quay trở lại trường đại học để lấy một tấm bằng vào lúc này?
Nó thực sự phụ thuộc vào những mục tiêu của bạn. Nếu bạn đang lên kế hoạch để trèo lên những nấc thang chức vụ trong một tổ chức lớn, thì câu trả lời là nên. Trong một môi trường tổ chức, bạn sẽ sớm "chạm trần" nếu bạn không có một bằng cấp. Đó chỉ là cách mà các tổ chức làm việc. Thêm nữa, nhiều tổ chức sẽ giúp trả tiền học phí cho bằng cấp của bạn, vì vậy tại sao lại không tận dụng điểm thuận lợi đó.
Nếu bạn chỉ muốn trở thành một nhà phát triển phần mềm và viết code, thì có lẽ không cần. Nó có thể không đáng để đầu tư, trừ khi bạn có thể đạt được nó với mức học phí rất rẻ - và thậm chí sau này khoảng thời gian đầu tư đó có thể trở nên không có giá trị. Bạn thực sự cần cân nhắc kỹ xem liệu bạn có khả năng kiếm được thêm bao nhiêu và bạn sẽ phải mất chi phí bao nhiêu về thời gian và học phí cho tấm bằng đó. Có lẽ bạn nên tự học để nâng cao những kỹ năng của mình hơn là quay lại trường để nhận lấy một mảnh bằng theo kiểu truyền thống.
Về tác giả bài viết:
John SonmezJohn Sonmez là một lập trình viên, người lập ra trang web Simple Programmer, đồng thời anh là tác giả có nhiều giáo trình học trực tuyến tại Pluralsight. Anh đã xuất bản hơn 50 khóa học trực tuyến về các chủ đề như iOS, Android, .NET, Java và phát triển Games. Bạn có thể liên hệ với anh qua Twitter.

10 Cách tự học lập trình tốt nhất

Bài viết được dịch từ trang web Lifehacker
Cách tự học lập trình tốt nhất
Lập trình là một trong những kỹ năng có giá trị nhất mà bạn có thể học trong thời hiện đại này, cho dù mục đích của bạn là phát triển sự nghiệp hoặc thử thách trí tuệ hay để tạo ra một sản phẩm tuyệt vời nào đó. Nếu bạn vừa mới bắt đầu chuyến hành trình của mình vào thế giới lập trình, thì đây là danh sách 10 bí quyết và tài nguyên giúp bạn học lập trình một cách hiệu quả nhất.

1. Nhận ra lý do tại sao bạn muốn học lập trình

Nhận ra lý do tại sao bạn muốn học lập trình
Hướng đi của bạn sẽ phụ thuộc phần lớn vào lý do tại sao bạn muốn học lập trình và bao nhiêu thời gian bạn có thể chuyên tâm dành cho việc học. Nếu bạn muốn trở thành một lập trình viên chuyên nghiệp thì việc đăng ký các khóa học tại các trường đại học có thể là lựa chọn tốt nhất dành cho bạn. (Google có một danh sách những kỹ năng và khóa học đề nghị đối với những người muốn trở thành kỹ sư phần mềm.) Nếu bạn muốn xây dựng các trang web hoặc các trò game cho vui (và có thể sinh lợi) trong thời gian rỗi, thì các tutorial dạng tương tác có thể là một lựa chọn tốt hơn. 

2. Lựa chọn đúng ngôn ngữ lập trình

Lựa chọn đúng ngôn ngữ lập trình
Không có ngôn ngữ lập trình nào là "tốt nhất" cả, và khi bạn đã học được một ngôn ngữ thì rất dễ để học sang ngôn ngữ khác, vì vậy đừng phân vân quá nhiều trong việc chọn ngôn ngữ đầu tiên của mình. Tuy nhiên có một số ngôn ngữ thân thiện với người mới bắt đầu hơn những ngôn ngữ khác. Ngôn ngữ bạn chọn để bắt đầu có thể phụ thuộc vào mục đích của bạn. (Ví dụ, nếu bạn muốn viết một ứng dụng iOS, bạn sẽ cần học Swift hoặc Objective-C). Nếu bạn muốn học lập trình một cách nghiêm túc thì hãy bắt đầu với C, mặc dù có những ngôn ngữ bậc cao hơn như Python khá là dễ học. 

3. Bắt đầu nhỏ (và phải kiên nhẫn)

Bắt đầu nhỏ và phải kiên nhẫn
Không quan trọng việc bạn chọn ngôn ngữ lập trình hoặc phương thức nào để học, bạn nên bắt đầu ở mức cơ bản nhất. Ví dụ, khi David Sinsky tự học lập trình trong 8 tuần, anh ta đã dành ra một ngày cuối tuần để nắm kiến thức giới thiệu về Python và một ngày để hiểu sơ bộ về framework Django - thực hành theo những tutorial, sau đó xóa tất cả các code mẫu của tutorial, và tự làm lại thông qua trí nhớ. Bắt đầu với những thứ cơ bản và hãy kiên nhẫn với bản thân trong quá trình học tập. Để cho dự án lập trình đầu tiên của mình được hoàn thành, hãy chia nhỏ dự án đó thành nhiều bước đơn giản. Và nếu một phương thức học tập nào đó không mang lại hiệu quả cho bạn thì hãy thử những cách thức khác trước khi bỏ cuộc.

4. Thử một ứng dụng dành cho trẻ em

Thử một ứng dụng dành cho trẻ em
Ngày nay thậm chí những đứa trẻ mới tập đi cũng đã bắt đầu học lập trình rồi. Đó thực sự là một điều tuyệt vời cho tất cả chúng ta. Mặc dù nhiều chương trình được thiết kế để dạy trẻ em lập trình rất đơn giản, nhưng có nhiều phần mềm như Scratch phù hợp cho mọi lứa tuổi. Không quan trọng bạn bao nhiêu tuổi; thậm chí những ứng dụng hiệu ứng động dành cho trẻ em có thể giúp bạn bắt đầu với những kiến thức cơ bản trong lập trình (edX có một khóa học mới là Lập trình bằng phần mềm Scratch).

5. Sử dụng các trang web dạy lập trình trực tuyến miễn phí

Sử dụng các trang web dạy lập trình trực tuyến miễn phí
Các trang web dạy học trực tuyến miễn phí như Codecademy và tham gia chương trình Hour of Code có thể giúp bạn viết chương trình máy tính đầu tiên của mình. Các tutorial từ những trang như KhanAcademy, Codecademy, Code.org, và nhiều tổ chức khác sẽ giới thiệu tới bạn những kiến thức lập trình cơ bản - trong khi tạo ra một trò game mới, một trang web, hoặc dự án khác. Tìm những tài nguyên cần thiết về những ngôn ngữ mà bạn đang học. Đây là những điểm bắt đầu rất tốt, nhưng bạn sẽ cần tiếp tục học xa hơn sau những phần sơ lược này.

6. Tham gia một khóa học lập trình

Tham gia một khóa học lập trình
Các khóa học trực tuyến về Khoa học Máy tính cung cấp kiến thức toàn diện hơn so với các trang dạy trực tuyến chỉ tập trung vào một ngôn ngữ lập trình nhất định. Những khóa học này được thiết kế để dạy bạn một số kỹ năng nền tảng tương đương một vài tháng trong các lớp học ở cấp độ đại học. Về mặt cá nhân tôi không thể đề xuất khóa học CS50 của trường đại học Harvard là đủ (bạn có thể học nó miễn phí tại đây), còn có nhiều những khóa học khác bạn có thể tham gia (được liệt kê trong series Lifehacker U của chúng tôi). Thậm chí bạn có thể xây dựng một nền tảng giáo dục về Khoa học Máy tính ở cấp độ đại học với 15 khóa học trực tuyến được chọn lọc này.

7. Đọc sách lập trình miễn phí

Đọc sách lập trình miễn phí
Khi bạn bị mắc kẹt trong một vấn đề hoặc cần tìm kiếm một điều gì đó, thì những cuốn sách tham khảo là rất tiện dụng. Có một tuyển tập đồ sộ của trên 500 cuốn sách lập trình miễn phí được đăng trên GitHub, và tuyển tập ebook chứa nội dung về 24 ngôn ngữ lập trình khác nhau.

8. Chơi các trò game về lập trình

Chơi các trò game về lập trình
Thường thì cách tốt nhất để học là thông qua các trò chơi. Trong khi có rất nhiều các tutorial lập trình hướng dẫn bạn tự xây dựng các trò game từ đơn giản đến phức tạp, một số trang dạy học cũng chính là những trò game:Code Combat và CodinGame là 2 trang mang lại nhiều niềm vui khi học ở đó.

9. Tìm một người hướng dẫn (hoặc dạy một người nào đó)

Cộng đồng lập trình có rất nhiều người rất sẵn lòng giúp đỡ để tạo ra thế hệ lập trình viên tiếp theo. Hack.pledge()là một trang sẽ kết nối bạn với một người gia sư, hoặc bạn cũng có thể đăng ký trở thành gia sư của một ai đó. Thậm chí chỉ là lên kế hoạch để dạy những điều mà bạn đã  học được, điều đó cũng giúp bạn ghi nhớ thông tin được tốt hơn.

10. Hack code của người khác

Hack code của người khác
Khi bạn đọc code của một người khác, kiểm thử mỗi dòng để xem cách nó làm việc ra sao, bạn sẽ có được sự hiểu biết tốt hơn về toàn bộ bức tranh tổng thể. Nhờ rất nhiều dự án mã nguồn mở, bạn có thể học được về hầu hết mọi thứ - và luôn học hỏi để tiến bộ thêm từng ngày. Chỉ nên nhớ là hãy chia sẻ code của bạn tới cộng đồng nếu bạn đã cải tiến được một chương trình nào đó. 

Làm thế nào để tôi có thể bắt đầu lập trình game?

Bài viết được dịch từ trang web Gamasutra

Lập trình game nên bắt đầu từ đâu?
Tôi nhớ khoảng 5 năm về trước, tôi có gửi một bức email cho một vị giáo sư ở trường đại học danh tiếng M.I.T sau khi nhìn thấy bà ấy trong một chương trình truyền hình đặc biệt nói về chủ đề Trí Tuệ Nhân Tạo (AI). Tôi đã dành hết tâm huyết vào bức email đó để nói về các lý thuyết của tôi về phát triển Trí Tuệ Nhân Tạo, như làm thế nào các máy tính có thể được lập trình để nhận ra các môi trường xung quanh, làm thế nào để những cảm xúc có thể được học thông qua trải nghiệm, v.v... Tôi đã dành ra 4 giờ đồng hồ để viết bức email đó bởi vì tôi cảm thấy có một sự kết nối với công việc của vị giáo sư này. Việc viết bức email đó rất thú vị bởi vì nó đề cập đến một vấn đề mà tôi rất quan tâm và muốn được tiếp cận và nói chuyện với ai đó về nó. Lúc đó tôi tràn trề hy vọng trong khi viết thư vì cứ nghĩ có thể sẽ được trả lời và sẽ có một ai đó để cùng nói chuyện về chủ đề này, và có thể giúp tôi tiến vào con đường tạo ra một chiếc máy Trí Tuệ Nhân Tạo tiên tiến. Buồn thay, tôi chẳng bao giờ nhận được phản hồi từ vị giáo sư nọ... và tôi thậm chí không biết liệu bà ấy đã đọc bức thư đó hay chưa.
Gần đây, nhờ bộ phim tài liệu Indie Game: The Movie đề cập đến trò chơi do tôi làm ra là Super Meat Boy, tôi thường nhận được một vài câu hỏi thông qua email/twitter mỗi ngày từ những người muốn được tư vấn. Hầu hết các email này đến từ những người hâm mộ trẻ tuổi và mong muốn nhận được lời khuyên về các vấn đề như "Tôi nên sử dụng ngôn ngữ lập trình nào?" hay "Làm thế nào để tôi có thể đưa được trò game của tôi lên Xbox". Tôi đã đọc tất cả các email nhưng không phải lúc nào tôi cũng trả lời, bởi vì việc đó sẽ chiếm mất một khoảng thời gian của tôi, chưa kể là có rất ít sự khác biệt về nội dung giữa các bức email đó.
Tôi thường cảm thấy khá tồi khi tôi không trả lời, bởi vì những người đó chỉ đang tìm cách tiếp cận và muốn một ai đó có thể làm sáng tỏ cho họ một số vấn đề trong phát triển game. Họ đang làm cái việc giống như tôi đã làm với vị giáo sư của trường đại học M.I.T nhiều năm về trước. Họ quan tâm đến những gì tôi làm và muốn biết làm thế nào để làm điều đó, họ muốn trở thành một phần của phát triển game theo một cách nào đó. Vâng, tôi rất muốn giúp nhưng không có đủ thời gian, kiến thức hoặc mong muốn trở thành một giáo viên... vì vậy ngày hôm nay tôi sẽ làm sáng tỏ ở đây. Bài viết này như một phần trả lời cho những câu hỏi thường gặp (FAQ) cho bất kỳ ai muốn một vài lời khuyên theo một cách nào đó từ tôi về cách làm game.

Tôi phải bắt đầu thực hiện trò game mơ ước của mình từ đâu?

Tôi phải bắt đầu thực hiện trò game mơ ước của mình từ đâu? 

"Tôi nên bắt đầu từ đâu?" là kiểu câu hỏi phổ biến nhất mà tôi nhận được. Tôi cảm thấy bước đầu tiên luôn là rào cản lớn nhất của rất nhiều người bởi vì họ không nhận ra rằng tất cả mọi thứ, thậm chí là trò game khùng khùng AAA ngoài kia, cũng đều bắt đầu từ chỗ không có gì và cứ được xây dựng dần cho tới khi nó trở thành như ngày nay. Khi trò game mơ ước của bạn đang ấp ủ trong đầu và bạn thực hiện bước đi đầu tiên để tạo ra nó, việc này có thể rất khó khăn khi chuyển từ trạng thái tưởng tượng thành hiện thực. Đối với những người chưa bao giờ làm một trò game, những thứ đơn giản như tạo ra một nhân vật có thể di chuyển là một điều gì đó không thể và có thể nhanh chóng làm nản chí họ. Bạn đừng thực hiện theo cách đó, chìa khóa ở đây là hãy bắt đầu nhỏ thôi.
Trò game Super Meat Boy bắt đầu chỉ là một hình vuông và hình của một gã mập Meat Boy trên nó. Trò Mew-Genics khời đầu chỉ là một hình vuông màu đen di chuyển tới lui trên màn hình. Trò Goo! bắt đầu chỉ là các hình tròn với các khuôn mặt cười trên chúng. Trò “Game 2” bắt đầu là một hình ảnh vector của nhân vật trong "Game 2". Mọi thứ đều bắt đầu ở cấp độ cơ bản nhất và phát triển từ đó mà lên.
Một điều rất quan trọng khi làm game đó là chỉ bước một bước tại một thời điểm. Nếu bạn lao vào làm trò game mơ ước của mình với tất cả chức năng cùng một lúc, rất có thể bạn sẽ cảm thấy nản lòng và bị choáng ngợp. Nếu bạn xây dựng cũng trò game mơ ước đó chỉ một bước nhỏ ở mỗi thời điểm, bạn sẽ có cơ hội nhận ra tầm nhìn của mình sẽ phát triển theo cấp số nhân.
Chia trò game của bạn thành những phần nhỏ buộc bạn phải phân tích và ước lượng các ý tưởng của mình ở một mức sâu hơn. Điều này là cần thiết bởi vì bạn luôn luôn muốn cởi mở để thay đổi, bạn chẳng bao giờ muốn đặt mình vào một con đường mà bạn cảm thấy không thể nào đi chệch khỏi. Việc chệch khỏi kế hoạch ban đầu có thể mang lại nhiều phần thú vị nhất của một trò game. Nó là một cách để phát triển bởi vì bạn đang suy nghĩ trong một hệ thống game và đang áp dụng những ý tưởng mới tới những ý tưởng đã được hình thành.
Vì vậy, hãy cố gắng phân rã các ý tưởng của bạn thành những phần nhỏ có thể thực hiện được một cách dễ dàng trong tập kỹ năng hiện tại của bạn. Nó sẽ dễ dàng hơn để quan sát tiến độ theo cách đó, bạn sẽ không cảm thấy nản lòng một cách dễ dàng, và bạn có thể quay lại công việc của mình sau đó và dễ dàng tiếp tục công việc đang làm dở dang. Nên nhớ rằng không có giới hạn về mặt thời gian khi bạn phải cho ra lò trò game của mình (nếu bạn đang bắt đầu giống như vậy, thì có nghĩa là bạn đang ở trong một khoảng thời gian khó khăn). Học được bài học qua mỗi bước đi và xây dựng các dự án của bạn giống như là bạn đang chơi trò xếp hình Lego vậy... ghép một mẩu ở một thời điểm.
Để cung cấp một ví dụ chi tiết hơn, cho phép tôi kể về cách tôi đã xây dựng trò game Super Meat Boy như thế nào. Lúc đầu tôi chỉ có một hình chữ nhật với hình ảnh một gã mập Meat Boy trên đó, tôi tập trung vào việc làm sao để có thể điều khiển nó di chuyển tiến và lùi. Sau khi tôi đã chơi với nó một chút thì tôi làm thêm tính năng là khi tôi nhấn một nút trên bàn phím thì gã Meat Boy sẽ nhảy lên, sau đó tôi làm cho gã dừng lại khi hắn đã tiếp đất, tiếp đó tôi làm tính năng dừng hắn lại khi chạm vào tường, sau đó tôi làm cho hắn dính vào tường, và khi mà hắn ta mắc kẹt vào bức tường thì tôi nhấn vào một button để hắn nhảy qua bức tường đó, sau đó nếu anh ta chạm phải một hình vuông màu xanh thì sẽ chết và cứ tiếp tục như vậy cho tới dòng cuối cùng trong kịch bản game và trò game Super Meat Boy đã hoàn thành theo cách đó. 
Không có tác vụ nào quá nhỏ, không có số lượng tiến độ nào là quá ít. Điều quan trọng là bạn không cảm thấy nản lòng và bạn tiếp tục phát triển trò game của mình.

Tôi nên sử dụng ngôn ngữ lập trình nào?

Tôi nên sử dụng ngôn ngữ lập trình nào?

Đây là một câu hỏi phổ biến thứ hai mà tôi thường nhận được và phải thành thật mà nói là tôi không thích câu hỏi này bởi vì nó là một câu hỏi mà tôi không thể trả lời. Tôi luôn cố gắng trả lời câu hỏi đó là "bất cứ ngôn ngữ nào mà bạn cảm thấy phù hợp nhất". Tôi không nghĩ rằng đây là câu trả lời hiệu quả cho các câu hỏi của mọi người bởi vì tôi cảm thấy mọi người đang tìm kiếm một câu trả lời nhất định hoặc họ chỉ vừa mới bắt đầu và không cảm thấy thoải mái với bất kỳ ngôn ngữ lập trình nào cả. Tôi sẽ cố gắng giải thích về câu trả lời của mình để có thể giúp đỡ người khác hiểu cách làm thế nào lựa chọn một ngôn ngữ tốt nhất cho họ hoặc giúp họ hiểu rằng việc sử dụng cái mà họ cảm thấy thoải mái là cách tốt nhất để bắt đầu.
Nếu bạn đang tìm kiếm lời khuyên về việc nên bắt đầu bằng ngôn ngữ lập trình nào, thì bạn không cần bận tâm về những vấn đề kiểu như "Liệu Flash có chạy trên iOS?" hoặc "Xbox có chạy Java không?" hoặc "Liệu XNA có chạy trên Mac?". Lúc này bạn nên quan tâm đến việc làm thế nào để thực hiện một trò game, chứ không phải là cách để phát hành nó hoặc bán nó. Những câu hỏi này chỉ quan trọng khi bạn đang lo lắng về việc phát hành một trò game, nhưng việc phát hành một trò game là cách dễ hơn nhiều so với việc thực hiện nó. Bạn có thể lo lắng về việc phát hành trò game của bạn vào lúc khác.
Tìm một ngôn ngữ và bạn nhấp chuột vào rồi bắt đầu viết code. Điều quan trọng lúc ban đầu là nó phải mang lại nhiều sự hài lòng nhất có thể. Bạn muốn có một cái gì đó hiện lên màn hình nhanh chóng và xây dựng từ đó. Bạn muốn có khả năng chỉnh sửa cái mà bạn đã tạo ra và thêm vào nó một cách dễ dàng. Sự hài lòng tức thời là chìa khóa để luôn duy trì động lực khi mới bắt đầu, bạn có thể không muốn học một ngôn ngữ mới trong khi đang tạo ra trò game của mình. Nếu bạn cố gắng học một ngôn ngữ lập trình mới trong khi đang tạo ra trò game của bạn, thì rất có thể bạn sẽ dành ra nhiều tuần để đọc và không có thứ gì để trình diễn ra, ngoại trừ kiến thức mà bạn vẫn chưa có khả năng áp dụng vào trò game của mình. Điều đó có thể tạo ra sự chán nản.
Gắn chặt với cái bạn biết, hoặc đi theo hướng thoải mái và dễ dàng nhất có thể nhằm thu được các kỹ năng cần thiết để bắt đầu làm việc trên trò game của bạn. Vì vậy nếu bạn biết một chút Flash thì sử dụng Flash, nếu bạn sử dụng C++ thì hãy viết game bằng C++, nếu bạn chỉ biết sử dụng Java thì hãy dùng Java. Không có cái gì gọi là "ngôn ngữ phát triển game chính thống" cả. LUÔN LUÔN nhớ lấy điều đó. Trò game Minecraft được viết bằng Java, Super Meat Boy được viết bằng C++, Farmville được viết bằng Flash, một số trò game nổi tiếng khác mà mọi người đang chơi được viết bằng HTML5, một số trò khác được làm trên Index cards. Quan điểm ở đây là: công cụ nào không quan trọng. Hãy tìm một cách bạn cảm thấy thoải mái để làm game, và bắt tay vào làm bằng ngôn ngữ và công cụ đó.
Đừng cho rằng tôi đang làm nản lòng bạn trong việc học thêm những ngôn ngữ lập trình mới và làm việc ra bên ngoài vùng thoải mái của bạn (comfort zone). Một khi trái bóng đã lăn, bạn sẽ muốn vươn ra ngoài vùng thoải mái của bạn và học thêm những điều mới nếu bạn muốn phát triển trở thành một nhà phát triển game chuyên nghiệp. Nhưng hãy tạm gác lại vấn đề đó, trong lúc này bạn nên thiết lập các công cụ cần thiết và bắt tay vào code ngay.
Nếu bạn không biết bất kỳ ngôn ngữ nào và đang tìm kiếm một nơi để bắt đầu, thì tôi đề xuất bạn sử dụng Flash, Game Maker, Unity hoặc một công cụ tương tự. Tất cả những chương trình này giúp bạn dễ dàng tạo ra một cái gì đó hiển thị lên màn hình một cách nhanh chóng mà không cần phải học quá nhiều. Bạn sẽ không muốn bắt đầu bằng ngôn ngữ như C++ nếu bạn chưa có kinh nghiệm với bất cứ ngôn ngữ lập trình nào khác và đang lo lắng để tạo ra trò game của mình.

Những cuốn sách và tutorial nào mà tôi nên đọc?

Những cuốn sách và tutorial nào mà tôi nên đọc?

Có 2 cuốn sách mà tôi đề xuất bạn nên đọc, nhưng chúng chỉ dành cho phát triển game bằng C++ và chúng cũng không phải là sách dành cho người mới bắt đầu. Đó là 2 cuốn Effective C++ và More Effective C++. Đây là những cuốn sách khá nâng cao về C++, vì vậy nếu bạn không biết C++ thì đừng thốt lên rằng "Ồ, tôi phải học những thứ này mới làm được game ư?". Bạn đừng như vậy.
Ngoài 2 cuốn sách đó, tôi chưa từng đọc bất kỳ cuốn sách nào khác về phát triển game. Tôi thường học bằng cách đọc các tài liệu SDK. Đó không phải là cách điển hình lắm, nhưng là cách mà tôi đã học.
Tôi cũng đề xuất bạn nên tìm các khóa học và các tutorial trực tuyến. Trên internet đầy rẫy những chương trình ví dụ, nhưng tutorial kiểu như NeHe, v.v... Tôi không đề xuất một tutorial nào cả, lý do chính là bởi vì tôi chưa từng xem qua bất kỳ tutorial nào, nhưng tôi biết các nguồn tài nguyên trực tuyến rất phong phú và đa dạng. Tôi chắc rằng với một chút trợ giúp từ Google thì bạn có thể tìm thấy chính xác cái bạn cần.
Tôi KHÔNG khuyến khích bạn copy và past các đoạn code từ các tutorial để làm trò game của mình. Bạn sẽ không học được điều gì cả nếu làm theo cách đó, bạn chỉ là tay chuyên đi copy mà thôi. Điều đó thường đi đôi với các chương trình mã nguồn mở. Chúng trông rất tốt khi xem xét, học tập và tham khảo, nhưng chúng không đồng nghĩa với việc bạn đang tự làm trò game của riêng mình. Bạn sẽ không thể trở thành một lập trình viên giỏi bằng cách đi copy và past mã nguồn vào trong trò game của bạn, trừ khi bạn hoàn toàn hiểu nó. Đừng tự dối lừa bản thân mình theo cách này, hãy dành thêm thời gian để hiểu một cái gì đó trước khi sử dụng nó.

Bạn đã sử dụng phần mềm nào để tạo ra trò game đó?

Bạn đã sử dụng phần mềm nào để tạo ra trò game đó?

Tôi cảm thấy khi câu hỏi này được hỏi, thì nó được xuất phát từ những người cho rằng có một công cụ thần kỳ nào đó để làm các trò game cho bạn. Thực tế cũng có những công cụ có thể làm được rất nhiều việc cho bạn. Nếu bạn không cảm thấy thích thú trong việc học một ngôn ngữ lập trình cho mục đích xây dựng một game engine, thì hãy tìm kiếm những công cụ như Unity hoặc UDK. Chúng sẽ giải phóng gánh nặng cho bạn và cho phép bạn chỉ việc tạo ra game. Nhưng cũng có cái giá phải trả khi bạn sử dụng những công cụ này. Bạn sẽ bị giới hạn bởi hệ thống cung cấp cho bạn những công cụ đó. Những công cụ này đầy đủ các đặc trưng được xây dựng sẵn, ổn định, và đáng kinh ngạc, nhưng đôi khi chúng sẽ không thể làm điều mà bạn muốn.
Về mặt cá nhân tôi không thích những giới hạn và tôi thực sự thích thú khi có thể tự do làm điều mình thích trong phát triển game, vì vậy tôi tránh sử dụng những công cụ này và xây dựng các trò game của tôi từ code mà tôi đã viết trong nhiều năm qua. Điều đó không nói rằng một trò game như Super Meat Boy không thể tồn tại trong một công cụ giống như Unity. Nó có thể hoàn thành đến một mức độ nào đó. Do bởi những giới hạn nên nó sẽ không tạo ra được trò game chính xác như vậy, nó sẽ không có giao diện và kiểu điều khiển giống hệt. Những trò game tuyệt vời có thể được tạo ra bởi các công cụ như UDK, Unity... và những trò game tuyệt vời cũng được tạo ra mà không cần có chúng.
Tôi sử dụng Visual Studio cho việc phát triển, nhưng tôi có thể dễ dàng sử dụng Eclipse, Code Warrior, XCode, hoặc Notepad và một trình biên dịch. Cũng giống như việc chọn một ngôn ngữ lập trình, không quan trọng việc bạn sử dụng cái nào. Visual Studio là cái mà tôi đã sử dụng. Tôi không sử dụng bất kỳ chức năng cao siêu gì được tích hợp trong nó cả, tôi sử dụng nó như một cách để tổ chức các file mã nguồn của mình, biên dịch và debug. Có hàng tấn các trình soạn thảo ở ngoài kia có thể làm được việc này.
Đối với phần đồ họa và các hiệu ứng động, cộng sự của tôi là Ed sử dụng Flash. Tôi đã viết một công cụ để xuất những hiệu ứng động trong Flash bởi vì nó dễ hơn là viết ra các công cụ cho Edmund, và... hơn nữa... Edmund rất thoải mái khi sử dụng Flash. Việc viết công cụ đó đồng nghĩa với việc phải học JSFL và làm việc trong Flash, nhưng nó cũng mang lại hiệu quả tốt nhất cho Ed, tôi và cho cả Super Meat Boy. Bạn không cần công cụ xuất hiệu ứng động của tôi để làm trò game của mình. Một ngày đẹp trời nào đó tôi sẽ cung cấp những công cụ này miễn phí đến các lập trình viên, nhưng điều này không xảy ra trong thời gian gần, vì vậy bạn đừng chờ đợi.

Làm thế nào mà bạn luôn có động lực để hoàn thành công việc bạn đã bắt đầu?

Làm thế nào mà bạn luôn có động lực để hoàn thành công việc bạn đã bắt đầu?

Không có bí mật nào trong việc duy trì động lực và đây không thực sự là một lời khuyên tôi dành cho bạn để bạn có động lực trong dự án của mình. Tôi đã không sử dụng bí quyết đặc biệt nào, hoặc tư duy, hoặc danh sách tổ chức công việc, hoặc bất kỳ điều gì giống vậy. Để tôi có thể luôn có động lực, tôi có niềm tin và thích thú trong dự án mà mình đang làm. Nếu tôi không thích việc mà tôi đang làm, thì có lẽ là tôi sẽ không thể hoàn thành nó.
Ví dụ, một trò game mà tôi đã bắt đầu làm nhiều năm về trước có tên là Goo!. Tôi đã làm việc trên nó trong vòng 2 năm, và nó chẳng đi đến đâu cả. Nó không phải là ý tưởng của tôi, nó không phải là một trò game mà cá nhân tôi muốn làm, và bởi vì điều đó nên tôi có thể chẳng bao giờ tạo ra nó theo cách mà tôi muốn. Tôi đã dừng việc phát triển nó để bắt đầu trò game Super Meat Boy.
Quãng thời gian xây dựng trò Goo! đó không hề lãng phí bởi vì tôi đã học được rất nhiều về phát triển game, nhưng trò game đó đã chẳng bao giờ hoàn thành bởi vì nó không phải là cái gì đó tạo ra sự hào hứng trong tôi. Khía cạnh duy nhất trong trò game đó khiến tôi phấn khích là phần multi-threaded physics engine và tôi đã dành phần lớn thời gian của mình trên đó. Nó rất quan trọng đối với tôi khi làm việc trên trò game đó, bởi vì nó khiến tôi nhận ra rằng việc yêu quý trò game mà mình đang tạo ra khiến cho công việc trở nên dễ dàng hơn nhiều. Đó là động lực quan trọng nhất.
Khi bạn tin và yêu cái mà bạn đang làm việc trên đó, thì rất khó có gì có thể dừng bạn lại. Bạn có nỗi ám ảnh về nó, bạn muốn bổ sung thêm tính năng cho nó, bạn muốn làm nó trở nên tốt hơn, và bạn thực sự muốn nhìn thấy nó hoàn thành. Việc tin vào cái mà bạn đang làm việc có khuynh hướng giúp bạn hoàn thành trò game. Bạn càng muốn dành nhiều thời gian để đánh bóng nó, bổ sung thêm các đặc trưng bạn nghĩ rằng sẽ làm trò game trở nên tốt hơn, nói chung là đi xa hơn là chỉ đơn thuần làm trò game của bạn.

Làm thế nào để tôi có thể đưa trò game của tôi lên Steam/Xbox/PS3/WiiU/Anything hay bất cứ nơi nào khác?

Làm thế nào để tôi có thể đưa trò game của tôi lên Steam/Xbox/PS3/WiiU/Anything hay bất cứ nơi nào khác?

Đây là một câu hỏi mà không ai đặt ra khi họ vừa mới bắt đầu hoặc thậm chí nếu họ có một trò game đang xây dựng. Câu khẩu hiệu của bạn nên là "Tôi sẽ làm một trò game hay" chứ không phải "Tôi cần đưa nó lên XBLA". Con đường để đưa các trò game của bạn tới bất kỳ nền tảng nào là một kiến thức công khai. Không có một email bí mật nào, không có một form ma thuật nào mà bạn cần điền vào, bạn không cần phải có mối quen biết bất kỳ ai ở đó, không có chị em họ của ai đó làm việc ở những tổ chức này và hẹn gặp bạn một cách bí mật, không có thứ gì giống như vậy tồn tại ở đây cả.
Nó rất đơn giản để được chấp nhận cho bất kỳ những nền tảng nào: tất cả bạn cần là một trò game tốt. Tất cả chỉ có vậy. Đó là một thực tế khắc nghiệt mà một số người từ chối tin vào. Tôi đã nhìn thấy một số người giơ đầu chịu báng mọi thứ cho trò game của họ khi nó được chấp nhận bởi Steam/XBLA... hoặc các nền tảng khác. Một trò game hay sẽ thu được sự chú ý và quan tâm nghiêm túc từ những người nắm giữ các platform dựa trên giá trị riêng của nó với một chút giúp đỡ từ bạn. Hãy nói về trò game của bạn, hãy hào hứng về nó, nếu trò game của bạn tốt và những người khác thích nó cũng như sự hăng hái của bạn thì nó sẽ được lan tỏa sang những người khác.
Nếu trò game của bạn không tốt, bạn sẽ có một khoảng thời gian khó khăn để có thể đưa nó lên các nền tảng phân phối. Hãy tập trung vào việc làm cho trò game của bạn trở nên tốt nhất có thể, đừng tập trung vào những nền tảng nào mà bạn có thể đưa nó lên. Một trò game tốt thì tự quảng bá bản thân nó tốt hơn là việc phơi nó ra trên một nền tảng nào đó.

Điều gì sẽ xảy ra nếu tôi hoàn thành trò game của mình mà không một ai muốn chơi nó cả?

Điều gì sẽ xảy ra nếu tôi hoàn thành trò game của mình mà không một ai muốn chơi nó cả?

Nếu bạn đã làm việc vất vả, và bạn nghĩ rằng trò game của mình là thứ tuyệt vời nhất và bạn vẫn không thể đưa nó lên bất kỳ một nền tảng phân phối nào, thì hãy đừng xem đó là một thất bại và không phải là một tín hiệu bạn nên dừng việc làm ra các trò video game. Rất ít người thành công với trò game đầu tay của họ. Trò game SMB là trò game đầu tiên mà tôi từng hoàn thành, nhưng có một số trò tôi làm trước trò SMB đã chẳng đi đến đâu cả.
Có thời điểm tôi chỉ còn vài bước nữa là nhận được một thỏa thuận với hãng Sony giống hệt như các trò fl0w và Everyday Shooter cho trò game Goo! mà tôi đã đề cập ở trên. Có một sự thay đổi trong quản lý ở phút cuối (chỉ 2 ngày trước khi hợp đồng cuối cùng được ký) là nguyên nhân trò game đó bị hủy bỏ và tôi chẳng bao giờ nghe thông tin từ hãng Sony nữa. Trò game đó không được tốt và thậm chí nếu có được thỏa thuận với hãng Sony thì nó có lẽ cũng chẳng được hoàn thành và sẽ trở thành một thất bại to lớn. Đó là một nỗi đau, đầy chua xót, nhưng nó đã không thể dừng tôi lại.
Đừng để điều đó kéo lùi bạn hoặc giết chết giấc mơ của bạn. Người ta có thể nghĩ "đứa con" của bạn rất xấu xí... nhưng điều đó cũng tốt thôi. Hãy tiếp tục làm game. Hãy lấy những thất bại đó làm nguồn cảm hứng và một ngày nào đó bạn sẽ có đủ sức mạnh để vượt qua nó, rất có thể bạn sẽ nhận ra giấc mơ của mình.

Lập trình game mơ ước

Kết luận

Hãy làm trò game của bạn với bất cứ cái gì mà bạn có thể, bắt đầu nhỏ thôi và đừng lo lắng về những thứ lặt vặt sau này. Các ngôn ngữ lập trình và phần mềm thì chẳng liên quan lắm đến việc tạo một trò game, vì vậy hãy lựa chọn cái mà bạn cảm thấy thoải mái hoặc bạn muốn học nhưng đừng ôm đồm quá nhiều khi bạn mới bắt đầu. Hãy chắc chắn rằng bạn tạo ra một tiến độ đủ để luôn có động lực và xua tan đi sự nản lòng. Hãy yêu quý trò game của bạn, nói chuyện về nó, có một nỗi ám ảnh về nó và bạn sẽ không cảm thấy vất vả khi làm việc trên nó.
Về tác giả bài viết:
Tommy RefenesTommy Refenes là một lập trình viên và một video game designer người Mỹ, được biết đến với vài trò là tác giả của trò game nổi tiếng Super Meat Boy, một nền tảng mà anh đã cùng tạo ra với cộng sự Edmund McMillen. Refenes bắt đầu lập trình từ lúc 11 tuổi, và đã làm việc như một chuyên gia vào lúc 18 tuổi. Anh từng bỏ dở việc học đại học tại trường North Carolina State University, và sau đó có một phát biểu nổi tiếng rằng "nếu bạn muốn trở thành một lập trình viên, thì đừng có đi học đại học". Hiện tại anh đang là CEO của công ty Team Meat. Bạn có thể liên hệ với anh qua Twitter

Share BigVines Blogger Theme Responsive tin tức đẹp, load nhanh

Share BigVines Blogger Theme Responsive - Đây là một template blogspot tin tức đẹp, với tốc độ tải trang nhanh mà ít có trang tin tức nào làm được như vậy.
Đọc thêm »

Chia sẻ template blogspot ichiase.biz v2

Template blogspot ichiase.biz v2 là một trong những template blogspot được nhiều người thích dùng bởi tốc độ tải trang rất nhanh, với bố cục đơn giản, dễ dàng chỉnh sửa.

Xem thêm: Template Blogspot tin tức cực đẹp từ ichiase.biz
Đọc thêm »

Pages - Menu