Sự thật đắng lòng: Đôi khi cắm đầu ngồi CODE là cách … ngu nhất để giải quyết vấn đề 

Qua bài viết về button trị giá 300 triệu đô, mình thấy các bạn có vẻ hào hứng với những bài viết theo phong cách kể chuyện. Vì vậy, ở bài viết này, mình sẽ bắt đầu bằng cách kể một câu chuyện nho nhỏ về 1 chàng coder nghèo tên K (Gọi là Khoa Khoe Khoang hay Khải gì đó tuỳ bạn).

Tiếp xúc với máy tính từ năm 10 tuổi,  K vô cùng ngạc nhiên trước sức mạnh của cỗ máy vô tri vô giác ấy, và nuôi mơ ước trở thành một lập trình viên. Lên cấp 3, nhờ giỏi Toán, K được vào lớp chuyên Toán của trường. Với niềm đam mê lập trình, K nhanh chóng tiếp cận và thành thạo Pascal, C, giật được vài giải Olympic tin học.

Nhờ điểm cao, K đậu vào một trường đại học công khá danh tiếng. Vào trường, được học thêm Ngôn ngữ lập trình, về Cấu trúc dữ liệu và thuật toán, K càng ngày càng thích code hơn. K code ngày code đêm, cắm đầu vào luyện thuật toán cho thành guru, lúc rảnh rỗi K lại kiếm sách bài tập làm… cho đã thèm. K luôn nộp bài sớm hơn các bạn để thể hiện sự hơn người của mình. Do suốt ngày chỉ biết cắm mặt vào máy tính, K trải qua 4 năm đại học mà vẫn FA…

FSOFT-GST

Tốt nghiệp ra trường, những tưởng một người lập trình tốt, giỏi technical (Như K tự nhận xét mình) sẽ kiếm được việc ngon, lương cao, dễ dàng thăng tiến. Vòng phỏng vấn diễn ra cũng khá suôn sẻ, K trả lời trơn tru một số câu hỏi về technical, nhưng lại ngập ngừng ở 1 số câu hỏi kiểu “Khi có xung đột với thành viên trong nhóm, em xử lý thế nào?” hoặc “Em đã có sản phầm cá nhân nào nổi bật chưa?”.

Đồng nghiệp của K có một thằng tên là H. K rất khinh thằng H này vì nó chỉ tốt nghiệp ĐH dân lập (FPT), đã thế trong giờ làm còn ít ngồi code mà toàn vào stackoverflow, pluralsight, webtretho, lâu lâu còn mở wordpress gõ gõ gì đó, hình như là blog. Thế rồi, vì vài chuyện nhỏ nhặt dưới đây, K dần dần chuyển từ khinh sang ghét và căm thù thằng H :

  • Chuyện thứ nhất: Công ty có một chương trình khá cũ chạy trên một con server cùi bắp. Gần đây, vì lưu lượng sử dụng nhiều, lâu lâu chương trình lại bị OutOfMemoriesException (tràn bộ nhớ). Tự tin với khả năng code của mình, K xin anh team leader source code của chương trình để ngồi optimize lại. Hì hục mất 2 tuần, K chỉ mới optimize được 30% chương trình cho tiết kiệm RAM. Thằng H nghe chuyện, nhanh nhảu đoảng liên hệ với anh team leader và bên IT, lắp thêm 2 thanh RAM 4GB vào con server cũ. Chỉ mất 5 phút, từ đấy chương trình chạy vo vo không còn OutOfMemories nữa.

SONY DSC

  • Chuyện thứ hai: Team cần làm một phần mềm về phim ảnh, trích xuất dữ liệu từ Galaxy Cinema, Lotte, CGV. Với tinh thần hăng hái, ham học hỏi, K tự nghiên cứu về web parser để trích xuất thông tin từ các trang này. Do các trang này có dung Ajax, Paging phức tạp, K mất gần 2 tuần để viết và test việc parse dữ liệu từ Galaxy và Lotte. Công sức của K tiếp tục đổ sông đổ biển khi ngay hôm sau, thằng H nhanh nhảu nói với anh team leader: “Anh ơi, bên 123phim nó có API sẵn rồi, có cả Cinebox với 4,5 hãng nữa cơ. Phí chỉ có 50k/tháng thôi, mình liên hệ mua rồi integrate vào nha anh” và anh team leader gật đầu đồng ý.
  • Chuyện thứ ba: K thương thầm một em QC da trắng dáng cao tên ngực khủng tên M cùng công ty. Ngoài làm QC, em còn chuyên đăng hình khoe thân kiêm bán kem trộn làm trắng da trên facebook. Nghe tiếng K code giỏi, em thủ thỉ “Anh K làm cho em cái trang web bán hàng nha, làm đẹp đẹp em thưởng cho <3". Vốn dại gái, lại tự tin rằng mình giỏi Java thần thánh, K bắt đầu vẽ database, dùng Spring Boot, Heroku để code một trang bán hàng hoành tráng.
  • Hôm sau lên công ty, đang định show giao diện cho em M xem thì K thấy em đang đứng bên cạnh thằng H, mắt long lanh đầy ngưỡng mộ “Anh H giỏi quá, làm web vừa đẹp lại vừa nhanh, em nhờ hôm qua mà giờ đã xong rồi”. Hóa ra thằng ku dùng PHP – thứ ngôn ngữ rẻ tiền, dung framework Magento và chôm đại cái theme có sẵn đâu đó để làm web cho ẻm một cách nhanh chóng. Hết giờ làm, bé M thưởng thằng H bằng cách đi ăn uống, xem phim rùi đi chỗ-mà-ai-cũng-biết-là-chỗ-nào-đấy :”>. Sau hôm đó, K nhìn thằng H bằng ánh mắt mang hình viên đạn.
Bé M (Ảnh minh họa)
Bé M (Ảnh minh họa)
  • Chuyện cuối cùng: Cay cú với thằng H, K quyết định viết một blog cá nhân để cạnh tranh với nó. Thấy thằng ku dùng wordpress cùi bắp, K quyết tự khẳng địng bản thân bằng cách code luôn một blog và publish mã nguồn lên github cho nó biết mặt. Code gần 3 tháng mà vẫn chưa xong, blog thì chưa viết được dòng nào, còn blog kia của thằng H đã được hơn 200 nghìn lượt xem.

Câu chuyện trên là hư cấu và không dựa trên bất cứ phần trăm sự thật nào (Bác nào thấy nhột thì cứ việc). Hãy khoan chửi em M là con bitch ngực to, hay ông team leader ngu chết mẹ không thấy đươc khả năng của K. Rõ ràng, cùng làm một việc, nhưng H lại hoàn thành một cách nhanh chóng và nhẹ nhàng hơn K. Lý do là vì K tiếp cận vấn đề theo cách của một coder, H lại tiếp cận vấn đề theo cách của một developer.

coder

Với coder, code là thứ tối thượng có thể giải quyết mọi vấn đề. Họ thích tự học những ngôn ngữ/công nghệ mới. Họ là những người tập trung công sức để viết những dòng code thật tốt, chạy thật nhanh, optimize thật kĩ. Họ không thích tái sử dụng code của người khác, mà thích tự code để “học hỏi và phát triển”. Thế nhưng, một trong những sự thật đau lòng của ngành lập trình là đôi khi éo ai quan tâm đến code mình viết cả.

Khác với coder, developer thường tiếp cận vấn đề theo cách khác. Họ cũng có thể code và code giỏi, nhưng họ tập trung trước nhất vào vấn đề cách giải quyết. Khi có yêu cầu từ khách hàng, họ sẽ phân tích, tìm cách giải quyết phù hợp nhất, ít tốn thời gian và công sức nhất, trước khi bắt tay vào code.

defensive-apex-programming-2-638

Như slogan “từ coder đến developer” của blog, mình viết để chia sẻ những kiến thức về technical và một vài thứ khác để giúp bạn tiến hóa từ coder lên developer. Giỏi technical sẽ giúp bạn làm một coder giỏi, nhưng chỉ technical không thôi là chưa đủ. Bạn cần phải nhét vào đầu tư duy lập trình, tư duy sản phẩm, tư duy phân tích thiết kếvô số thứ khác để trở thành một developer đúng nghĩa. Để học được những điều này, hãy like fanpage và theo dõi những bài viết tiếp theo của blog nhé. Thân chào.

30s quảng cáo

book.jpg

Đây là một bài viết được trích dẫn từ cuốn sách “Code dạo kí sự – Lập trình viên đâu phải chỉ biết code” do mình viết. Quyển sách bao gồm những kĩ năng từ mềm đến cứng mà mỗi developer phải có, đảm bảo sẽ rất có ích cho các bạn sinh viên hoặc lập trình viên đã đi làm. Các bạn xem thông tin và đặt mua sách tại đây nhé: Sách Code Dạo Ký Sự

——————————————————————————–
Chuyện bên lề, có 1 bạn khá dễ thương phỏng tác câu chuyện của mình theo 1 cách nhìn khác, cũng rất đáng đọc. Chắc cũng đồng cảm với bạn K nên trong truyện này bạn cho K 1 cái happy ending rất đẹp 😀

Câu chuyện hôm nay kể về một chàng coder H. Cậu đến với tin học hơi muộn, và khi nhận ra mình đam mê tin học thì đã muộn cho việc chuẩn bị thi vào các trường đại học danh tiếng về CNTT. H không giàu, nhưng cũng đủ khá giả để theo đuổi đam mê với đại học FPT.

Vào trường, cậu nhận thấy các trường đại học có vẻ danh tiếng kia dạy thật thiếu bài bản, toàn dạy những thứ lý thuyết, rất thiếu kỹ năng mềm, hay những thứ ứng dụng. Cậu học vừa đủ những môn CTDL, và tập trung hơn vào những môn “thực tế”, tự học lập trình ứng dụng và tham gia các hoạt động ngoại khóa.

Tốt nghiệp ra trường, nhờ vốn kỹ năng mềm cùng khả năng lập trình ứng dụng, cậu được nhận vào công ty. Nhưng khi phỏng vấn, cậu lại bị ngắc ngứ những câu cơ bản về cấu trúc dữ liệu, về nguyên lý lập trình.

Đồng nghiệp của H có một thằng tên K. H rất ghét thắng này vì nó tốt nghiệp đại học “danh tiếng”, lại còn khoe mấy cái giải thưởng tin học toàn mớ lý thuyết vô nghĩa. Hai đứa ngồi gần nhau, cậu lâu lâu ngó sang nó thấy nó cứ cắm cúi viết code, chả quan tâm gì đến thế sự cả. Còn cậu vừa phân bố thời gian để hoàn thành deadline, vẫn có thời gian để lên webtretho, viết blog, lâu lâu gặp bug thì chỉ cần lên stackoverflow là xong. Cậu không thích thằng K và sẽ cố gắng chứng tỏ mình hơn K. Và cậu đã làm được như vậy.

Chuyện thứ nhất – thứ hai – thứ ba – tương tự bài gốc

H rất hài lòng với những gì mình làm được. Còn K vẫn cứ ngồi đó cố gắng viết code hoàn chỉnh cho cái website bán hàng và blog, thật là rỗi việc.

  • Đến một ngày, cái phần mềm cũ rích chạy trên server cùi bắp lại dở chứng. Trưởng nhóm nhận thấy vấn đề diễn ra ngày càng thường xuyên hơn trước, tỉ lệ thuận với lượng dữ liệu đổ vào chương trình càng nhiều theo thời gian, và module gây ra chuyện đó còn được sử dụng ở nhiều chương trình khác nữa. Chẳng lẽ lại phải mua hẳn server mới và một loạt server khác nữa phòng tránh chuyện này? K nhanh nhảu chạy vào và xin tiếp tục dự án **tối ưu hóa code ** đã bị dừng lại trước đó. Trưởng nhóm đồng ý, và dù rất khó khăn nhưng 2 tuần sau K cũng đã hoàn thành. Và tất cả các chương trình sử dụng chung module đó đều chạy nhanh và ổn định hơn trước. K được anh trưởng nhóm hết sức khen ngợi và hứa hẹn sẽ tăng lương vào đợt tiếp theo.
  • 123phim đột ngột dừng hoạt động do kinh doanh thua lỗ. Các api chỉ còn truy cập được trong vòng 1 tháng. May mắn thay, nhờ có **crawler ** trước đây của K, nhóm đã nhanh chóng thay đổi và tích hợp trở lại vào phần mềm.
  • Em QC lắm chuyện đòi H thêm chức năng cho bán hàng, lần này là tích hợp với giaohangnhanh để ẻm đỡ mất công tìm người giao hàng, nhập đơn hàng bằng tay. Chết thật, H lâu lắm có đụng đến Magento đâu cơ chứ, lại chả có module nào trên mạng, mà cái theme cũng là hàng mua biết customize sao bây giờ. QC giận H và chạy sang nhờ K. K (dù rất ghét con nhỏ này) vui vẻ nhận lời vì K nắm rất rõ code của mình và việc chỉnh sửa không quá tốn thời gian lắm. Từ đó con nhỏ QC này suốt ngày bám lấy K mà quên H.

H tức giận vì K càng ngày càng được nhóm đề cao và cả em QC cũng đổ theo hắn nữa. Giờ H chỉ còn một blog. Chậc, 200k lượt xem, tên K kia đến bao giờ mời đạt được. Hắn chỉ có lèo tèo vài bài viết chán ngòm về kỹ thuật. Đến một hôm, K xin phép nghỉ việc. H mừng lắm, cuối cùng cái gai trong mắt cũng chịu đi.

Lại nói về K. Cái blog mà K chăm chút, viết blog dù ít nhưng chất lượng may mắn được một nhà tuyền dụng để mắt tới. Và công ty của nhà tuyển dụng này thuộc hàng top thế giới. K nhận được thư mời, dù rất đắn đo và lo lắng nhưng cậu quyết định thử sức. Bất ngờ thay, công ty nọ chỉ toàn hỏi những câu hỏi liên quan đến giải thuật, tư duy mà không hỏi bao nhiêu về công nghệ cả, và họ nói rằng họ rất ấn tượng với những giải thưởng tin học K đạt được. Tự tin với kiến thức nền tảng của mình, K trả lời xuất sắc hầu hết câu hỏi của nhà tuyển dụng. K nhanh chóng được đề nghị vào làm với một mức lương và môi trường làm việc mà mọi dev đều mơ ước.

30 thoughts on “Sự thật đắng lòng: Đôi khi cắm đầu ngồi CODE là cách … ngu nhất để giải quyết vấn đề ”

  1. sự thật phũ phàng đối với coder nhất là những bạn mới ra trường : éo ai quan tâm code mình viết @@

    Like

  2. Chẳng qua là K chưa chọn đúng mảnh đất của mình thôi. Tuy nhiên, làm việc gì thì cũng cần phải nghĩ trước khi làm nhưng cũng không nên quá ăn xổi ở thì.
    Với các câu chuyện mình có 1 cách nhìn khá:
    1. Không phải cứ thiếu RAM là cứ cắm vào, thế CPU quá tải có cắm thêm được không?
    2. Không phải trên đời có tất cả các API mà bạn cần.
    3. Có được 1 website tốt sẽ có đại gia nào đó trả tiền cho bạn. Có tiền rồi thì sẽ có nhiều em M.
    4. Biết đâu source code blog của bạn được nhiều người biết đến -> bạn sẽ kiếm được những cơ hội tốt trong nghề nghiệp và quảng bá hình ảnh bản thân thì sao?

    Like

    1. Điều tác giả muốn nói là sự nhanh nhạy trong giải quyết vấn đề, còn cách giải thích của bạn đang là lươn lẹo để chống chế với điều đó.
      1. Nếu bạn đang cung cấp dịch vụ cho hàng chục ngàn người dùng, server bạn chết vì hết ram, bạn sẽ làm gì, off service để ngồi đợi optimize code?
      2. Trên đời không có tất cả những thứ bạn cần nhưng có hầu hết những thứ bạn cần, có một câu thành ngữ rất hay, đừng cố chế tạo lại bánh xe, ý nghĩa như thế nào chắc google là ra à.
      3. Sự thật đắng lòng hiện giờ là thanh niên thường ảo tưởng về sức mạnh đồng tiền.
      4. Một sự ảo tưởng khác, lại quay về câu chuyện cái bánh xe, và trên hết, đừng làm việc khi trong đầu chỉ toàn biết đâu hay có thể.

      Thân,

      Liked by 3 people

      1. chuẩn bị đi YEP rồi phải đăng nhập like cho phát!

        Comment cũng giống ý của mềnh…. Thanks Hoàng :v

        Muốn đối phó với 1 vấn đề, chúng ta có nhiều cách tiếp cận, giải quyết của mỗi người khác nhau… Nhưng làm sao để có thể giải quyết vấn đề một cách trơn tru, nhanh nhạy thì cần phải có tư duy, chứ ko phải cứ chày cối luồn lách qua mọi ngóc ngách để tìm một cách hoàn hảo nhất. Nói chi cho xa, việc làm Team Lead cũng vậy, sau khi đi code dạo vài chục năm bạn lên được team lead => ít tiếp xúc vối technical nữa => kinh nghiệm code dần phai nhạt theo năm tháng, nhưng bù lại bạn có được khả năng quản lí, khả năng nắm bắt tình hình vấn đề và đưa ra solutions tốt nhất. Đó cũng chính là lí do tại sao team lead thường quán xuyến tất cả mọi việc cho cả team thay vì phụ team code vài chức năng khác 🙂

        Suy nghĩ riêng của mình, Thân!

        Like

      2. 🙂 Anh ấy đưa ra 2 quan điểm, 2 cách nhìn nhận vấn đề thôi mà các bác.
        P/s: hỏi thêm 1 câu: “Tại sao thằng K không giải thích với trưởng nhóm để họ lựa chọn giải pháp của nó?”

        Like

      3. Vì nó chỉ biết cắm đầu vào code.
        Do vậy tựa để bài viết mới là”đôi khi cắm đầu vào code là cách ngu nhất để giải quyết vấn đề” =))

        Liked by 3 people

    2. Đúng là đây không phải là mảnh đất màu mỡ cho coder như K.
      Với khả năng technical guru của mình, K. có thể làm việc trong tập đoàn lớn, tạo ra những framework tối ưu cho người khác sử dụng, hoặc viết ra những phần mềm đòi hỏi xử lý hơn đồ họa, hoặc nghiên cứu chuyên sâu về giải thuật.
      Rất tiếc VN chưa có nhưng công ty theo hướng R&D như vậy, đa phần vẫn là sử dụng cái có sẵn để xây dựng nên sản phẩm giao cho khách hàng. Do vậy người có cái tôi lớn như K., quyết tự xây dù người khác đã xây, khó tìm được chỗ đứng.
      Chém gió tí :3

      Like

      1. Thứ nhất bạn nên xem lại khái niệm về guru https://en.wikipedia.org/wiki/Guru, thứ hai bất cứ công ty nào trong nghành software đều cần R&D, không có R&D để improve sản phẩm thì cty dẹp tiệm từ lâu rồi. Quan điểm cá nhân là không nên phán, chém gió phải có căn cứ người đời mới nể sợ :v

        Liked by 2 people

      2. cậu k hiểu rồi thật sự tác giả muốn nhắc cho chúng ta pik là k phải chỉ cần code giỏi là được mà ta còn phải có cái đầu rỗng để nhìn các góc độ sự việc từ đó sự việc sẽ được giải quyết đơn giản hơn 🙂

        Like

  3. Bài viết hư cấu quá mức, làm shop PHP cho em gái mà lại đi chọn Magento thì em nó chết tiền mua server để bán kem trộm =)) Những ông đang làm chủ dự án Magento lại là người có triết lý kiểu của thằng K: coi trọng kiến trúc hơn bề mặt. Câu này quá là xạo chó nếu thật sự đã xài Magento: “…làm web vừa đẹp lại vừa nhanh…”

    Liked by 1 person

  4. vài hôm bác mới “dặn” ra một bài, nhưng đều là những bài đáng đọc và cmt 🙂
    em thấy nếu thằng H làm leader của thằng K (giả sử chưa có thù hằn) thì happy ending. em giả sử vì trong thực tế có nhiều thằng như H và K, mà chúng nó thì không gét nhau. 😡

    Like

  5. Mặc dù hiểu ý tác giả muốn truyền đạt là có nhiều cách hay hơn là chỉ biết cắm đầu vào code nhưng mình nghĩ ngoài đời những thằng như K nghĩ ra được hầu hết những việc H có thể nghĩ ra, mong tác giả sẽ viết nhiều bài theo phong cách này.

    Like

  6. Tôi có code được 1 năm nhiều lúc cắm đầu cắm cổ code mà cũng chưa giải quyết vấn đề mà còn lỗi tè le, ngẫm nghĩ lại làm việc gì cũng vậy phải dùng đầu óc suy nghĩ, code cũng vậy chậm rãi chính xác đỡ phải tìm bug

    Like

Leave a comment