Tin tức chung

Nên hay không việc lấy code chùa của người khác?

07 May 2020

Nên hay không việc lấy code chùa của người khác khi học lập trình?

Mỗi nhà phát triển phần mềm là một kẻ trộm mã, vì ăn cắp mã là một công cụ tự học và tiết kiệm thời gian.

Trong bài đăng này, tôi sẽ giải thích ý của tôi về mã ăn cắp. Cụ thể, tôi sẽ chỉ cho bạn cách chúng giúp cải thiện cả việc học Java và mã của bạn.

Cho dù bạn là người mới bắt đầu sử dụng Java hay lập trình viên nâng cao hơn, thì chắc chắn sẽ có thứ gì đó cho bạn ở đây. Rốt cuộc, ngay cả những người có kinh nghiệm nhất trong chúng ta luôn có thể học được điều gì đó mới.

Sao chép code không phải lúc nào cũng bất hợp pháp


Bạn có biết rằng hầu hết mọi họa sĩ bậc thầy có phong cách riêng của họ bắt đầu bằng cách sao chép những người khác?

Hầu như mọi bậc thầy có bức tranh mà bạn nhận ra ngay từ cái nhìn đầu tiên vì tính nguyên bản của chúng bắt đầu trong các bảo tàng bằng cách phác họa và sao chép các tác phẩm phổ biến trong thời đại của họ.

Tại sao các họa sĩ làm điều này? Để học hỏi từ các chuyên gia, tất nhiên. Sao chép giúp cải thiện kỹ năng của bạn trong khi bạn dần dần phát triển phong cách của riêng bạn.

Phong cách ban đầu không quá quan trọng đối với lập trình viên, chắc chắn. Hơn nữa, nó thậm chí có thể gây hại. Những dòng code tốt không phải lúc nào cũng là bảo gốc. Đôi khi, tất cả những gì phải làm là đáp ứng các điều kiện sau:

  • Mã của bạn sẽ giải quyết nhiệm vụ.
  • Mã của bạn phải dễ đọc và dễ hiểu.
  • Mã của bạn nên dễ dàng để duy trì.
  • Mã của bạn nên ngắn gọn, nghĩa là tránh các công trình không cần thiết.

Các mã nên giải quyết nhiệm vụ, ít nhiều rõ ràng (mặc dù cũng có nhiều sắc thái: để hiểu liệu vấn đề được giải quyết chính xác không phải lúc nào cũng dễ dàng). Nhưng làm thế nào để bạn biết mã của bạn có dễ hiểu, chuẩn và dễ bảo trì hay không, đặc biệt nếu bạn mới bắt đầu học?

Giải pháp: “Ăn cắp” mã từ người khác!

Sử dụng một số ví dụ mã khác của người khác cũng giống như học hỏi từ các bậc thầy và các nhà phát triển có kinh nghiệm hơn.

Vì vậy, điều này có nghĩa là gì?

Làm thế nào để một người ăn cắp mã của Google sao cho hợp pháp và hữu ích cho nghiên cứu cá nhân?

Sử dụng tài nguyên học tập và ý tưởng được thực hiện bởi các chuyên gia


Chúng ta đủ may mắn để sống với internet. Bạn có thể tìm thấy các khóa học hữu ích và thực tế và các dự án học tập ở đó sẽ giúp bạn phát triển như một lập trình viên.

Một số trong số họ thậm chí có hướng dẫn từng bước và mẫu mã bạn có thể học hỏi.

Khi phát triển một dự án nhỏ, đôi khi nó tốt nhất để bắt đầu với các khuyến nghị chuyên nghiệp. Bằng cách này, một phần của mã đã được viết và bạn có thể sử dụng các mẫu được viết sẵn của chúng để giúp xây dựng mã của riêng bạn từ đó.

Bước đầu tiên để mã hóa như các chuyên gia là kiểm tra công việc của các lập trình viên chuyên nghiệp.

Dự án game

Chơi game trên thiết bị di động là một hoạt động cực kỳ phổ biến và các game chiếm tỷ lệ lớn trong số các ứng dụng có sẵn. Nó rất có thể là vào lúc này hay lúc khác, game lập trình sẽ là thứ mà bạn ít nhất muốn thử một lần.

Một ý tưởng tuyệt vời cho các dự án chơi game là tạo ra các phần của game và viết mã dựa trên mã của các game cổ điển.

John Carmack, tác giả của các dự án game có ảnh hưởng như Doom, Wolfenstein 3D và Quake, đã từng nói trên Twitter của mình rằng mọi người mới bắt đầu nên cố gắng tạo lại các game retro cổ điển như các bài tập lập trình. Hoạt động này rất hữu ích cho các nhà phát triển trong tương lai.

Tuy nhiên, việc tạo ra ngay cả game đơn giản nhất cũng có thể khó khăn cho người mới bắt đầu hoàn thành. Thông thường, một tân binh bị lạc và không biết bắt đầu từ đâu. Nhưng một lần nữa, chúng ta may mắn như thế nào khi chúng ta có mạng Internet với tài nguyên của nó là ở đây để giúp đỡ!

Các game được cung cấp rất nhiều với các hướng dẫn và ví dụ mã. Sau khi bạn hoàn thành game, bạn có thể sửa đổi nó theo ý muốn.

Trên trang web zetcode, bạn có thể tìm thấy một hướng dẫn chi tiết cho các game Java 2D, với các ví dụ mã cho các game cổ điển (Sokoban, Snake, PacMan và các game khác), cũng như một hướng dẫn hữu ích để phát triển các game của riêng bạn.

Hạn chế duy nhất là thư viện Swing khá cũ được sử dụng ở đây. Tuy nhiên, bạn vẫn có thể học hỏi từ nó. Điều chính là để hiểu khái niệm. Tìm hiểu mã, sử dụng một phần của mã đó và sau đó thử tạo lại các game tương tự bằng cách áp dụng công nghệ chơi game hiện đại hơn để hiển thị.

Có một dự án thú vị tên là Codingame, nơi bạn có thể tham gia phát triển một game không gian quy mô tương đối lớn. Một phần của mã đã được viết. Tìm hiểu nó một cách cẩn thận, và sau đó tiến hành viết phần của riêng bạn theo sự phân công.

Nhờ chương trình đặc biệt này, bạn sẽ dễ dàng tạo ra các game của riêng mình sau này. Hạn chế duy nhất là dự án này được thiết kế cho những người đã tương đối tự tin trong lập trình.

Ít nhất, bạn có thể viết lại mã từ các sách Java như Head First Java, Core Java hoặc bất kỳ thứ gì khác mà bạn sử dụng trong quá trình học.

học lập trình

Đặt câu hỏi trên diễn đàn và đọc câu trả lời của người khác


Nếu có gì đó không đúng với nhiệm vụ của bạn, hoặc bạn không biết phải làm gì để giải quyết vấn đề mà bạn đang giải quyết, bước đầu tiên bạn nên làm là đến Google.

Google sẽ hiển thị cho bạn các diễn đàn tốt nhất để đọc mã, chẳng hạn như Stack Overflow, một số luồng Reddit, JavaRanch hay DevPro.

Hãy mô hình hóa tình huống này. Bạn có một vấn đề, bạn đã đi đến Google và bạn đã tìm thấy một người có vấn đề tương tự.

Đi đến các bình luận nơi những người khác đã đăng một giải pháp và trộm cắp mã! Tuy nhiên, một ý tưởng tốt là cố gắng nhận ra điều gì sai và tại sao mã đồng nghiệp Internet của bạn lại đúng.

Nếu bạn có thể tìm thấy câu trả lời cho câu hỏi của mình thì hãy tạo một câu hỏi mới!

Đừng sợ điều này. Để biết cách hỏi trong lập trình có nghĩa là bạn nửa chừng để giải quyết vấn đề. Bạn có thể nói, đó là một con đường nguy hiểm để tìm kiếm giải pháp trên internet mỗi khi bạn bị mắc kẹt với một vấn đề.

Chà, có thể là nếu bạn không cố gắng đủ. Thường xuyên hơn, các lập trình viên tân binh gắn bó với các nhiệm vụ phức tạp của họ quá lâu.

Kết quả là họ mất động lực.

Vì vậy, hãy cẩn thận.

Hãy thử, nhưng không quá lâu. Hãy hỏi trên internet và làm việc trên đoạn mã bị đánh cắp của Google hơn là khăng khăng tự mình giải quyết nó và tự đuổi theo cái đuôi của mình một cách vô ích.

Một mẹo tuyệt vời khác là đọc các diễn đàn, và cố gắng giúp đỡ người khác giải quyết vấn đề của họ. Bài tập này không chỉ mang lại lợi ích cho bạn cho công việc tương lai của bạn mà còn có thể giúp bạn bước vào cửa như một chuyên gia trong lĩnh vực của bạn, cho dù bạn có cảm thấy bạn có hay không.

Sử dụng mã từ các dự án nguồn mở hiện có


Một trong những học sinh của tôi rất thích Minecraft. Khi bắt đầu lập trình, anh bắt đầu bằng cách dịch ngược Minecraft, lấy mã Java và thay đổi nó theo cách sử dụng của riêng mình.

Đầu tiên, anh ta đã sửa đổi mã dịch ngược này và sau đó anh ta đã viết bản sao Minecraft của riêng mình cho Android. Bây giờ, anh ấy tự tạo game Android.

Chúng tôi có một Github với hàng triệu dự án khác nhau trên đó. Nếu bạn đã nhận ra, Github là một trong những nơi thú vị nhất trên toàn bộ internet. Nếu bạn muốn tìm một dự án thú vị, bấm Khám phá và tìm các kho lưu trữ phổ biến. Bạn có thể chọn nó theo loại (ví dụ: Công cụ năng suất, mô hình 3D), theo bộ sưu tập hoặc chỉ theo tên.

Ví dụ: Tôi muốn tạo phiên bản Space Invaders nhưng tôi là một tân binh. Bằng cách sử dụng tab khám phá, tôi có thể tìm thấy một bản sao Kẻ xâm lược không gian Java, tải xuống và thử đọc mã. Làm y hệt!

Điều gì sẽ xảy ra nếu mọi thứ tôi mã hóa là ăn cắp từ người khác?


Tôi chắc chắn rằng phần lớn các lập trình viên hiện đại tự hỏi mình câu hỏi này nhiều lần. Tôi không chỉ nói về sinh viên hay thực tập sinh; ngay cả các chuyên gia cũng có vấn đề này.

Thực tế là lập trình ngày càng trở nên cao cấp. Có ít dòng mã do bạn viết hơn so với những dòng khác mà bạn sử dụng. Vì vậy, bạn có thể bị rung cảm Hội chứng Impostor, một tình trạng cực kỳ phổ biến ở các lập trình viên, nơi bạn liên tục nghi ngờ về thành tích và kỹ năng của chính mình.

Để chống lại điều này, hãy viết mã từ đầu.

Thỉnh thoảng, tôi cho học sinh của mình một giờ mã trên một tờ giấy. Tôi khuyên bạn nên làm như vậy một hoặc hai lần một tuần. Chọn một nhiệm vụ mà bạn đã giải quyết cách đây không lâu hoặc nếu bạn đủ can đảm, bạn có thể có một nhiệm vụ mới và giải quyết nó trong ứng dụng Notebook mà không cần tô sáng cú pháp và không có Google.

Bạn có thể sử dụng ngay cả một mảnh giấy!

Nhiệm vụ này không phải là về cú pháp. Một điểm đánh dấu quan trọng hơn nhiều là liệu bạn có thể tạo ra một thuật toán giải pháp hay không.

Đừng lười biếng, và thực hiện bài tập này như một loại vắc-xin cho Hội chứng kẻ mạo danh liên quan đến trộm cắp mã nặng.

Ăn cắp như một người chuyên nghiệp?


Tôi tin rằng ăn cắp mã là một công cụ giảng dạy và tiết kiệm thời gian. Các ví dụ và phương pháp tôi đã chỉ ra cho bạn có thể giúp ích rất nhiều cho việc học của bạn.

Ăn cắp mã không phải là một tội ác, mà là một phương pháp để dạy bản thân cách viết mã. Mỗi học sinh, thậm chí mỗi học sinh chuyên nghiệp của mọi lĩnh vực đều sao chép thứ gì đó do người khác tạo ra. Sử dụng lại mã là một quá trình tự nhiên cho mọi nhà phát triển phần mềm. Họ sử dụng các thư viện, các thành phần và các dự án nguồn mở rộng rãi.

Khi bắt đầu vào việc học lập trình, đừng nên vội vàng nghĩ rằng tự mình sẽ làm được hết. Đôi khi mới học lập trình, bạn cũng nên học hỏi và sử dụng code của người đi trước như một gợi ý cho bài tập của mình.

Vì vậy đừng cố gắng phát minh lại bánh xe. Thay vào đó, sử dụng bánh xe này để hoàn thành mô hình xe hơi của riêng bạn. Giữ bình tĩnh và đánh cắp mã với lợi ích. Chúc may mắn với việc học của bạn!

Công ty Cổ phần DevPro Việt Nam
Địa chỉ: Tầng 6, số 147 Mai Dịch, Cầu Giấy, Hà Nội
Điện thoại: 0985.95.08.95
Facebook: https://www.fb.com/devprojscgroup
Tìm hiểu các khóa học tại: https://www.devpro.edu.vn/khoa-hoc

Đánh giá của học viên đã tốt nghiệp

  • Các anh chị nhiệt tình, thân thiện. Em được mở mang nhiều kiến thức

    Nguyễn Hằng ly
  • Các chị dạy rất dễ hiểu và nhiệt tình. Các kiến thức như trong thực tế khi em đi thực tập tại RikkeiSoft. Cám ơn các anh chị nhiều ạ. Chúc Dev có nhiều học viên hơn nữa.

    Vũ Thị Hà Phương
  • Học ở DevPro đã giúp mình có nhiều kinh nghiệm lập trình android thực tế. Tại đây mình được các thầy dạy rất chi tiết theo một lộ trình rõ ràng của dự án cụ thể nên sau này đi làm mình rất dễ bắt nhịp với công việc.

    Nguyễn Trọng Duy
  • Qua khoá học ở DevPro thì em đã có một “ít” vốn trong tay để có thể "bò" trong lĩnh vực vạn người mê này Trong qúa trình học thì em cảm thấy trung tâm suppost rất nhiệt tình từ đồ ăn tối, event và đầu ra :p. Có chị Quyên "sinh gái" siêu nhây và siêu lầy dụ dỗ bán rẻ học viên cho các nhà tuyển dụng :3 **** Đặc biệt các thầy có rất nhiều kinh nghiệm chỉ dạy và giúp đỡ rất nhiệt tính < mấy tháng liền bám càng đi nhờ thấy :p>

    PhạmTiến Đạt
  • Tôi sẽ không khuyên các bạn phải đến DevPro để học tập thay vì những chỗ khác nhưng tôi đã từng là một người giống các bạn. Tôi băn khoăn không biết chọn nơi đâu làm ngọn đèn chỉ lối và tôi đến với Devpro . Mọi người khá hoà đồng , các thầy cũng cực nhiệt tình nhưng cũng có vốn kiến thức rất rộng còn lại là phụ thuộc vào sự nỗ lực của các bạn nữa thôi. Cố lên nhé. #ATran

    Trần Xuân Ái
  • em thấy mọi thứ đều ổn, thầy giáo nhiệt tình trong cách giảng dậy, dev cũng rất quan tâm học viên . Nhưng theo quan điểm của em và nhìn từ sự phát triển của các trung tâm khác , em nghĩ mỗi khóa học ở dev nên có bài tập cũng như dự án giao cho học sinh làm để tạo áp lực cho học viên code, giữa học viên và công ty cần có những buổi giao lưu nhiều hơn, và cũng nên có 1 số bạn trợ giảng giúp thầy đi fix những lỗi cơ bản cho những bạn hay sai , chứ nhiều khi 1 mình thầy mà phải chạy đến từng bàn fix lỗi cũng k xuể , Xin chúc devpro ngày càng phát triển hơn

    Nguyễn Đình Thành
  • Thầy giáo dạy rất nhiệt tình rất dễ hiểu, các chị quản lý vui vẻ, tạo động lực học viên. Bài giảng phong phú bao gồm nhiều kiến thức nền tảng. .., giúp học viên nắm chắc kiến thức. Có điều lớp toàn nam, ko có nữ ạ

    Vũ Văn Thủy
  • -Thầy giáo rất nhiệt tình trong công tác giảng dạy , cũng như vui tính , thầy luôn giúp đỡ bọn e rất nhiệt tình ! Tuy chỉ học với lớp 1 thời gian không quá dài nhưng e cũng cảm thấy tuyệt vời vì đã từng là học trò của thầy ! - Chị Hằng và Chị Quyên rất vui tính và nhiệt tình giúp đỡ bọn e nữa ạ - e chúc trung tâm ngày càng đông học viên hơn nữa

    Phan Trung Phú
  • DevPro là một môi trường tốt để cho những ai chưa biết gì về lập trình theo học. Bên cạnh đó, đội ngũ giảng viên rất chất lượng, nhiệt tình chỉ bảo cả trên lớp lẫn ở nhà. Ngoài ra tôi rất thích chính sách giới thiệu việc làm cho học viên sau khi tốt nghiệp để có thể tiếp với các doanh nghiệp uy tín. Sau hơn 4 tháng học tập tại công ty, tôi đã hoàn toàn tự tin rằng mình có thể tự học hỏi và bắt đầu làm việc ở một công ty mới với vai trò Web Developer. Cảm ơn DevPro vì tất cả!!

    Nguyễn Đức Huy
  • Học một lúc 2 trường, nhưng mình vấn chưa biết tìm đam mê từ đâu. Từ lúc gặp chị Hằng mình đã quyết chọn theo android, và bây giờ mình chưa bao giờ thấy hạnh phúc đến thế. Mình có công việc ổn định, chuẩn bị onsite ở nhật 1 năm hi hi.

    Trần An Hưng
  • 1.Thầy đẹp trai thì không phải bàn rồi!! Lại được cái nhiệt tình!! ok. 2. Công ty có nhiệt tình hỗ trợ không? Công ty có nhiệt tình hỗ trợ sinh viên, vd:tiền học phí được chia làm 3 đợt giúp đỡ những sv khó khăn,.....

    Trương Quang Trường
  • Em thấy trung tâm dạy tốt và chất lượng ạ. Thầy và các chị đều tận tâm, nhiệt tình và hòa đồng. Đặc biệt là giải lao giữa giờ chúng em còn được ăn nhẹ, e rất thích khoản này.

    Trần Thị Hồng Nhung
  • Tại DevPro mình còn được học code trên tool mới nhất của Android, điều đó càng khiến mình thích thú hơn và trở nên say mê từ lúc nào không biết nữa. Không khí học ở đây rất vui vẻ, ngoài giờ học mình cùng các bạn còn được giải lao ăn nhẹ và trò chuyện cùng nhau nên rất thoải mãi.

    Trương Ngọc Đức
  • Dev chính là nơi giúp mình tìm thấy niềm yêu thích code, cũng chính là nơi đã cho mình những bước đi đầu tiên, cho mình những kiến thức nền tảng tốt nhất trên con đường theo đuổi nghề Dev.

    Nguyễn Thanh Hằng
  • Thầy giáo vui tính, nhiệt tình trả lời và giúp đỡ các bạn khi các bạn có thắc mắc hay khi gặp khó khăn. Các anh chị vui tính, thân thiện tạo cảm giác thoải mái và vui vẻ cho các bạn khi học ở đây.

    Cao Minh Lâm
  • Nghĩ lại hồi đấy, không có Devpro thì chắc giờ em phát rồ mất thôi! Em vốn nghĩ mình có thể tự học được, nhưng kiến thức vốn là vô tận, không có người hướng dẫn thì mình sẽ chẳng biết bắt đầu dư lào, bước tiếp là gì? Nhờ DevPro, sự tận tâm của các thầy mà em mới biết à hóa ra mọi thứ thật đơn giản.

    Kim Erico
  • Hồi học ở DevPro, mình rất quý thầy Việt và những người bạn. Từ kiến thức học được từ trung tâm mình đã mạnh dạn đi thực tập ở một công ty lớn của Nhật Bản và đến giờ đã là nhân viên chính thức ở đây rồi. Vui hơn nữa là có bạn học cùng lớp đó giờ đang là đồng nghiệp cùng mình luôn rồi. Hihi

    Nguyễn Thanh Việt
Nguyễn Hằng ly Vũ  Thị Hà Phương Nguyễn Trọng Duy PhạmTiến Đạt Trần Xuân Ái Nguyễn Đình Thành Vũ Văn Thủy Phan Trung Phú Nguyễn Đức Huy Trần An Hưng Trương Quang Trường Trần Thị Hồng Nhung Trương Ngọc Đức Nguyễn Thanh Hằng Cao Minh Lâm Kim Erico Nguyễn Thanh Việt