Mình trích dẫn tiếp bài viết thứ 4 của bạn Thai-Tu-Shang tại diễn đàn VozForums, trước đó đã có các phần 1, phần 2phần 3 trong loạt bài những lần đi phỏng vấn đáng nhớ các bạn có thể xem lại để xuyên suốt nội dung. Trong phần này có lẽ điều đáng học hỏi ở bạn Thai-Tu-Shang nhất là động lực để tự tìm ra hướng giải quyết vấn đề dù không có hỗ trợ, điều đó rất cần khi mọi người bắt đầu với những môi trường mới khi mà không phải lúc nào mọi thứ cũng được bầy sẵn trên bàn.

Học lập trình online cơ bản đến nâng cao

Tết Dương gần tới, anh giám đốc có tổ chức một bữa ăn lẩu tất niên để chào đón người mới.
Đi vào quán nhậu và gọi một nồi lẩu ếch….
Tôi và thằng L đều không ăn được ếch nên là có bảo : thôi lẩu khác đi anh, bọn em không ăn được ếch.
Cuối cùng thì vẫn lẩu ếch, tôi và thằng L được bổ xung thêm một đĩa thịt bò nhỏ tí.. còn lại ăn toàn rau.

Trong bữa nhậu, tất nhiên là toàn con trai nên đầu tiên sẽ nói về công việc. Anh giám đốc vạch ra tương lai huy hoàng của công ty, khi mà nó to đùng. Bọn tôi là những người đầu tiên làm cho công ty nên là lợi nhuận của công ty sẽ được chia 50% để duy trì công ty, 50% thì anh em chia nhau. Anh ấy còn bảo : sang năm anh sẽ cố đóng bảo hiểm cho các em cho nó giống các công ty khác.

Xong chuyện đó là tới chuyện đất đai, chuyện trên trời dưới biển, chuyện chính trị, chém gió…
- Anh còn nhớ hồi chơi MU là hay nhất, một mình một trượng…..
- Bọn em không chơi nên cũng không biết…
- Ô thế à, chơi không chơi mà học cũng không giỏi nhỉ…

Bắt đầu cảm thấy cay cay sống mũi. Cơ mà cũng đúng. Học giỏi thì đã không lận đận như thế này. Thế là tôi chỉ cười trừ mà thôi.
Cuộc nhậu lai rai kéo dài cho tới khi tất cả bắt đầu ngà ngà say…
- Giờ hai thằng chúng mày về công ty hay là đi massage.. đi thì 1 xuất là 250k mà anh chỉ cho mỗi thằng 200k thôi, còn lại 50k thì chúng mày tự bù.
- Thôi, bọn em không đi massage đâu, bọn em đi về.. say lắm.
- Chúng mày sợ à.. không có con gái đâu, toàn bọn con trai nó đấm bóp cho thôi, sướng lắm. Lần nào nhậu say anh cũng ra đấy, lão chủ quán làm cho sướng tỉnh người luôn.

Nghĩ thấy nổi hết cả da gà. Có con gái, nó sờ vào người còn thích. Chứ đi toàn con trai nó tầm quất massage cho mình, nói dại chẳng may nó thông cho phát thì ú ớ kêu ai.
Vậy là tôi với thằng L quyết định đi về, không tham gia vào vụ này nữa.

Khi bọn tôi đã bắt đầu chắc phần kiến thức cơ bản về PHP cũng như mọi thứ liên quan tới làm web thì anh giám đốc không còn phụ trách nữa mà giao cả cho thằng Bình. Nó cũng chỉ là người mới vào cách chúng tôi 3 tháng. Ngoài ra còn một anh nữa tên là Cương. Lão này lầm lì ít nói, cũng không làm magento mà làm front end vs cả wordpress.

Sau khi đưa cho bọn tôi một đống tài liệu tiếng việt bắt ngồi đọc về magento.. chúng tôi bắt đầu cảm thấy khó chịu.Cùng là mấy thằng mới vào với nhau, có chăng thì nó vào hơn chúng tôi 3 tháng. Vậy thôi. Nó cũng vừa bắt đầu làm magento được hơn một tháng. Vậy mà…

Tôi đưa tài liệu tôi dịch cho bọn ông đọc, có gì không hiểu thì cứ báo lại nhé, vì tôi dịch theo ý hiểu của tôi nên là nhiều chỗ không rõ ràng lắm. Sau khi các ông đọc xong tài liệu, tôi cho các ông khoảng 2 ngày. Sau đó sẽ lên bảng trình bày những gì mình hiểu về magento, tôi đưa cho các ông một bài toán và các ông sẽ đưa ra suy luận logic của mình để tìm cách giải quyết vấn đề mà tôi đưa ra.
Tôi với thằng L nhìn nhau.. mắt chữ O, mồm chữ A.

Chẳng biết phải nói gì luôn. Đáng ra những việc này phải là anh giám đốc bảo bọn tôi làm mới phải. Nhưng mà anh ý giao cả cho nó phụ trách thì chúng tôi cũng không thể nói gì được. Nói chung là nếu có lên bảng trình bày về magento, về ý tưởng làm việc thì cũng không tới lượt một thằng mới làm có hơn 1 tháng như nó ngồi nghe và thẩm định về những gì mà bọn tôi nói đâu.

Tất nhiên là sau đó nó có nhắc lại chuyện đó. Nhưng bọn tôi coi như không biết, chẳng làm và cũng không quan tâm. Tài liệu đọc thì có đọc, nhưng mà không có chuyện lên bảng trình bày.

Vài hôm sau thì anh giám đốc đưa cho bọn tôi một cái yêu cầu viết 1 module hiển thị ra thông báo của admin. Một module khá là cơ bản và vừa tầm. Tất nhiên là bọn tôi vẫn chưa hiểu hết về magento, nên là cũng chỉ nhìn code mẫu của anh ấy và vừa đọc hiểu vừa làm theo mà thôi.
Cho tới khi bọn tôi làm xong thì có một vấn đề nảy sinh. Đó là khi add mới vào DB xong mà bật khung add lên thì nó sẽ lưu lại cái dữ liệu add trước đó mà không clear đi.

Bọn tôi ngồi tìm mãi mà không thấy chỗ nào để sửa. Chúng tôi hỏi thằng Bình thì nó trả lời một câu đơn giản: Tôi không biết, phần ý anh giám đốc làm.. tôi không làm.

Thế là bọn tôi lại tự mầy mò tìm lỗi, lên google search các kiểu con đà điểu để mong sao cho xong cái này đi còn làm cái mới.
Cuối cùng thì nó cũng xong.. và khi bọn tôi chắc mẩm được làm cái mới. Thì thằng Bình nó đưa ra yêu cầu mới cho bọn tôi.

Giờ tôi sẽ sử dụng DB mặc định của magento. Ở đó các ông bật bảng sản phẩm lên. Giờ tôi đọc sản phẩm nào thì các ông tìm trong DB của nó cho tôi.
Magento nó không dùng mô hình AV (Attribute – Value ) như các hệ cơ sở dữ liệu thông thường mà là EAV : tức là Entity, Atrribute và Value. Tức là ở những hệ cơ sở bình thường thì mỗi bảng là một attribute cơ mà ở đây mỗi bảng của nó là một entity, ở trong có chứa các attribute và trong mỗi attribute thì có value. Nói chung cái mô hình này nó khá lằng nhằng và rắc rối.

Thế mà rồi nó bảo bọn tôi tìm cho nó sản phẩm X ở chỗ này, Y ở chỗ kia. Mà tìm không thì còn đỡ, đằng này cứ mỗi lần mà bọn tôi chỉ sai sang một attribute nào đấy là nó bắt đầu ớ ớ, ầy ầy như xem phim con heo vậy.

Cảm giác một thằng đàn ông nó đứng sau lung mà nó cứ ớ ớ là các bác biết nó như thế nào rồi đấy.
Xong vụ Db này thì cũng là lúc bọn tôi bắt đầu viết một module đầu tiên hoàn chỉnh về magento
Đó là một cái hiển thị ra ngoài trang chủ: sản phẩm mới, sản phẩm bán chạy nhất và sản phẩm được chú ý. Ngoài ra còn có tích hợp banner nữa. Tất cả theo dạng jcarousel chạy slider.

Thực ra thì js bọn tôi làm không được nhiều cho lắm. Mà đây là một dạng thư viện của jquery. Cái này nó tự sinh ra cả html, css luôn để chạy kiểu slide trên trang web. Trước khi làm thì bọn tôi có lên mạng đọc qua tài liệu về nó và tìm hiểu.
Đây này, các ông làm theo những gì tôi đã làm thế này nhé. Nó cũng dễ mà.

Thằng Bình nó show cho bọn tôi một cái module nó làm có sử dụng jacarousel. Thấy nó khá hay nên tôi có bảo:
- Ông có thể gửi cái đoạn code ấy tôi xem được không. Chứ nó tự sinh Css nên là hơi khó làm cho nó vừa đẹp với trang.
- Ông phải tự làm chứ.. thế mới nhớ lâu được chứ giờ tôi đưa code cho ông đọc cũng như không.

Thế là tôi với thằng L tự tìm hiểu và làm. Cũng chả cần view code của nó nữa. Nhẩm nhẩm trong lòng nó làm được thì mình cũng sẽ làm được chứ có hơn gì đâu.
- Các ông cố gắng hoàn thành xong module. Cuối tuần nếu hoàn thiện hoặc chưa hoàn thiện thì cũng nộp code cho tôi để tôi review xong rồi tôi sẽ xem các ông làm được những gì và như thế nào.

Thực sự việc làm js này làm cho bọn tôi thấy mới mẻ. Tuy khó nhưng cũng giúp tôi biết nhiều điều.
Tuy nhiên sau một ngày thì nó vẫn chả đâu vào đâu cả. Nó đã index lên web, chạy được nhưng cứ để 5 sản phẩm thì chạy rất là ngon lành. Mà 4 hoặc 6 thì nó bị lệch, chạy thành một nửa hình ở đầu với ở cuối thanh trượt.
- Các em làm tới đâu rồi. Anh giám đốc hỏi bọn tôi.
- Bọn em lôi được nó ra khỏi Db rồi, cơ mà đang bí phần jcarousel, nó tự sinh Css nên là khó thao tác.
- Phần ý tôi làm rồi mà, sao các ông không lấy luôn của tôi mà lại code lại làm gì cho nó mất thời gian. Thằng Bình nói.

Nói thật là lúc đó nếu như hỏi muốn làm gì thì tôi chỉ muốn lao ra đạp cho nó một phát rồi muốn ra sao thì ra. Rõ rang lúc trước nó còn vừa nói là để bọn tôi tự làm tự tìm hiểu. Mà giờ anh giám đốc hỏi thì nó lại bảo như vậy.

Tuy nhiên tôi cũng nhịn, không muốn làm to chuyện nên là chỉ cười rồi không nói gì. Cũng chẳng thèm lấy code của nó. Tôi cũng tự làm được. Chẳng cần.
Cho tới cuối tuần thì cơ bản là cũng hòm hòm các chức năng. Chúng tôi đóng gói code vào và gửi cho thằng Bình để nó “review”
Sang tới đầu tuần sau thì nó đưa cho bọn tôi một tờ giấy có ghi những gì mà nó review được:

Các bạn code khá là nhanh, tiến độ tốt. Tuy nhiên có một số lỗi sau:
- Không hiển thị được sản phẩm mới.
- Jcarousel khi dùng còn hơi giật
- Thừa code khá nhiều …

Khi nhận được review thì bọn tôi có gọi nó ra và thắc mắc. Chúng tôi đã có một cuộc tranh luận khá là “ sôi nổi “
- Bọn tôi đã test kĩ chức năng rồi, khi mở DB ra thêm mới thì nó chạy vào module mà. Tại sao lại không chạy là như nào. ( Bọn tôi chưa làm trang add sản phẩm nên là mỗi lần thêm sản phẩm sẽ mở DB ra và tự thêm mới vào).

Tôi không biết, cái đấy là do các ông. Tôi dùng DB mặc định của magento thì thấy nó hiển thị ra không đúng so với bản gốc.
- Ông cứng nhắc thế nhỉ, ra đây tôi làm cho mà xem. Tôi thêm mới 1 sản phẩm iphone thì nó hiện lên luôn trên module đây còn gì.
- Tôi không biết, tôi test trên dữ liệu chuẩn của magento nên là không sai được ( ý nó là cái DB cũ của magento thì không sai mà là bọn tôi sai)
- Ờ rồi.. thế còn bọn tôi thừa code thì sao, thừa chỗ nào. (Lúc ý đầu tôi đã bắt đầu nóng lên )
- Tôi muốn các ông tự tìm ra. Trong file config ý.

Tôi bực mình quá nên là mở luôn file config ra và so với bản gốc ở trên trang chủ magento. Nói chung là so hai lần thì chẳng có thừa dòng nào cả. Tôi mới hỏi nó.
- Tôi so hai lần rồi.. chưa thấy thừa chỗ nào cả. Ông chỉ cái xem nào.
- Dòng dưới thẻ global thừa kìa.

Sau khi tôi xóa cái đoạn nó bảo đi thì tất nhiên là code chết đành đạch. Thế là nó không bảo gì nữa. Chỉ bảo một câu:
- Trong tuần này các ông sửa cái lỗi new product cho tôi. Chứ hiển thị như vậy là không đúng.
Tôi cũng không hiểu ý nó đúng ở đây là như nào. Khi mà thêm mới một sản phẩm vào DB, nó đã hiện ra trên module thì tức là module của bọn tôi đã chính xác rồi.