Tôi đã đến với javascript như thế nào (Phần 2): Đây là game sinh tồn!
Cuộc sống là một trò chơi nhưng tùy vào mỗi người mà nó sẽ mang thể loại khác nhau. Đi làm cũng thế, với mình những ngày đầu thì đi...
Cuộc sống là một trò chơi nhưng tùy vào mỗi người mà nó sẽ mang thể loại khác nhau. Đi làm cũng thế, với mình những ngày đầu thì đi làm đúng nghĩa là một trò chơi sinh tồn.
Khoảng thời gian khó khăn
Như đã kể trong phần trước thì mình có nói về việc mình bị tống cổ ra khỏi căn nhà PHP, mặc áo tơi lao vào một cơn bão mang tên Javascript. Thì trong phần này mình xin kể sơ về vụ việc trước đó. Mình đã trãi qua một khoảng thời gian chật vật nếu không muốn nói là khủng hoảng trong vài tháng. Khi ra trường nhưng không xin được việc làm, thi rớt liên thông lên hệ hoàn chỉnh của trường. Mỗi ngày trôi qua là một ngày áp lực khi mà cái bóng đen thất nghiệp cứ treo lơ lững trên đầu. Trong thời gian đó mình cũng bí quá đi làm một số nghề như internet sale, quản lý channel Youtube nhưng vài ngày rồi quit khi được gọi đi làm chổ khác tốt hơn. Hay đúng hơn là gần với chuyên ngành hơn. Đến một lần mình được nhận vào làm trong một công ty nhỏ chỉ có vài mạng ở Tân Phú. Công ty làm Java, mình được nhận vào và ngày đầu tiên của mình là được dạy sơ sơ về system admin. Đến ngày thứ hai, mình có được một cú điện thoại định mệnh. Một người gọi tên lên và phỏng vấn về công việc PHP developer. Thế là mình lại quit công việc hiện tại. Cuối cùng mình cũng tìm được một công việc phù hợp với chuyên môn PHP của mình. Lúc lên công ty, mình được đưa ra task là làm một project đăng tin và quản lý đơn giản bằng Phalcon. Mình nhớ là mình làm xong trong vòng 3,5 ngày thì phải. Sau này, mình mới biết luật bất thành văn của ông ty là nếu sau một tuần mà không xong thì cho đi bụi hết. Sau đó, mình làm một lô lốc công việc trước khi join vào một dự án product của công ty. Lúc này, mình đảm nhận một phần khá lớn frontend lẫn backend (PHP) của project. Chỉ trừ phần tương tác với database là mình không chạm vào. Do lúc đó công ty sử dụng API kèm với elasticsearch để xử lý. Do mình không đủ khả năng làm nên phần đó công ty giao cho một ông anh làm (các bạn có thể follow him tại Node++).
Nếu hỏi lúc đó mình ngán cái gì nhất thì mình có thể khẳng định đó là HTML, CSS, Javascript. Mình code xấu cực kì và rất tệ. Sử dụng các class có sẵn của Foundation cực kì bừa bãi. Bất lực trước các thứ như plugin slider hoặc là menu, map. Do chất lượng kém thêm phải sửa liên tục nên đống source đó nhìn chả khác gì một mớ hỗn độn. Thời gian đó mình cực kỳ stress và thường xuyên tự nhủ là "mình tuyển vào đây để làm backend mà?". Có một chuyện vui là đến tận sau này sếp mới biết mình làm backend, chứ trước đó ổng toàn đinh ninh là mình là frontend dev. Đến một ngày, mọi thứ thay đổi khi sếp cử hai anh qua hỗ trợ phần frontend của project (cuối cùng một anh sa lầy trong cái project này luôn). Code ở tầng frontend được đập đi và cơ cấu lại. Cả về trúc file và folder cũng được gom gọn lại để đảm bảo DRY (Don't repeat yourself). Code css thì được tổ chức chỉnh chu lại. Nói đơn giản chứ nó mất cũng gần nửa tháng.
Liên tục là những đêm thức tới 2, 3 giờ sáng để chờ deploy. Chủ nhật thì hai anh em đi cafe ở BlackBerry Cafe nằm bên quận 4 (thời gian đó cũng chính là cái thời gian mình đang mơ về em BlackBerry Classic). Ngồi đến tận lúc quán sắp đóng cửa anh vẫn cố nói với bạn phục vụ "chờ tí nha em, để bọn anh up cái này lên đã". Xong hai anh em ra ăn hủ tíu gõ (vì giờ đó chỉ còn bán hủ tíu gõ). Về ngủ vài tiếng sau là phải thức tiếp để làm nối một số phần và kiểm tra trên production sau khi deploy.
Những bước đầu tiên
Sau khi được refactor đống code cũ. Mình lại tiếp tục những ngày code frontend của mình, chỉ khác là giờ được hướng dẫn nhiều thứ nên công việc cũng thú vị hơn. Mình dần nhận ra là frontend không quá đáng ghét như mình nghĩ. Mình nhớ cái lần mà được dạy về absolute và relative hay là dùng jQuery để listen event cho các element được render theo dạng dưới đây:
$("body").on("click", ".btn-delete" function () { })
Mỗi lần như thế cảm giác đầu như được khai sáng một ít. Lại được các anh dạy cả cách search google để dễ ra được solution đúng, cách tổ chức file, function. Đặc biệt là leader có nhắc mình một câu là không biết phải hỏi ngay những vấn đề mới. Mình nhớ một lần anh nói với mình:
Cái gì mà không biết là phải hỏi ngay. Cứ việc hỏi đi. Ngày xưa vào đây anh cũng không biết gì. Nhưng mà anh chịu hỏi. Lúc đó, anh ngồi kế anh Khánh, không biết cái gì là anh hỏi liền. Hỏi riết ổng bực luôn...
Trong project của mình thì phần kinh dị nhất là cái trang tìm kiếm và trang đăng tin, cập nhật tin. Hai cái form với kha khá thông tin và logic hơn hết là yêu cầu thay đổi liên tục. Đầu tiên mình xài CSS mặt định của Foundation nhưng càng về sau nó càng xấu và lạc lỏng giữa trang web. Vì giao diện trang này lấy lại từ một trang khác dùng Bootstrap. Mà style của Bootstrap thì bo tròn và đổ bóng trong khi style của Foundation thì góc cạnh và phẳng. Chính vì lý do đó mà bọn mình phải làm cái việc khác buồn cười đó là style lại những cái có sẵn của Foundation sang Bootstrap. Bào tròn mọn góc nhọn, từ các thẻ button đến label, table. Cũng nhờ quá trình này mà mình cũng học được kha khá trong việc... sử dụng cái plugin javascript.
Trở lại với ba cái form của mình. Nếu mình nhớ không lầm thì nó dài lên đến hơn cả ngàn line mỗi file. Điều đáng nói là trong code của mình cẩu thả và bị lặp lại khá nhiều. Nhưng mình có nói trong bài trước thì một thứ khiến mình từng cực kì ghét đó là Asynchronous. Cảm giác một load theo dạng cha con của lần lượt bốn cái selectbox. Nhưng cứ luôn tự hỏi là tại sao nó có load tới các thứ hai là đứng hẳn. Đến khi biết được mình đã làm đủ trò để đảm bảo cho chạy đúng nhất và không bị sót. Theo mình nhớ thì lúc đó mình dùng when và done của jQuery thì phải. Buồn cười là vì yêu cầu thay đổi liên tục nên mình chèn đủ chổ trong file Javascript. Lỡm chổm những chổ mình in biến PHP ra. Sau tất cả, cuối cùng mình cũng hoàn thành các chức năng đó, chạy khá mượt nhưng mỗi lần maintain thì cứ phải gọi là khóc ròng vì code không hề tối ưu một tí nào. Sau lần đó, mình không học được quá nhiền thứ về Javascript những cũng trang bị được kha khá khả năng làm việc với jQuery và không còn cảm giác sợ hãi khi bị giao task fix một đoạn Javascript nào đó trong các hiệu ứng hoặc các UI đơn giản.
Có thể nói lúc đó mình nghĩ kiến thức lúc đó cũng chẳng bổ béo gì lắm vì mình vẫn còn nghĩ rằng đây là thứ mà các lập trình viên đều biết cả, chỉ là mình biết quá trễ so với mọi người thôi. Mình suy nghĩ như thế cũng một phần vì trước lúc vào đây mình đã phỏng vấn trượt khá nhiều công ty, họ đều đưa ra cho mình bài test có chứa kha khá các câu trắc nghiệm có liên quan đến bộ ba quyền lực (HTML - CSS - Javascript). Nhưng đến sau này, khi mình đi làm những chổ khác thì mình mới biết rằng là mình đã nhầm vì cũng khá nhiều người trong các môi trường sau này không code được những thứ đó. Lúc đó, những kiến thức trong giai đoạn đó đã giúp đỡ cho mình khá nhiều.
Tôi nghe đâu đó có ai nhắc đến Angularjs
Lúc đi làm thì mình cũng được nghe về Angular. Có thể nói Angular 1 (hay còn gọi là Angularjs) là một thứ khá hot thời điểm đó. Trên khắp các trang tuyển dụng vị trí frontend thường xuyên gắn kèm theo nó. Thật chí là nhan nhản các tin tuyển dụng PHP, các nhà tuyển dụng cũng cố chèn thêm được dòng chử Biết Angular là một lợi thế. Nói thêm một chút về xu thế tuyển dụng PHP lúc đó, hai thứ thường xuyên xuất hiện nhất chính là Wordpress và Angular. Buồn cười là đến giờ mình đều chưa làm được hai cái đó. Trong một lần nói chuyện vào buổi sáng với các anh thì mình biết thêm được một thứ tên là React. Lúc mình hỏi chơi thì ổng khuyên nên học React đi. Trong lúc đang phân vân thì công ty lại có một project là một trang quản trị bán hàng. Mọi người đều định làm bằng Angular nhưng rồi vì một điều gì đó mà một người dùng jQuery. Site vẫn chạy mượt mà không một tí vấn đề. Sau lần đó, mình cũng bỏ hẳn luôn cái thắc mắc nên chọn cái nào trong hai cái. Đúng là sau này mình không dùng cái nào thật, mình bắt đầu làm Javascript thật sự với Angular 4 (Angular.io). Nhưng đó là một câu chuyện khác rồi.
Tiếp tục bước đi
Một thời gian, thì bọn mình rời công ty cùng một ngày với một chầu nhậu bét nhè ở Phạm Văn Đồng. Sau đó, mỗi người một hướng đi. Mình bước vào một môi trường mới và được làm khá nhiều với PHP và có thể nói gần như là không còn dính tới Javascript. Theo kiểu mình nói ở bài đầu tiên đó là sau một năm trùm áo tơi bước trong mưa thì mình cũng tìm được một cái miếu hoang trú mưa. Đương nhiên, miếu hoang vẫn không phải là nhà. Vậy nên mình lại đi tiếp sau thời gian nghỉ chân. Có điều, lần này khi bước ra khỏi miếu thì cơn mưa càng lúc càng lớn, lớn đến mức mình chưa từng gặp bao giờ. Và đó chính là câu chuyện của phần tiếp theo.
Các bạn có thể follow trang cá nhân của mình ở địa chỉ https://tasynguyen3894.github.io hoặc Twitter của mình @tasyit để theo dõi các bài viết linh tinh của mình.

Chuyện trò - Tâm sự
/chuyen-tro-tam-su
Bài viết nổi bật khác
- Hot nhất
- Mới nhất

Sayonara no Ame
Em cũng mới bắt đầu làm quen với PHP, HTML, CSS và Java script. Liệu anh có thể chỉ cho em các điểm quan trọng cần nắm của mỗi ngôn ngữ không ạ? Em cảm ơn anh.
- Báo cáo

Tasy Nguyen

Mình cũng không biết chỉ như thế nào vì mình gà mờ lắm. Nhưng nếu HTML, JS và CSS thì bạn có thể tham khảo bài dịch này của mình. https://tasynguyen3894.github.io/cac-designer-hoc-frontend-nhu-the-nao.html
- Báo cáo

Night2AM
Phần comment bình luận :" Thêm hình ảnh vào, nếu được có thể chụp màn hình code để bài viết thêm sinh động và người đọc dễ nắm bắt."
- Báo cáo

Tasy Nguyen

Source code đó từ hồi mình mới đi làm cũng hơn hai năm rồi nên giờ chắc mò không ra được. Thêm cái là lúc bọn mình cùng nghĩ thì các tài khoản đều bị remove khỏi github công ty rồi 

- Báo cáo

Duy
HTML,CSS là 2 ngôn ngữ theo mình thấy là dễ nhất khi học và làm về mảng website rồi. còn javascript thì đã có jquery cộng với 1 nùi plugin, source mở kèm theo rồi công việc còn lại thì chỉ là copy dán và chỉnh sửa theo ý mình thôi (Trừ 1 số cái quá phức tạp thì mới khác thôi chứ thực tế trong quá trình mình làm việc chủ yếu là như vậy). Mà thấy bạn có vẻ không có tiếp thu được bên mảng frontend nhỉ. Ráng tiếp thu đi bạn css dễ lắm nó có quái gì đâu mà khó nhỉ, Mà nhiều khi có kinh nghiệm rồi thì vứt mấy cái bootraps qua 1 bên tự code luôn ấy chứ. Bạn có thể tham khảm frontend ở trên trang này, trang này tổng hợp lai những thứ cơ bản nhất cần học ở các loại ngôn ngữ rồi https://www.w3schools.com/ (có ví dụ và chỉnh sửa trực quan luôn) ngoài ra bạn có thể https://www.w3schools.com/howto/default.asp nó có chỉ làm một số thứ phổ biến
- Báo cáo

Tasy Nguyen

Mình cũng đang cố gắng. Dù dốt frontend lắm
gần như không biết tí gì về JS luôn 


- Báo cáo

Tasy Nguyen

Cám ơn bạn nhiều nha. Mình sẽ vào thử hai trang ở trên để tìm hiểu thêm. Chứ giờ mình không biết phải học ở đâu để cải thiện trình độ CSS với JS của mình cả 

- Báo cáo

Tasy Nguyen

Mình học được tàm tạm vài ba mục bên w3s rồi giờ học tiếp hay qua trang nào học tiếp vậy bạn?
- Báo cáo

Liễu Phong
Bác giống em quá, e xin vào cty thực tập PHP (laravel), lúc thử việc thì được giao nâng cấp mấy trang web của cty dùng PHP (zend), hết thời gian thử việc cty lại ném e vào làm project product mới tinh của cty và e được giao vào vị trí code angular :v mà trước đó e chỉ biết jQ, thế là cũng đc 2 project angular ở cty này rồi. Giờ e đang muốn nhảy việc mà muốn thiên về backend PHP hơn á, ở cty này e không học được gì về PHP. Giờ đi xin việc lại chẳng có kinh nghiệm nhiều về php, bác khuyên e nên làm sao, e vẫn thích công việc mới là làm về backend hơn hiu hiu
- Báo cáo

Tasy Nguyen

Mình có ra phần 3 rồi đó bạn. Khá giống case của bạn 

- Báo cáo

Bingan
Công nhận chú code FE xấu thiệt =.=
- Báo cáo