Thuyết Âm dương trong thế giới lập trình và tinh thần Shu - Ha - Ri
Sau bài viết "Xin đừng đánh nhau với Framework" của mình được đăng lên. Đã có rất nhiều ý kiến đồng ý, nhưng cũng có nhiều ý kiến trái chiều. Mình thấy ý kiến này cũng rất đúng: "cái gì cũng chăm chăm tìm framework, tìm thư viện thì lấy đâu ra sáng tạo, lấy đâu ra phát triển!". Nói thế thì chẳng ...
Sau bài viết "Xin đừng đánh nhau với Framework" của mình được đăng lên. Đã có rất nhiều ý kiến đồng ý, nhưng cũng có nhiều ý kiến trái chiều. Mình thấy ý kiến này cũng rất đúng: "cái gì cũng chăm chăm tìm framework, tìm thư viện thì lấy đâu ra sáng tạo, lấy đâu ra phát triển!".
Nói thế thì chẳng hóa ra là mình là người ba phải??? Vậy thì thực sự nó là thế nào? Theo kiến giải chủ quan của mình thì như thế này Theo âm dương để nói thì, "bĩ cực tắc thái, thái cực tắc bĩ", mọi thứ thái quá đều không tốt.
- Nhanh quá thì ẩu,
- Cẩn thận quá thì mất cơ hội.
- Thông minh quá thì chủ quan khinh địch
- Không thông minh thì làm gì cũng khó.
- Tận dụng thư viện thì làm nhanh, đỡ tốn công tốn sức,
- Không tận dụng thư viện thì lại giống như chàng Donkihote lấy sức mình chống lại cối xay gió.
Cuộc sống sao mà khó quá vậy, cái gì cũng ko được thì tôi phải thế nào đây?
Vâng đúng! Cuộc sống vốn dĩ đã phức tạp. Và cả cuộc đời, người ta vẫn đang đi tìm một chứ "Tri" - "Biết".
Cái khó nhất trong cuộc đời là biết lúc nào làm cái gì!
- Biết lúc nào nên nhanh, lúc nào nên chậm.
- Biết lúc nào nên tiến, lúc nào nên thoái.
- Biết lúc nào cương, biết lúc nào nhu.
- Biết lúc nào phải tỏ ra thông minh để mọi người tin tưởng, nhưng cũng phải biết lúc nào cần tỏ ra khiêm tốn để mọi người giúp đỡ.
- Biết lúc nào động viên nâng đỡ tinh thần những người bạn. Nhưng cũng biết lúc nào phũ phàng để người ta hiểu được ra vấn đề.
- Biết lúc nào bao dung để con cái có trải nghiệm trong cuộc sống, nhưng cũng phải biết nghiêm khắc để con cái tránh vấp ngã.
- Biết bảo vệ lẽ phải, nhưng cũng biết lùi lại để bảo vệ những mối quan hệ.
- Biết cho đi, nhưng cũng cần biết nhận lại.
Cuộc đời đã là thế, đang là thế, và sẽ luôn là thế. mọi sự nhìn theo một cách nào đó thì đều có đúng có sai. **Ai đã hiểu ra một chân lý rằng mình luôn luôn có thể sai thì đã trở thành một người trưởng thành. ** Họ có thể bao dung với người khác, bao dung với chính bản thân mình, và học hỏi thêm thật nhiều những điều mới.
Nhìn cuộc sống là vậy và suy sang thế giới lập trình, nó cũng như vậy
Nếu bạn không biết mượn sức người khác, bạn không thể tiến nhanh. Mượn sức ở đây là:
- Hỏi đồng nghiệp
- Sử dụng Framework
- Sử dụng thư viện
Nhưng nếu bạn mượn sức người khác quá nhiều, dựa dẫm vào người khác quá nhiều, thì bạn không còn là chính bạn. Bạn sẽ trở thành một món tạp phế lù, hỗn độn.
Vậy làm thế nào để biết khi nào sử dụng Framework, khi nào cần phải tự làm để tăng cường khả năng, tính sáng tạo, và sự độc lập của mình
Và lời khuyên của tôi ở đây là hãy áp dụng một mô hình giáo dục SHU - HA - RI: "Theo thầy, học thầy, và làm thầy".
Theo thầy
Trước khi sáng tạo điều gì đó, hãy làm theo cho thật đúng đã. Mọi sự tồn tại đều có nguyên nhân của nó. Dù nó có chưa hoàn hảo, nhưng ít nhất là con đường đó đã có người đi và chắc chắn sẽ đến đích. Bạn làm theo Tutorial, bạn làm theo hướng dẫn của thầy giáo, bạn sử dụng thư viện, framework thì hãy cố gắng làm thật đúng theo chỉ dẫn. Vì việc làm đúng mang lại rất nhiều lợi ích có thể kể ra đây.
- Giúp chương trình được xây dựng nhanh chóng. Vâng, tất nhiên rồi, làm bằng thư viện thì rất nhanh, theo tutorial cũng vậy, có người hướng dẫn cũng như vậy. Rất nhanh chóng để làm chương trình chạy được.
- Chúng ta có cái nhìn tổng quan về cách thức họ có thể làm cho chương trình chạy, nó bao gồm những phần gì, cấu hình, cài đặt nó ra sao.
- Chúng ta có thể dễ dàng nhận biết được chỗ nào còn thiếu sót thông qua việc so sánh 2 đoạn mã code với nhau.
Và sau này khi tôi làm thầy, tôi lại càng cảm nhận sâu sắc hơn giá trị của việc theo thầy. Nó giống như việc khi tôi đã đưa các bạn học sinh lên ô tô, để đi đến 1 cái đích. Với kinh nghiệm của tôi, tôi biết rằng cái đích đó rất có giá trị với các bạn. Nhưng nếu trong quá trình đi, các bạn liên tục yêu cầu tôi tạt ngang, té ngửa, dừng chỗ này để giải thích 1 chút, dừng cái kia để giải thích 1 chút thì thời gian đến cái đích kia sẽ kéo dài ra rất nhiều, thậm chí là vô hạn bởi chúng ta đã đi nhầm mục tiêu. Sẽ tốt hơn rất nhiều khi chúng ta đi một mạch tới đích. Khi đến điểm đích, chúng ta đã có những cái quan trọng nhất - cái nhìn tổng quan tổng thể - và tự bản thân chúng ta cũng đã có thể trả lời hầu hết các câu hỏi, còn một vài câu hỏi khó, chúng ta mới yêu cầu thấy giải đáp thì các học vậy mới mang lại giá trị và hiệu quả cho các bạn.
Học thầy
Sau khi đã qua được giai đoạn "Theo thầy" rồi, các bạn hãy dũng cảm bước sang gia đoạn "Học thầy". Đây là giai đoạn chúng ta cần đặt nhiều câu hỏi để hiểu được bản chất vấn đề. Hãy thêm bớt, thay đổi tên, thay đổi biến, phá cách để mình có thể hiểu được nguyên lý hoạt động của nó.
Rất nhiều bạn có một tinh thần "tự sướng" hết sức lên cao. Các bạn đó đã ngay lập tức tự cho rằng mình đã hiểu hết các vấn đề và đóng cửa mọi việc tìm hiểu tiếp. Điều đó làm cho các bạn không thể tiến xa hơn trong nghề lập trình.
Với bản thân tôi, đến giờ tôi vẫn đang học UIButton, UITableView - những thứ cơ bản nhất. Gần đây, tôi cũng mới hiểu ra và biết sử dụng static tableView, sử dụng kết hợp được static tableView với dynamic tableView. Và cũng mới gần đây tôi mới hiểu rõ ràng mô hình MVC trong cách thiết kế và sử dụng UIButton. Và các bạn thấy có app nào ko sử dụng tableView, UIButton không ah? Vì vậy, bạn hãy học như một đứa trẻ, hãy ngây thơ, hãy chơi trò chơi ngay trong công việc lập trình của mình. 80% những gì quan trọng nhất nằm ở 20% những gì cơ bản nhất.
Làm thầy
Sau khi bước qua giai đoạn "Học thầy", kiến thức trong đầu chúng ta vẫn là một mớ hỗn độn nó chưa được sắp xếp một cách quy củ và khoa học. Chính vì vậy, chúng ta phải quy hoạch kiến thức của mình ra bằng những bài Blog, hoặc trình bày cho người khác nghe. Chính quá trình chúng ta "Làm thầy", chúng ta đã học được thêm rất nhiều.
Bản thân tôi, để có được như bây giờ, tôi rất cảm ơn người học sinh đầu tiên của tôi, người đã đồng hành cùng tôi, người đã cho tôi cơ hội để được giảng dạy, để được củng cố, quy hoạch lại kiến thức. Ba mẹ tôi thường hay hỏi tôi rằng: "con cứ dạy đi dạy lại kiến thức cơ bản như vậy thì lấy đâu ra thời gian để học cái mới". Thật ra điều này cũng đúng, nhưng khi dạy người khác giống như mình refactor code của chính bản thân mình. Mỗi lần mình dạy là 1 lần mình refactor. Khi nào mình dạy mà không có điều mới lạ thì mình cần phải xem lại bản thân, bởi mình đang đứng tại chỗ, mình ko phát triển. Và chúng ta cần dành thời gian thêm để update kiến thức mới.
Còn các bạn, các bạn muốn phát triển nhanh, các bạn muốn lương cao hơn, bạn hãy thử xem xét việc dạy thêm cho người khác xem. Tôi tin chắc rằng các bạn sẽ thành công.
Hiện nay, chúng tôi vẫn đang đào tạo miễn phí cho các bạn học sinh sinh viên - những người có niềm đam mê, khát khao cháy bỏng trong nghề lập trình. Nếu bạn là người như vậy nhưng chưa có điều kiện để học tập thì hãy liên hệ với tôi, chúng tôi sẽ cùng nhau giúp đỡ bạn.