Lập trình viên cần một “tư duy hacker”
Lập trình là một nghề hạnh phúc vì lập trình viên có khả năng và điều kiện để tạo ra những sản phẩm công nghệ làm thay đổi lớn cuộc sống của con người. Lập trình cũng giúp con người thay đổi tư duy của chính bản thân mình.
Mình sẽ bắt đầu câu chuyện về lập trình ngày hôm nay thông qua một mẩu chuyện nhỏ.
Lập trình viên muốn thành công thì cần phải có một tư duy hacker.
Bảo Vệ và Công Nhân
Có một lập trình viên, tạm gọi là X, sinh ra và lớn lên trong những năm cuối của thế kỷ trước. Tuổi thơ của X gắn liền với những bộ phim như Ma Trận, Mắt Vàng (Điệp Viên 007), Thiên Thần Bóng Tối hay Tường Lửa… và bị ấn tượng bởi những pha tấn công tài tình của các hacker. Những kẻ mắt cận lòi, tay quay quay chiếc bút, gõ phím tanh tách xâm nhập vào hệ thống máy tính của chính phủ một cách dễ dàng, đánh cắp thông tin tối mật, và khi bị phát hiện thì biến mất như nhà ảo thuật gia, để lại sự ngỡ ngàng cho những nhà bảo mật. X rất mê phim Thiên Thần Bóng Tối với nhân vật Logan, người ngồi một mình trên chiếc xe lăn điều khiển cho thiên thần trốn thoát. Dáng vẻ của những tên hacker như thế từ từ ăn vào tiềm thức đến nỗi X từng ước ao trở thành một hacker tầm cỡ như vậy, trợ giúp cho một thiếu nữ xinh xắn nào đó trốn thoát và rút lui trong im lặng bằng một cú ấn phím.
X trở nên có hứng thú với bảo mật, say mê đọc các cuốn sách dạy về bảo mật. Nào là hacking, reversing, nào là database, SQL injection, nào là web application. Cái gì cũng động vào và cái gì cũng biết nửa chừng. Thế nhưng càng học X càng thấy mù mờ, càng học mà càng thấy sao mà nó xa vời thế. Mỗi lĩnh vực kể trên đều phải tốn hàng năm trời để thành thạo. Vậy thì đến lúc có thể gõ bàn phím tanh tách như trong phim, chắc X đã trở thành ông cụ đầu bạc, mắt đeo kính lão. Ước mơ trở thành hacker khét tiếng đổ rụp cùng với những năm tháng của những trò hacking vô bổ.
Ngày lớn lên, đi học đại học rồi đi làm, X nhận ra rằng IT không chỉ có hacking, không chỉ học phá và học cách để bảo vệ cái mà người ta đã xây dựng. IT là một ngành “xây dựng”. Người giỏi là người xây dựng được những hệ thống thông minh và tinh vi. Cơ sở dữ liệu có thể dùng để quản lý thông tin nhân viên, kho bãi…, nhưng có sở dữ liệu cũng có thể dùng để quản lý tình cảm, sắc thái của âm nhạc, phim ảnh, rồi tìm kiếm những bài hát hay đoạn phim có cùng sắc thái tình cảm đó. Càng tìm hiểu X càng cảm thấy thú vị, mong muốn xây dựng những hệ thống như thế nổi lên. Giấc mơ hacker ngày nào trở thành giấc mơ worker.
Peter Norvig đã từng nói rất đúng, hay và sâu sắc trong bài viết của ông: “10 năm để học lập trình”. X lao vào học và học, học để vá những chỗ khuyết về kiến thức, từ ngôn ngữ, cơ sở dữ liệu, thuật toán… Cậu chợt nhận ra con đường để trở thành hacker huyền thoại ngày nào lại sáng tỏ như ban ngày. Đó là một con đường dài, đầy chông gai của một worker. Để trở thành một hacker thì bản thân phải hiểu rõ mọi ngóc ngách như chính worker đã xây dựng nên cả hệ thống đó. Tuy vậy, đến lúc này ước mơ của X đã không còn như xưa nữa, cậu ao ước mình trở thành chuyên gia thiết kế hệ thống, tạo ra những ý tưởng sáng tạo làm thay đổi cuộc sống của con người…
Câu chuyện kết thúc ở đây. Lúc mới đọc xong mình có suy nghĩ rằng lập trình quả là một lĩnh vực rộng lớn, và lập trình viên quả thực là những người có những khả năng phi thường. Nhưng điều ấn tượng nhất không phải là ở đó.
X từ một cậu bé đam mê hacking, sau khi đánh mất ước mơ tuổi thơ ấu thì đã thay đổi chính mình để trở thành một chuyên gia thiết kế hệ thống đầu ngành. Điều gì có thể làm X thay đổi để đạt được thành công như thế? Mình nghĩ đó là tư duy hacker.
Tư duy hacker là gì? Là sự không ngừng suy nghĩ để tìm ra cốt lõi của vấn đề đang phải đối mặt, và sự “nghe ngóng và nhìn ngó” thế giới xung quanh cùng những biến đổi không ngừng của nó. Tư duy hacker còn được phát huy khi con người có thể thay đổi và tiến hoá chính tư duy của mình.
Lập trình bằng Google
Hãy để mình kể các bạn nghe thêm một câu chuyện nữa, câu chuyện về lập trình viên Y.
Y là một lập trình viên mới ra trường, cậu cũng như bao sinh viên tốt nghiệp “bình thường” khác, bỡ ngỡ và lạ lẫm với môi trường phát triển như vũ bão của ngành công nghiệp IT. Những kiến thức học được ở trường chỉ giúp ích được chút ít cho việc hiểu lơ mơ về những gì các bậc tiền bối đang làm. Công việc hàng ngày của Y là một chuỗi “lập trình bằng Google” như dưới đây.
1
2
3
4
5
6
7
8
9
10
11
| while (còn vấn đề kỹ thuật cần giải quyết) { while (chưa biết cách giải quyết) { Google # Google trả lời bằng rất nhiều lời giải... foreach(kết quả) { Thử từng kết quả if (kết quả dùng được) { return ; } } } } |
Một năm trôi qua, Y tự hỏi chuỗi ngày lập trình bằng Google của cậu bao giờ sẽ kết thúc. Cậu cảm thấy không thể tiếp tục mãi với cách làm việc hiện tại của bản thân mình. Y ngồi xuống và viết lại đoạn mã giả trên ra giấy, suy nghĩ xem có thể làm gì để cải thiện đoạn mã giả tư duy của chính mình.
“Google” là một hành động sẽ lặp đi lặp lại, vậy có thể “cache” lại kết quả tìm kiếm vào một kho lưu trữ để sử dụng cho những lần tìm kiếm tiếp theo! Y nghĩ vậy và hí hoáy viết:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| while (còn vấn đề kỹ thuật cần giải quyết) { while (chưa biết cách giải quyết) { Tìm kiếm trong kho lưu trữ if (kết quả đã có sẵn){ return ; } Google # Google trả lời bằng rất nhiều lời giải... foreach(kết quả) { Thử từng kết quả if (kết quả dùng được) { Lưu vào kho lưu trữ return ; } } } } |
Lưu vào cache hay kho lưu trữ sẽ là… viết vào vở, gõ vào một file text đơn giản ở trên đĩa cứng cá nhân. Y nhận ra hơn một năm qua cậu đã lãng phí thời gian vô ích, tuy nhiên thay đổi kể từ bây giờ vẫn chưa muộn! Qua một tầng cache, công sức và thời gian bỏ ra cho tìm kiếm của Y đã giảm đi rõ rệt, lời giải cho các vấn đề hóc búa chỉ cần tìm một lần và áp dụng mãi mãi về sau.
Thời gian trôi qua, Y bây giờ không chỉ note lại lời giải của cậu trong vở hay file text nữa, cậu tìm hiểu và sáng tạo ra những sản phẩm theo ý thích của mình rồi up lên một tài khoản Github. Y cũng viết một blog công nghệ, chia sẻ lại những lời giải cậu học được trong quá trình đi làm, tham gia meetup công nghệ trong thành phố và tích cực đăng ký làm diễn giả. Trình độ dần tăng lên, Y nhận được sự tôn trọng của đồng nghiệp cùng với những lời mời và các cơ hội mới…
Câu chuyện về Y giống với câu chuyện về X ở chỗ, Y cũng có khả năng thay đổi phương pháp tư duy của bản thân, trở nên thích ứng và phát triển bằng năng lực tư duy đã thay đổi đó. Tuy vậy câu chuyện này còn đem lại một bài học ý nghĩa hơn mà mình muốn nói trong phần tiếp theo, bài học về Viết và Chia Sẻ.
Viết và Chia Sẻ
Mình nghĩ Viết và Chia Sẻ là một phần không thể thiếu của “tư duy hacker”. Y đã bắt đầu thay đổi khi viết lại những lời giải cho quá trình tìm kiếm của bản thân. Nó là bước đi nhỏ đầu tiên cho sự nghiệp lớn sau này của cậu. Sau này khi đã trờ thành một lập trình viên danh tiếng, hẳn Y sẽ không thể nghĩ được nếu thiếu bước đầu tiên đó thì cậu sẽ đang ngồi cặm cụi “gõ và search” ở chốn nào
Viết là để tổng hợp và giải thích cho bản thân, nhưng Chia Sẻ lại giúp nhận lại góp ý từ những người giỏi hơn mình. Chia sẻ bước đầu chỉ là truyền đạt cho bạn bè, đồng nghiệp về cái mình đã viết, trả lời các câu hỏi trên những Facebook group hay diễn đàn. Tuy nhiên cái chia sẻ cần thiết hơn là: lập một tài khoản Github, làm side project cá nhân, viết bài trên Kipalog hay tham giaMeetup và phát biểu trước đám đông.
Lời kết
Không thể không nói rằng, lý do đầu tiên để lập trình viên X và lập trình viên Y thành công là bởi họ có đam mê với nghề lập trình. Tuy nhiên chừng đó chưa bao giờ là đủ. Với một “tư duy hacker” và ý chí quyết tâm thay đổi bản thân, họ mới có thể bước ra khỏi lối mòn trong hiện thực và trong tâm lý của chính mình.
Nếu bạn không bằng lòng với thực tại của mình thì đừng chờ đợi, đừng cả nghĩ, hãy áp dụng “tư duy hacker”, mở rộng góc nhìn ra và thay đổi bản thân ngay từ bây giờ. Chỉ cần dám bước đi bước đầu tiên, bạn sẽ có thể tiến thêm rất nhiều những bước dài nữa trên con đường theo đuổi đam mê của mình.
Nguồn: http://vinacode.net/
Comments
Post a Comment