17/12/2016 là ngày đầu tiên tôi bước vào DEHA với vị trí thực tập. Cảm xúc của thằng sinh viên năm cuối đi học nghề lúc đó thật khó tả. hào hứng có, lo lắng có và trong suy nghĩ non nớt lúc đó thì một viễn cảnh đầy màu hồng đang được vẽ ra trong đâu thằng bé. Tưởng rằng mình sẽ được học code , được làm dự án hoặc là làm quen học hỏi với các framework. Nhưng không cuộc đời không như là mơ.
Sáng hôm đó Anh Béo (lúc đấy tôi chưa nhớ tên :D) giới thiệu tôi với mọi người là nhân viên mới đến thực tập .sau khi tôi chào hỏi ra mắt mọi người trong công ty xong đang định kiếm một chỗ nào ngồi . thì anh Béo gọi tôi lại và bảo ngội cạnh anh. Anh bắt đầu hỏi tôi. “Em biết sử dụng ubuntu chứ ? Công ty mình không làm việc với Windows em ạ”. Cảm xúc lúc đó của tôi cũng hơi hụt hẫng vì nói thật ra mình không biết sử dụng ubuntu :((. Tôi cũng thật thà trả lời anh “Em chưa biết dùng anh ạ”. Anh cũng rất nhẹ nhàng bảo lại tôi là “Em cài Ubuntu đi rồi anh em mình tính tiếp!”. Thế là môn đầu tiên tôi được học là “cài đặt Ubuntu :D”.
Loay hoay cả buổi sáng cuối cùng cũng cài xong Ubuntu. Đầu giờ chiều tôi rất hào hứng nói với Anh. Em cài xong rồi anh ạ, có cài thêm IDE gì để code không anh. em cài luôn :))). Anh nở nụ cười trìu mến :))) và ôn tồn bảo vói tôi răng “em biết shell script chứ ?”. Tôi ngớ người hỏi lại Anh “ngôn ngữ mới hả anh :)))))” . lúc này tôi thấy anh cười tươi lắm :)))) anh bảo tôi rằng “Bây giờ anh sẽ gửi cho em 1 link về shell script để em đọc. sau đấy em sẽ biết đó là cái gì”. thằng bé rất hào hứng đợi link học và vẫn nghĩ đó là ngôn ngư lập trình mới :))) . sau khi nhận được link tôi đọc một thôi một hồi mới vỡ lẽ ra là học câu lệnh ubuntu :(( . vậy là môn thứ 2 học là shell script. sau 2 ngày trật vật học lý thuyết ,thực hành và 2-3 lần đối mặt trao đổi với Anh, Cuối cùng tôi cũng qua đươc shell script.
Tưởng rằng học xong cái này sẽ được code Anh lại hỏi tôi “Em biết GIT chứ ?”. Tôi ngớ người lần 2 và tôi vẫn trả lời anh bằng một câu hỏi :))) “GIT là gì hả anh? ”. Anh vẫn cười trìu mến :)))). Và trả lời lại tôi là “Em tìm hiểu Google hoặc hỏi mọi người trong công ty nhé. sau đấy anh em mình sẽ trao đổi . Đừng hỏi Anh. Anh không biết gì đâu” :)))). Lúc này thì sock toàn tập. Thôi thì tự thân phải vận động thôi vậy. thế là tôi phải lân la làm quen với mọi người để giải quyết những vấn đề mà mình ghặp phải . Sau 4 ngày cảm thấy kiến thức mình đã có khá đủ thì tôi nói với anh Béo là “Em trao đổi với anh về GIT được không ạ. em cảm thấy đủ tự tin rồi anh ạ”. Anh gật đầu đồng ý ngay.câu đầu tiên anh hỏi tôi là “Cái GIT là cái gì ?”. vì cũng đã chuẩn bị từ trước nên tôi trả lời được ngay . Tiếp theo là những câu hỏi như “tại sao phải sử dụng đến nó” , “giữa SVN và GIT khác nhau ở điểm nào?”. Sau khi pass qua những câu hỏi lý thuyết thì anh có bảo tôi làm một cái demo nhỏ thật may mắn mọi câu hỏi tôi đã lường trước được nên tôi thể hiện khá trôi chảy :))) và cuối cũng đã pass qua GIT.
Cái tiếp theo mà tôi phải học làm tôi thấy thú vị nhất, thực dụng nhất nhưng mà cũng ức chế nhất đó là Vagrant. Tôi đã phải mất gần 2 tuần tìm hiểu và cũng phải bái sư học đạo một số anh trong công ty để vật lộn với nó. Cái ức chế ở môn này đó là sửa 1 dòng lệnh cũng phải build lại cả môi trường. Mỗi lần như vậy cũng phải đợi từ 20p đến nửa tiếng đồng hồ để đợi. Có những hôm đến công ty mà không cải thiện được gì. Trong khoảng thời gian này thực sự có những lúc tôi cảm thấy chán nản nhưng có một người Anh (anh này ngồi cạnh tôi tạm gọi là Anh A :D) động viên giúp đỡ tôi vượt qua những khó khắn về kỹ thuật cũng như chỉ dạy cho tôi cách giải quyết vấn đề một cách khoa học và hợp lý nếu không có Anh thì tôi chắc cũng không thể pass được những hạng mục như là Vagrant. Tôi cảm thấy thật biết ơn Anh. Sau 2 tuần luyện công thì tôi cũng đã sang trao đổi về mặt lý thuyết và vẫn những câu hỏi từ trước như “Vagrant dùng để làm gì ? ” “Tại sao phải dùng đến vagrant ?” “Ưu nhược điểm của Vagrant là gì” và cuối cùng là show sản phẩm cho Anh Béo. Anh Béo xem xong chỉ nói với tôi “Ok ! Good Job”. Và lại tiếp tục với một thứ vô cùng mới mẻ mà tôi chả bao giờ được biết đến. đến ngay cả khi tôi đi học thì các thầy cũng chẳng bao giờ giới thiệu qua nữa. Nghe anh Béo quảng cáo cái này đang là công nghệ ‘hot’ ở Việt Nam. Đó là Docker. Nó cũng phục vụ vào việc dựng môi trường phát triển. Nhưng nó khắc phục những yếu điểm mà những người dùng Vagrant đang gặp phải như nhẹ hơn. Build môi trường nhanh hơn tuy nhiên việc config và xây dựng những file Dockerfile và docker-composer vô cùng khó hiểu tôi cũng đã phải mất hơn 1 tuần để tìm hiểu và xây dựng 1 môi trường theo yêu cầu của anh Béo và chuẩn bị những câu hỏi lý thuyết để sang trao đổi. Lần này thì khác Anh Béo không hỏi những câu như trước :)))) anh hỏi tôi một số câu hỏi mới như “Vagrant và Docker khác nhau điểm nào ?” “Vì sao không dùng Vagrant mà lại dùng Docker” tôi cũng đã đưa ra những câu trả lời nhưng có vẻ chưa thuyết phúc Anh lắm. Anh vẫn tiếp tục hỏi “Tại sao em cho như vậy là đúng ?”(Hình như anh toàn áp dụng 5 WHYS :D). và tôi đã trả lời sai 3/5 câu anh hỏi vậy là phải học lại :(((. Sau khi khắc phục được những lỗ hổng kiến thức của mình tôi đã xin trao đổi lại với anh và pass qua :D.
Tiếp sau đó tôi được học cách refactoring code để nhận biết mã nguồn bẩn cũng như các phương pháp refactoring code để tinh gọn mã nguồn. Phần này Anh Béo chỉ hỏi lý thuyết là nhiều chứ không có bài thực hành (may quá :D). Ban đầu tôi chỉ học những kỹ thuật refactoring code và xin trao đổi với Anh Béo. Nhưng không ngờ anh lại hỏi về cách nhận biết :)))) thế die ngay từ hỏi đầu tiên :))) để tránh bị ăn chửi :))) tôi đã xin về học lại ngay :)))) và rút kinh nghiệm từ bây giờ học xong mục nào sẽ nhờ Anh A hỏi trước. Pass qua Anh A thì mới sang bên trao đổi với Anh Béo =))). Sau 1 ngày dùi mài kinh sử thì thằng bé khá tự tin. sang bên Anh Béo xin trao đổi :))) thật may mắn khi Anh Béo toàn hỏi những câu mà anh A hỏi tôi lúc trước :)))). Sau đó thì anh Béo bảo tôi là “Ok! bây giờ code được rồi ”.
Lúc đấy tôi sướng lắm tại vì tính ra đến thời điểm đó cũng là khoảng 1 tháng rưỡi tôi đi làm ở công ty rồi. Khi anh nói “bây giờ code được rồi” tôi mới hỏi lại anh là “code được rồi hả anh!”, anh gật đầu rồi bảo “em vào cyber-dojo.com làm cái FizzBuzz nhé” rồi anh giới thiệu với tôi về TDD và Vmodel, Cũng như dặn tôi tìm hiểu về TDD. TDD là gì? Đó là lập trình hướng kiểm thử, test trước code sau. Chúng ta sẽ tạo ra các trường hợp để false và code để pass qua trường hợp đó. ưu điểm của kỹ thuật này là sẽ kiểm soát được bug. Nhưng đổi lại thì sẽ tốn thời gian hơn những kỹ thuật lập trình bình thường, Sau hơn 1 tuần tìm hiểu về TDD và nhờ sự support của Anh A thì tôi cũng đã hiểu và pass qua TDD. tôi sang trao đổi với anh về TDD anh nói với tôi “Em về viết cho anh một cái tutorial về TDD rồi gửi vào mail cho anh”. Nói đến đây mới nhớ :)))) viết một cái mail báo cáo tiến độ khá cầu kì, tỉ mỉ, chi tiết và chính xác :)))) và một bài học tôi được học thêm nữa là cách viết mail báo cáo cho cấp trên. Thực sự mục này toát mồ hôi, viết gì không phải là ăn chửi như chơi :))))). Sau khi hoàn thành cái tutorial anh Béo giao xong thì anh gật đầu đồng ý cho tôi pass qua.
Tiếp sau đó anh ra tủ sách đưa tôi 1 cuốn sách “Scrum cho người mới bắt đầu”. Đó là Agile và tôi phải học Agile. Học quy trình phát triển phần mềm linh hoạt và đó là quãng thời gian chán nản và buồn ngủ ập đến. Tôi đọc 10 trang sách mắt tôi bắt đầu díu. Đọc thêm 10 trang nữa tôi mắt tôi sụp hoàn toàn. Nhưng rồi cũng qua sau khi tôi đọc đi đọc lại 5 lần cuốn đó thì đã hiểu được Agile và Scrum. Ở mục này khi trao đổi tôi đã false 3 lần :)))). Những câu hỏi của anh cần sự chính xác rất cao như “Agile là gì ?” “Tuyên Ngôn Agile là gì ?” đòi hỏi người trả lời cần có câu trả lời vừa phải đúng vừa phải chính xác. Sau 3 lần trao đổi false thì lần thứ 4 tôi cũng đã pass, Anh bảo với tôi là mai anh sẽ giao cho em 1 Task. Trong lòng như mở hội thế là được join dự án rồi, được code rồi, không phải học nữa rồi. Tôi mới hỏi lại anh Béo anh ơi Task làm C# hay Java thế hả Anh. Anh béo ngạc nhiên hỏi lại tôi “ơ thế anh tưởng em làm được PHP :))))“. Tôi cố gắng vớt vát. hay anh cho em làm C# cùng anh A nhé. Anh A ngồi cạnh em thì em làm C# anh ý support em luôn. Anh Béo nhẹ nhàng an ủi tôi “tối nay em về học qua về PHP basic đi nhé, sáng mai anh sẽ trao đổi với em!”. Vậy là vỡ mộng các ông ạ :(((. Tối về đọc qua mấy câu lệnh của PHP, thực ra đọc xong đi ngủ sáng hôm sau dậy quên hết :)))). Đến công ty bảo với anh Béo “Em học rồi anh ơi! bây giờ làm gì hả anh”. Anh Béo ra yêu cầu 1 hệ thống đơn giản thôi chỉ có thêm, sửa, xóa, hiển thị dữ liệu. Đọc đề bài đến đấy tưởng dễ ăn nào ngờ đâu anh Béo nói “Lưu ý làm theo Design Parttern em nhé, code 1 hàm nhỏ hơn 4 dòng, không vi phạm SOLID”. Viết xong yêu cầu tôi quá ngỡ ngàng về cái yêu cầu. Thực sự nó quá tầm với tôi :)))). Đó là chặng đường cuối để tốt nghiệp :)))).
Anh Béo cũng gợi ý cho tôi áp dụng các parttern như singleton parttern, adapter parttern và factory parttern. Thực sự những thứ đó với tôi vô cùng lạ lẫm và không biết bắt dầu từ đâu. Do vậy tôi đã lấy những câu hỏi của Anh như “singleton là gì ?”, ”Khi nào dùng singleton ?”, ”Tại sao dùng singleton?” và cuối cùng là “singleton dùng như thế nào ?” để tìm hiểu về nó vật lộn đúng 1 tuần trời với Design Parttern và làm quen với ngôn ngữ mới. Cuối cùng tôi cũng đã tìm ra những câu trả lời cho những câu hỏi trên và ngày thi tốt nghiệp cũng đã tới :))). Gặp anh, tôi hý hửng “Anh review code em với! em code xong rồi”, anh gật đầu “làm xong rồi ấy hả, anh review luôn” . Đúng là bài thi tốt nghiệp. Anh đặt ra cho tôi những câu hỏi dễ có khó có như “Tai sao không dùng biến global mà lại dùng singleton?”, “Factory dùng để làm gì?”, ”Trong trường hợp nào áp dụng cac parttern trên?”. Và một số câu tôi cũng tịt và thú thật với anh: "Phần đó em không hiểu lắm". Lúc đó anh lại ngồi lại và chỉ cho tôi đến khi tôi hiểu.
Và cuối cùng tôi cũng đã tốt nghiệp và được bàn giao cho đội dự án :)))) bây giờ đây tôi vẫn đang là 1 con gà mới vào nghề :)))), vẫn đang chập chững bước những bước đi đâu tiên và phía trước vẫn còn những áp lực, những thử thách đang đợi tôi phía trước nhưng hy vọng những gì tôi học được ở đây ở những người Anh, người Thầy là những hành trang vô cùng quý giá để tôi có thể tự tin đối mặt và trinh phục những gian nan thử thách phía trước 😀