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

Học lập trình cho người mới bắt đầu

Dù bạn có phải là một lập trình viên hay không, thì tại một thời điểm nào đó bạn đã nghĩ đến việc vọc vậy thiết kế web. Hoặc phát triển ứng dụng di động. Hoặc truy vấn cơ sở dữ liệu. Hay một cái gì đó khác từ vốn hiểu biết của mình, bằng các ngôn ngữ lập trình hiện đại ngoài kia. (Vâng, có hàng trăm ngôn ngữ lập trình). Đối với những người không phải là lập trình viên, sự thiếu kiểm soát và phụ thuộc vào các nhà phát triển tạo ra một áp lực để họ chọn cho mình ít nhất một kiểu lập trình nào đó - dù phức tạp hay không.

Giá trị của lập trình trong kinh doanh

Rõ ràng lập trình đã trở thành một phần trong con người của bất kỳ nhà sáng lập nào. Dù bạn sẽ trở thành CTO cho doanh nghiệp của bạn hay không, cách suy nghĩ thực dụng và những lợi ích phát sinh là không thể bàn cãi:

  • Biết rõ sản phẩm của bạn. "Việc đi thuê người khác làm sản phẩm cho bạn sẽ gặp phải nhiều vấn đề nhức đầu, tốn tiền bạc và thời gian. Việc có khả năng thực hiện những chỉnh sửa trên trang web hoặc ứng dụng di động của bạn không chỉ giúp bạn tiết kiệm nguồn tài nguyên quý giá, mà còn cho phép bạn có một sự hiểu biết tốt hơn về sản phẩm của mình." (AJ Agrawal, Doanh nhân).
  • Giải quyết vấn đề. "Các lập trình viên thường có những quan điểm không giới hạn [cũng như các doanh nhân]. Họ hiếm khi hỏi tại sao; họ luôn hỏi tại sao không... và họ luôn muốn tạo ra một cái gì đó có ý nghĩa, và đó là niềm vui lớn nhất của công việc." (Howard Tullman, Inc.).
  • Thu hút nhân tài. "Việc tìm một co-founder chuyên về kỹ thuật là rất khó, và các quỹ đầu tư mạo hiểm có thể sẽ không muốn rót vốn vào các startup thiếu vị trí này... Những kiến thức thu được sẽ [cũng] có ích khi bạn phỏng vấn các ứng viên cho vị trí lập trình viên." (Dan Pickett, Business Collective).

Sự cân bằng hoàn hảo giữa chủ nghĩa thực dụng và sáng tạo, logic và nghệ thuật song song là động lực cần thiết của một startup.

Một số khóa học STEM cho thiếu nhi tại Techmaster

Chuyến hành trình (lúc còn trẻ) của tôi

Rõ ràng đó là một thử thách khó khăn, những thất bại luôn tăng theo cấp số nhân cho lớp trẻ khi học lập trình. Lập trình trong giới trẻ, theo nhiều cách, không được tốt trong lĩnh vực thường được coi là thế mạnh của mình. Tại sao chỉ có 8% sinh viên STEM tốt nghiệp ngành khoa học máy tính trong khi có tới 71% công việc STEM mới là trong lĩnh vực này?

Với những lợi ích lớn đến từ những doanh nhân am hiểu về kỹ thuật, bất kỳ mối đe dọa nào cho sự phát triển của khoa học máy tính nên được coi là một mối đe dọa cho sự phát triển của phong trào startup.

Tin tôi đi. Tôi cũng đã có những suy nghĩ ngớ ngẩn giống như vậy cách đây vài tháng. Năm 18 tuổi, tôi đã học khóa  AP Computer Science trong một vài năm, nhưng kinh nghiệm lập trình của tôi - và quan trọng hơn là thời gian của tôi - giảm xuống gần như bằng không. 

Hơn 6 tháng trải nghiệm lập trình hiệu quả với Code School, với một chồng sách hướng dẫn dễ làm nản lòng, cuối cùng tôi cũng cảm thấy thoải mái khi gọi mình là một lập trình viên.

Tuy nhiên, trong một lớp học có hơn 500 học viên (với nhiều người cũng đã tham gia lớp AP Computer Science như tôi), tôi có thể đếm trên đầu ngón tay những người thậm chí thỉnh thoảng mới viết code. Tại sao, trong một thế giới đầy ắp những việc làm về công nghệ (525.293 việc làm mới mở ra), lại có nhiều sinh viên nhút nhát từ bỏ lập trình? 

Học lập trình cho người mới bắt đầu

Những cảnh báo

Những cái bẫy giáo dục

Tôi đã bắt đầu từ đâu ư? Tôi đã tham gia một trường trung học công lập có cạnh tranh cao - top 1% trên toàn quốc về điểm thi. 

Như tôi đã chỉ ra trong một bài viết trước trên TechCrunch, chỉ có 5% các trường trung học ở Hoa Kỳ cung cấp khóa học AP Computer Science, và chỉ có 31 bang thực sự cho phép khoa học máy tính được tính vào tốt nghiệp trung học. Hệ thống giáo dục công đối xử với khoa học máy tính như là một lựa chọn thứ hai mặc dù vẫn khoác lác về việc "đưa các khóa học STEM" vào chương trình giảng dạy của họ.

Một ít các lớp dạy lập trình cung cấp một khung chương trình còn tệ hơn. Lấy khóa học AP Computer Science (được tạo ra bởi Ban trung học) làm ví dụ. Tại sao chỉ có 1,09% của tất cả các kỳ thi AP năm 2015 là về khoa học máy tính?

Khóa học này tập trung hoàn toàn vào Java - một ngô ngữ back-end, strongly typed, hướng đối tượng. Trong khi tôi không có cách nào để nói xấu về những tiện ích của Java (trong đó thể hiện nhiều khái niệm lập trình cốt lõi), nhưng đối với một học sinh không thiên về kỹ thuật, thì việc học Java quả thật là nhàm chán.

Java hoàn toàn là ngôn ngữ back-end; sau khi hoàn thành khóa học AP của mình, chúng tôi đã học được cách làm thế nào để tạo ra một chương trình chuyển đổi giữa độ C và độ F, lập trình một trò game đơn giản (tất cả đều đơn thuần dạng text, thật đáng buồn) và tạo ra một máy tính cá nhân. Không có thiết kế đồ họa. Không có giao diện người dùng. Không style CSS.

Đến cuối năm, hầu hết các bạn học của tôi đều đã bỏ lập trình và chỉ dừng lại ở mức thao tác với dữ liệu cơ bản. Thậm chí tệ hơn, thi cuối kỳ nhà trường đòi hỏi tất cả code phải viết trên giấy.

Thế còn thiết kế web ở đâu? Các front-end framework? Những người mới bắt đầu - đặc biệt là giới trẻ - mong muốn một cái gì đó hữu hình, một cái gì đó nhìn thấy được kết quả trực quan. Thật vậy, 65% loài người là những người học qua thị giác. Việc học chỉ thuần text khiến lớp trẻ cảm thấy nhàm chán và muốn tránh xa lĩnh vực này. Thay vào đó, các lớp học nên tập trung vào thiết kế web front-end -- HTML, CSS, Javascript -- để cho lớp trẻ thấy sức mạnh của lập trình và làm thế nào nó có thể dẫn đến các ứng dụng thực tế.

Những bất cập cố hữu

Làn sóng ngày càng tăng của cuộc thi lập trình hackathon thúc đẩy sự tham gia của "những người hoàn toàn mới bắt đầu học", nhưng chúng ta hãy trung thực - bạn có thực sự muốn tham gia vào một nhóm các lập trình viên có 5 đến 10 năm kinh nghiệm, có thể hoàn thành tác vụ 30 phút, trong khi bạn phải mất 24 giờ mới xong? Không có gì ngạc nhiên, hầu hết những người tham dự (77%) các cuộc thi hackathon xem mình là một "developer".

Nếu bạn không có kinh nghiệm lập trình từ thời trung học, thì bạn sẽ bị tụt lại phía sau. Trong một cuộc khảo sát nhân viên của Google, 98% các chuyên gia khoa học máy tính cho biết đã tiếp xúc với lập trình trước khi học đại học. Ở trường trung học, tôi đã học rất nhiều qua các video hướng dẫn, vô số cuốn sách và blog lập trình, nhưng vẫn không ngừng lo lắng: Liệu mình đã "đủ tốt" trong lập trình hay chưa?

Những cuộc thi lập trình, diễn đàn trực tuyến (ví dụ Stack Overflow) và các trang web hướng dẫn miễn phí không làm gì để ngăn chặn nỗi sợ hãi này. Thay vào đó, chúng giới thiệu các khái niệm mới lạ, những lập trình viên có nhiều kinh nghiệm hơn bạn và bạn ngày càng do dự về việc liệu đặt một câu hỏi quá cơ bản có làm phiền các đồng nghiệp hay không.

Trong môi trường cạnh tranh cao, lớp trẻ thường cảm thấy luôn bị áp lực tâm lý và căng thẳng, chúng ta chỉ tập trung vào các hoạt động mà mình xem là thành công. Điều này làm tăng sự lo âu và mất đi từ tinh thần hợp tác trong công việc lập trình.

Sự hỗn loạn của môi trường web

Hiện nay đang có phong trào tự học lập trình thông qua các tài liệu trên web, blog và video. Cũng như với tinh thần doanh nhân, "Thế giới lập trình luôn luôn phát triển, và để giữ mình luôn theo kịp và phát triển, thì bạn phải có lối suy nghĩ như người mới bắt đầu vậy", như Michelle đã chỉ ra.

Điều này nói thì dễ hơn làm cho những người mới bắt đầu và họ thực sự không biết nên bắt đầu từ đâu. Đặc biệt là khi tự học, không có một nơi đáng tin cậy để đào sâu vào lĩnh vực phát triển web. Chắc chắn là các trang dạy lập trình trực tuyến như Codecademy, Code School và vô số những trang khác đang cung cấp những khóa học tốt, nhưng họ mới chỉ dừng lại ở những kiến thức cơ bản.

Đối với lớp trẻ nói riêng, họ thường khao khát có được những kiến thức phù hợp nhất, nhưng thường thất vọng vì không biết phải làm gì tiếp theo để có thể khám phá các lĩnh vực khác - và chính việc không có phương hướng dẫn đến việc họ từ bỏ lĩnh vực khoa học máy tính.

Kết luận

Lớp trẻ không phải là không thích lập trình. Trong thực tế, 54% học sinh thích lĩnh vực khoa học máy tính "rất nhiều" (nhiều hơn 15% so với bất kỳ lĩnh vực nào khác). Có vô số bài viết về việc khoa học máy tính cần phải có một sự hiện diện lớn hơn trong các trường học, các cuộc thi lập trình với triết lý "tất cả các cấp độ kỹ năng đều được chào đón". 

Tuy nhiên, điều này đã luôn giả định rằng những sinh viên có cơ hội tham dự các lớp lập trình sẽ yêu thích và kiếm được một công việc STEM thích hợp.