Good or Bad Engineer ?

Photo by Clark Tibbs on Unsplash

Good or Bad Engineer ?

·

6 min read

Table of contents

No heading

No headings in the article.

Good hay bad ở đây không phải là người tốt hay người xấu =))) bài viết này để chỉ ra những lỗi sai về tư duy trong quá trình mình học tập và làm việc. Cũng là thứ muốn chia sẻ với những người khác, biết đâu nó sẽ giúp được mọi người trong công việc và cuộc sống và có một tư duy học tập tốt hơn.

Từ hồi bé, mình đã là đứa có cái tính tò mò cực kì cao, lớn lên vẫn với cái tính tò mò đó mà mình cũng học được nhiều thứ. Và khi internet đến thì không ngày nào mà mình không vào google cả =))) dần dần việc search google để tìm ra đáp án đúng với tốc độc cực nhanh nó trở thành thói quen.

Đến khi đi làm, mình cũng luôn google để tìm được ra lời giải, đôi khi là với một công nghệ mình chỉ mất vài ba ngày để có thể làm ra được một sản phẩm hoàn chỉnh. Giai đoạn đầu, cảm giác nó như là việc mình có thể làm tất cả mọi thứ ( cứ google là ra hết ) stackoverflow gánh cả phần mềm =)))). Nhưng đến một ngày, công việc của mình hôm đó không phải là phát triển phần mềm Dev ( tạo ra một cái gì đó ) mà thay vào đó là ( làm cho nó chạy nhanh nhất có thể & tốn ít chi phí nhất có thể ) Ops. Mình mới nhận ra tại sao ngày xưa mình phải học cấu trúc dữ liệu và giải thuật, tại sao phải học những thuật toán lằng nhằng khó hiểu mà không biết áp dụng vào đâu. Tại sao lại có những thứ Fundamental ( cơ bản gốc ) có thể học lướt qua cho nhanh để bắt tay vào làm việc nhằm tiết kiệm thời gian mà lại phải tốn 1 tuần trời đọc hiểu và thử đi thử lại rồi không làm được gì.

Để ý các kỹ sư ở Việt Nam và ở nước ngoài, mình nhẩn ra một điều lập trình viên ở Việt Nam học rất nhanh và cũng có nhiều khóa học và các trung tâm cam kết dạy 6 tháng đi ra làm việc luôn. Sẽ là một dấu hỏi lớn giữa những người bỏ ra 5 năm học đại học và những người chỉ học 6 tháng ra làm việc luôn, nhiều khi mình thấy các bạn trái ngành code thậm chí còn nhanh hơn cả những bạn học đại học. Vậy sự khác biệt nằm ở đâu ?


Mình có tham gia vào một số lớp dạy lập trình và cũng đã từng training một số bạn đi làm về lập trình. Có 2 mô hình để mình chỉ các bạn ấy tiếp cận với công nghệ

TOP-DOWN ( hay hiểu nôm na là việc cứ làm đi rồi trong quá trình làm sẽ học được cái gì đó, sai ở đâu google, stack overflow ở đó )

BOTTOM-UP ( đọc document của công nghệ đó một cách từ từ, học hiểu tường tận từng chân tơ kẽ tóc và có khi những cái không cần dùng cũng phải đọc. Rồi làm theo hướng dẫn từng bước và từ từng bước đó làm ra sản phẩm )

Với cách 1 và cũng là cách mình thấy nhiều người dùng nhất, vì nó dễ dàng để nhìn thấy MÌNH LÀM ĐƯỢC GÌBIẾT MÌNH PHẢI LÀM GÌ. Điều tốt đẹp mà cách tiếp cận này mang lại là bạn tạo ra một cái gì đó rất nhanh chóng. Cảm giác thật sung sướng khi tạo ra một phần mềm thực sự bằng chính tay bạn trong thời gian ngắn. Bạn có thể bị nghiện cảm giác đó, và nó có thể giúp bạn có động lực vượt qua quá trình học tập.

Cách này giống việc ném thẳng bạn vào bể bơi chỗ sâu nhất, và buộc bạn phải bơi được ( không thì ngỏm 😀 ) . Vấn đề của cách tiếp cận này đó là nó không dạy bạn những định nghĩa, nguyên tắc cơ bản. VÀ BẠN KHÔNG THẬT SỰ HIỂU CHƯƠNG TRÌNH MÌNH VIẾT ĐANG CHẠY NHƯ NÀO, bạn sẽ có những lúc rơi vào trạng thái vật lộn google, debug trong vô vọng, thậm chí không thể hoàn thành được nó và không chuẩn đoán được vấn đề mắc phải một cách nhanh và chính xác.

Với cách thứ 2

Mục tiêu sẽ là tìm hiểu tất cả các khái niệm cơ bản về lập trình.

Hướng tiếp cận này phổ biến hơn trong các khóa học lập trình chính thức, giống như trong các trường đại học hoặc cao đẳng. Nó bao gồm việc bắt đầu từ con số không và học một khái niệm tại thời điểm đó. Ý tưởng là để xây dựng một nền tảng vững chắc các kỹ năng lập trình chung, mà có thể được sử dụng để làm bất kỳ loại phần mềm nào. Bạn sẽ học những kỹ năng tổng quát ( thứ mà đại học dạy bạn ), không quan trọng bạn làm được gì, khái niệm cơ bản lập trình sẽ giúp bạn làm được mọi thứ

Nhược điểm của cách này là nó chán :)) rất mất thời gian :)) và có khi mất đến hàng tuần, hàng tháng thậm chí hàng năm để hiểu rõ được tường tận. Nó là các cách thiết kế hệ thống, lập trình OOP, các design pattern … và chắc chắn rồi những thứ này không hấp dẫn bằng việc tạo ra được 1 trang web trong 1 ngày 😀

Vậy lựa chọn nào là tốt nhất ?

Câu trả lời là cả 2, để trở thành 1 good engineer ( không phải developer ) sẽ cần cả 2 yếu tố đó. TOP-DOWN sẽ giúp bạn thích nghi tốt với thế giới đang thay đổi chóng mặt ngoài kia. Bạn có thể dễ dàng tiếp cận với blockchain, IoT, AI, Machine Learning thông qua vài dòng search để có thể build ra sản phẩm. Để biết nó là cái gì, nó hoạt động như nào có cái nhìn tổng quan về công nghệ nó để xem mình có hứng thú với nó không ?

Nếu hứng thú, chúc mừng bạn từ giờ bạn đã có động lực để tìm hiểu nó từ những thứ cơ bản nhất theo BOTTOM-UP, hãy học nó một cách nghiêm túc, master 150-200% công nghệ đó để có thể dùng trong mọi trường hợp cần thiết, làm nó chạy nhanhtối ưu chi phí, đề fix những con bug phát một là xong chứ không tốn đến cả tiếng đồng hồ. Giờ đây vai trò engineer của bạn trong công ty sẽ rất phát huy tác dụng.

Mình cũng vẫn đang trong quá trình rèn luyện bản thân trở thành một Good Engineer, hi vọng bài viết này sẽ giúp ích được cho người khác và sau này làm mình mỉm cười khi đọc lại 😀

Solve the problems, not just to code

Did you find this article valuable?

Support NickyIceT by becoming a sponsor. Any amount is appreciated!