Chắc hẳn bất kì lập trình viên nào khi mới làm quen với việc code thì đều cảm thấy mọi thứ thật mới mẻ và rất là “mông lung”. Nó như là việc mình đang bắt đầu học một loại nhạc cụ mới hay học một ngôn ngữ mới vậy. Tất cả mọi thứ đều khiến các Dev cảm thấy choáng ngợp và mọi người sẽ có suy nghĩ như kiểu: Tôi là ai? Đây là đâu? Tôi đang làm cái gì thế này? Rõ ràng hôm qua code chạy ngon ơ mà sao bây giờ khách hàng báo có lỗi rồi lại phải đi debug với fix bug đây, chả hiểu sao!
Mình cũng hiểu nỗi khổ của các Dev. Tuy mình không có ý định làm lập trình viên chuyên nghiệp nhưng mình cũng có tự học những kiến thức cơ bản về lập trình và các loại ngôn ngữ như HTML và CSS để có thể xây dựng và tối ưu website cho Hamsa. Thực sự thì học lập trình thì rất là đau não luôn ấy, nhưng thông qua việc học và áp dụng kiến thức lập trình vào công việc xây dựng website, mình không những được mở mang đầu óc về một lĩnh vực hoàn toàn mới, mà còn có thể cải thiện được các kỹ năng quan trọng và có giá trị trong cuộc sống như cách giải quyết vấn đề, sự kiên nhẫn và chăm chỉ nữa. Vậy tư duy lập trình đã phục vụ cuộc sống như thế nào? Hãy cùng tìm hiểu với mình qua bài viết này nhé!
#1. Tư duy logic và chia nhỏ vấn đề.
Chúng ta đều không thể phủ nhận rằng Steve Jobs sở hữu tài năng phi thường, ông đã từng bước đưa Apple từ một công ty khởi nghiệp trong một gara sửa ô tô lên đến một trong những công ty có giá trị nhất thế giới. Tuy nhiên, ngoài sự nhạy bén trong kinh doanh của mình thì Steve Jobs cũng coi trọng kỹ năng và kiến thức lập trình. Ông nói: “Mọi người đều nên học lập trình máy tính, bởi vì nó dạy bạn cách suy nghĩ, tư duy và giải quyết vấn đề.”
Tư duy về lập trình không chỉ quan trọng trong mỗi công việc lập trình hay kỹ thuật, mà nó còn có thể cải thiện cách bạn tiếp cận những thách thức mới trong cuộc sống. Theo mình thì về cốt lõi, lập trình chính là về giải quyết vấn đề: suy nghĩ logic và chia nhỏ vấn đề thành các bước để tìm ra giải pháp.
Khi mình tìm hiểu về lập trình từ các bạn Dev tại Hamsa thì mình biết rằng, đối với các lập trình viên, khi được giao nhận việc phát triển một sản phẩm phần mềm hay dự án lớn nào đó, họ sẽ không bắt tay vào thực hiện ngay lập tức. Việc đầu tiên họ làm luôn luôn là vẽ ra một sơ đồ giải thuật với flowchart hoặc một số công cụ vẽ bản đồ tư duy khác. Các bạn ấy sẽ nhận những dự án lớn và sau đó chia dự án đó thành các thành phần nhỏ để có thể quản lý công việc tốt hơn. Đây cũng giống như việc chế tạo một chiếc xe hơi bằng cách xây dựng từng bộ phận cần thiết trước khi lắp ráp chúng lại với nhau. Mỗi thành phần là một hoặc một vài code blocks để nhận các bộ giá trị hoặc hành động đầu vào cụ thể (input), sau đó hoàn thành được những công việc đầu ra (output). Trong mỗi thành phần đó, lập trình viên sẽ tìm ra logic từ đầu vào đến đầu ra bằng các biểu đồ flowchart.
Tương tự như trong cuộc sống, khi phải đối mặt với những thử thách và vấn đề khác nhau, hãy cố gắng ngồi xuống, bình tĩnh lại và tư duy một cách logic những bước mà bạn phải làm để vượt qua được thử thách đó. Bạn có thể áp dụng tư duy lập trình, đó là vẽ một sơ đồ từng bước các đầu việc cụ thể mà bạn cần phải làm, các vấn đề nhỏ mà bạn cần phải giải quyết, thứ tự giải quyết thế nào để tiết kiệm thời gian và chi phí, và các phương án dự phòng ra sao. Điều này sẽ giúp bạn dự đoán trước được phần lớn các khả năng có thể xảy ra khi giải quyết vấn đề ở mọi thời điểm, và đưa ra được phương án giải quyết cần thiết cũng như hợp lý nhất. Giống như trong lập trình, nếu bạn càng tỉnh táo và khéo léo khi đưa ra các quyết định ban đầu bao nhiêu, thì kết quả bạn nhận được về sau sẽ càng chuẩn xác và càng đúng tiến độ bấy nhiêu. Cũng giống như việc nếu cẩn thận ngay từ đầu thì bạn sẽ không phải tốn công đi fix bugs sau này vậy!
#2. Với sự kiên nhẫn và chăm chỉ, mọi thứ đều có thể được giải quyết.
Tính kiên nhẫn là đặc biệt quan trọng mà mỗi lập trình viên nên sở hữu cũng như rèn luyện, vì bạn có thể tốn rất nhiều thời gian để tạo nên một phần mềm hay sản phẩm hoàn chỉnh mà không có bất kỳ một lỗi nào để gửi đến khách hàng. Khi mình đang trong quá trình xây dựng website, mình cũng cảm thấy sự kiên nhẫn cực kỳ quan trọng, vì đã rất nhiều lần mình cố gắng hoàn thiện trang web nhưng rồi một hôm nó báo rằng “Đã có lỗi nghiêm trọng trên trang web của bạn”. Lúc đó mình lại phải kiên nhẫn dò lại để tìm xem là website đang có lỗi gì và sửa lại chúng. Nếu không có kiên nhẫn cùng sự chăm chỉ thì rất dễ nản và bỏ cuộc. Mình cũng hiểu rằng đặc thù công việc lập trình đòi hỏi coder phải kiên nhẫn từ quá trình học tập, bắt đầu làm quen với một ngôn ngữ lập trình mới cho tới suốt thời gian gắn bó với nghề, những khi vì viết sai một tên biến mà phải bỏ ra hàng giờ debug. Nếu không có sự kiên nhẫn thì có thể bỏ cuộc bất cứ lúc nào. Nhưng chỉ cần bạn kiên nhẫn và chăm chỉ, mình tin rằng mọi thứ đều có thể được giải quyết.
Trong cuộc sống cũng vậy, ban đầu khi bạn nghiên cứu các cách để giải quyết một thử thách, hãy cố gắng để bản thân vượt quá giới hạn của bạn ít nhất một chút so với bình thường. Khi bạn cảm thấy kiệt sức và muốn từ bỏ, hãy kiên nhẫn và nghĩ rằng nếu mình cố gắng tiếp tục thì cuối cùng sẽ hiểu ra và tìm được cách giải quyết. Thời điểm mà hầu hết mọi người từ bỏ là thời điểm bạn cần tiếp tục vì đó là cơ hội để bạn có thể tiến bộ. Tất cả mọi thử thách là một món quà để chúng ta có thể phát triển, chỉ cần bạn kiên nhẫn, chăm chỉ và không bỏ cuộc thì mọi thứ có thể được giải quyết.
#3. Thường xuyên lường trước những rủi ro.
Một trong những sai lầm phổ biến nhất mà các Dev thường gặp phải đó là vòng lặp vô hạn (the infinite loop). Đó là một tình huống mà những điều kiện cần thiết để thoát ra khỏi vòng lặp đó không được đáp ứng, vì vậy chương trình vẫn ở trong vòng lặp và không bao giờ kết thúc. Việc này có thể tiêu tốn 100% năng lượng PC CPU và có thể khiến máy tính của bạn bị treo. Bài học mà các lập trình viên mới bắt đầu cần học là bất cứ khi nào bạn tạo một vòng lặp để thực hiện một số loại nhiệm vụ mà có thể tốn khá nhiều năng lượng CPU, thì thay vì dựa vào vòng lặp While về việc xem xét tính toán của bạn có vượt quá một giá trị nhất định hay không, bạn nên nghĩ tới số vòng lặp cơ bản nhất và sau đó thêm một số điều kiện phụ trong đó vòng lặp phải kết thúc nếu vượt quá một số vòng lặp nhất định mà nó sẽ không bao giờ thực sự đạt được nếu mọi thứ vẫn đang hoạt động tốt. Thực ra thì tất cả mọi thứ bạn đã lập trình sẵn rồi, kể cả khi bạn nghĩ nó đã rất hoàn hảo và không thể có lỗi gì được nữa, thì nó vẫn có thể sai và bạn cần lường trước được những rủi ro đó.
Làm thế nào điều này để có thể áp dụng điều này cho cuộc sống? Ngay cả khi bạn nghĩ rằng bạn đã lên kế hoạch hoàn hảo, mọi thứ vẫn sẽ có những rủi ro nhất định. Giống như việc bạn nghĩ mình đã lập trình thật hoàn hảo cho các vòng lặp rồi, nhưng nó có thể có sai sót ở đâu đó và khiến bạn phải tiêu hao rất nhiều năng lượng CPU. Vì vậy nên việc lường trước rủi ro và lập kế hoạch cho tình huống xấu nhất (worst-case scenario) sẽ giúp bạn có hướng đi tốt hơn và không phải đầu hàng trước những rủi ro do sự chủ quan của mình.
#4. Tạo thói quen ghi lại mọi thứ.
Đôi khi các lập trình viên thường bắt tay vào code luôn mà không ghi chép lại bất cứ thứ gì cả. Điều này sẽ tiết kiệm thời gian hơn bởi bạn đã có thể biết được chính xác mình phải làm gì để tạo nên chương trình hay phần mềm này. Việc ghi chép lại logic của những dòng code hay mô tả cách thức và lý do bạn thực hiện từng bước thực sự rất tốn thời gian vào thời điểm đó. Thế nhưng nhiều tháng sau, khi bạn quyết định sử dụng lại đoạn code đó hoặc sửa đổi nó cho mục đích khác, thay vì ngồi nhớ lại xem tại sao hay vì mục đích gì mà mình lại viết ra những dòng code như thế này thì việc bạn ghi chép những dòng code đó từ trước sẽ giúp bạn tiết kiệm thời gian hơn rất nhiều.
Việc chăm chỉ ghi chép lại có thể giúp ích trong mọi lĩnh vực trong cuộc sống, từ việc theo dõi ngày sinh nhật và ngày kỷ niệm, đến việc ghi nhớ các giao dịch hàng ngày và lý do tại sao bạn thực hiện chúng. Cuộc sống có thể có rất nhiều thứ mà bạn phải ghi nhớ. Thực sự nếu chỉ dựa vào trí nhớ của bạn để nhớ tại sao bạn lại tham dự một số cuộc họp nhất định hoặc tại sao bạn lại thực hiện một số giao dịch hàng ngày không thôi thì không hiệu quả. Việc ghi chép thường xuyên sẽ giúp bạn tiết kiệm được thời gian và nâng cao hiệu quả trong công việc hơn.
#5. Sắp xếp mọi thứ theo vị trí nhất định của chúng.
Bất cứ khi nào bạn bắt đầu viết một chương trình nào đó, bước đầu tiên bạn thường làm là luôn luôn tạo ra các biến (variables). Trong lập trình thì có từng loại biến khác nhau. Bạn có chuỗi văn bản, số nguyên, đôi hoặc biến thể để xử lý số lớn hơn, có mảng, cấu trúc, và nhiều hơn nữa. Bạn phải xác định một biến phù hợp với công việc ở thời điểm hiện tại. Ví dụ, nếu đầu ra của một chức năng là tên của một người thì biến chuỗi (string variables) là biến phù hợp. Tất cả mọi biến đều có vị trí và chức năng nhất định của chúng. Nếu muốn đạt được một tính năng hay đầu ra nhất định, bạn cần chọn được biến chính xác và sắp xếp các biến theo vị trí chính xác của chúng.
Điều này cũng giống như bạn phải sắp xếp cuộc sống của mình, cho dù đó là nhà của bạn hay văn phòng của bạn. Bạn chọn kích thước của thùng chứa cho mọi thứ dựa trên số lượng đồ vật mà bạn cần để lưu trữ. Một thùng nhựa nhỏ, dùng để chứa các thực phẩm hàng khô, hoặc một giá đỡ để chứa các loại gia vị nhằm tiết kiệm không gian. Tại văn phòng bạn muốn lưu trữ các tài liệu làm việc hàng ngày trong ngăn kéo hoặc trên bàn làm việc nhưng bạn nên lưu các tài liệu nhạy cảm, kinh doanh vào tủ khóa. Mọi thứ nên được sắp xếp và đặt đúng chỗ của nó.
Bên trên là 5 bài học từ việc áp dụng tư duy lập trình để phục vụ cuộc sống. Câu nói: “Think like a programmer” quả không sai. Nếu có thể tư duy lập trình trong cuộc sống, thì mình nghĩ rằng cuộc sống của bạn sẽ trở nên năng suất và tốt hơn rất nhiều đó. Hãy thử xem nhé!