+249

Con đường mình đang đi để trở thành Fullstack Web Developer

Chào các bạn, lại là mình đây (dù chả ai biết mình là ai 😄 😄). Lại một thời gian ở ẩn nay lại có dịp sủi tăm để có cơ hội chia sẻ với mọi người.

Trong thời gian sủi tăm mình để ý thấy blog của mình viết chủ yếu về VueLaravel vẫn được nhiều bạn theo dõi (mình cũng có ích cho xã hội đấy chứ nhỉ 😄), nên mình thấy rằng việc mình viết blog dù sao cũng giúp được nhiều (hoặc 1 số bạn) và nhiều lúc cứ cảm thấy "tự sướng" rồi cười thầm 1 mình 😂.

Bẵng đi một thời gian mình chủ yếu tập trung vào công việc của mình và tranh thủ thời gian để học thêm về các công nghệ, techstack mới. Nhiều lúc "buồn" chân tay, rất muốn viết, muốn chia sẻ một cái gì đó cho mọi người nhưng cũng cần phải có ý tưởng xem viết về cái gì? , cứ thế quên tới quên lui, đến mấy ngày nay do có một số bạn hỏi mình về vấn đề này nên tiện gợi ý tưởng viết bài cho mình luôn.

Nhân những ngày cuối tuần rảnh rỗi ngồi không ngứa ngay chân tay lại ngồi viết blog, hôm nay mình không viết về cách bind data trong Vue, cách dùng watch hay computed, $forceUpdate,... mà mình sẽ chia sẻ với các bạn về con đường mình đã và đang đi để trở thành Fullstack Web Developer (đi để trở thành chứ không phải đi để trở về của Soobin nhé những người anh em thiện lành 😄). Hi vọng rằng qua đây các bạn có một "nguồn" để tham khảo trên công cuộc trở thành fullstack web. 😃 (đọc xong nếu không yêu xin cũng đừng nói lời làm cay đắng con tim đau khổ này nhé ❤️)

Theo W3School, Fullstack web developer là: A full stack web developer is a person who can develop both client and server software (một người có thể làm phần mềm ở cả phía client và server)

Vài dòng về bản thân

Chắc các bạn đọc blog của mình nhiều rồi, câu từ có khi nhiều chỗ hơi "ngổ ngáo, trẻ trâu" không rõ: thằng cha viết blog này sinh năm bao nhiêu, làm gì, đực hay cái mà nhiều câu viết nghe cute vậy không biết? (đoạn ....cute là mình bịa ra thế, 😄).

Mình là cựu sinh viên Bách Khoa Hà Nội, nghe "cựu" già già, thực ra mình mới ra trường được gần 1 năm (đúng hạn đó các bạn, do Bách Khoa học 5 năm nên cảm giác hơi "lê la" thôi 🤣🤣). Mình cũng từng đi thực tập/làm ở 1 vài công ty, và hiện tại đang làm ở Singapore với 1 mức lương khá ổn cho 1 thanh niên ngô nghê như mình (ăn hên ấy mà, mình điểm thấp lắm 😁 😁, ơ hình như Tôi đi code dạo cũng đang bên này thì phải).

Công việc hiện tại của mình là chủ yếu viết API, viết app (web/mobile), deploy và maintain (sao nghe hổ lốn, làm kiểu "thiên hạ", việc gì cũng làm thế nhỉ 😜😜). Vì môi trường làm việc hiện tại đưa đẩy phải thế đó các bạn 😄

Thôi lại chuẩn bị luyên thuyên bốc phét đến nơi rồi, vào chủ để chính thôi.

Vỡ lòng về lập trình

Sự bỡ ngỡ của anh thanh niên mới vào ngành

Mình bắt đầu đại học với sự hiểu biết về lập trình là con số 0, thi vào ngành công nghệ thông tin đơn giản vì: thích chơi game, và "thấy bảo" ra trường lương cao (1 sự quan hệ biện chứng chặt chẽ nhất thế giới).

Thật sự khi mới bắt đầu học về lập trình mình gặp rất rất nhiều khó khăn, cảm giác mình cứ "ngu ngu" sao so với đám bạn cùng lớp. Năm 2 ở trường học C, mình đã rất tốn công để hiểu nổi tại sao vòng while hoạt động thế nào và cũng không hiểu con trỏ trong C nó là cái điều gì luôn?

Rồi  lúc học Java và mình vẫn không thể hiểu nổi tại sao câu lệnh tạo 1 đối tượng lại được viết như sau:

Person person = new Person();

Khổ thân mấy thằng bạn mình trông bất lực khi giải thích cho mình cái nào mới là person thật 😄 (trông mặt chúng nó kiểu: thằng này ngu bẩm sinh thật rồi 😁😁)

Lần đầu làm chuyện ấy với PHP

Cuối năm 2 mình có 1 môn phải làm bài tập lớn, đề tài là về 1 trang web quản lý trường học. Lúc đó mình cũng chẳng biết làm web thì dùng cái gì, lên google search thấy có HTML làm được web (ồ really? thế chả nhẽ HTML đi làm mobile app 😄), vậy là mình bắt đầu học HTML, rồi cả CSS và JS và bắt đầu làm các trang web nội dung tĩnh, sau đó học thêm cả JQuery để làm mấy cái animation chạy chạy, nhấp nháy, mỗi lần F5 phát thấy có kết quả ngay trên trình duyệt thấy sướng kinh, tự thầm: làm cái này sướng thế nhỉ, chả như lúc làm Java mỗi lần code lại phải compile rõ lâu 😄.

Sau đấy thì hiểu các nào để làm nội dùng trang web "động" có thể thay đổi, lưu trữ để lần sau mở ra là có. Thế là mình bén duyên với PHP.

PHP

Mình học PHP từ cơ bản (trên trang W3School thì phải), rồi cứ thế nhận ra: uầy sao cái này đơn giản thế nhỉ, chả phải khai báo kiểu dữ liệu gì, cứ thế "chiến" luôn 😄.

Rồi cũng biết được là PHP thì phải đi với MySQL để có thể lưu trữ được dữ liệu, vậy là mình học luôn SQL (các câu lệnh SELECT, UPDATE, DELETE,....)

Cuối kì cũng nộp được bài tập là 1 trang web có độ 5-6 màn hình, trông xanh đỏ tím vàng, nhấp nha nhấp nháy, background để nền trời mây 🌤 xong lại còn có nhạc nữa 🎶, phong cách thì đúng là của những thập niên 80 thế kỉ trước (dù mình 9x 😄)

Trải nghiệm

Ngay sau project đầu tiên về PHP đó thì mình thấy: à lập trình cũng đỡ khó hơn với mình rồi thì phải 😃 (lại ảo tưởng). Và mình dành nhiều thời gian để học thêm, chủ yếu vẫn là PHP, sau đó có học thêm về Laravel nữa (nhưng lúc đó vẫn gà kinh 😄).

Đi thực tập

Đầu năm 3 thì mình được trường phân vào 1 công ty khác để thực tập vị trí iOS developer, mình có thể chọn công ty khác làm về web nhưng thật sự là ngày đó chả biết mình thích gì, mình cứ tiến thôi.

IOS

Kết thúc kì thực tập 4-5 tháng và lúc đó mình thấy rằng mình không thích mobile, suy nghĩ lúc đó là: sao không làm web đi chạy được cả android, ios, desktop (win, mac,....), đây thì làm mỗi iOS, sau này Android nó thịnh hành chiếm cả thế giới thì sao (suy nghĩ tuổi mới nhớn 😁😁).

Ngay khi kết thúc năm 3 đại học, mình xin đến công ty của một người quen để thực tập, về web, code .NET, trong khoảng 5 tháng, là lần đầu tiên mình được đi làm ở một công ty, và cảm thấy ra ngoài mọi thứ nó qúa khác so với trong trường, chẳng còn những file code 1000-2000 dòng gói tất cả mọi thứ, mà bây giờ là module, project vài ba chục file, đọc loạn cả mắt, chẳng còn 1 mình 1 branch trong project mà giờ đây phải làm cùng 1 team với những người khác, commit lên vớ vẩn là "có biến" ngay 😄. Vậy là lại phải học cách thao tác với Git để quản lý source code nữa chứ (nhiều thứ phải học quá @@)

.NET

Hết gần 5 tháng thì mình dần nhận ra rằng, ngoài kia thực tế khác rất xa so với những gì học ở trường, và những thứ "khác xa" đó thực sự làm mình cảm thấy thích thú, hơn là học lý thuyết, thuần thuật toán,... (vì mình hấp thụ những thứ đó kém 😄). Mình kết thúc đợt thực tập do đầu năm 4 học nhiều hơn nên đi được ít (cả do lười nữa 😄).

Từ đây, định hướng con đường của mình dần rõ ràng, đó sẽ là được đi làm những công ty, với những dự án thực tế chứ không phải con đường nghiên cứu học thuật.

Thử những điều mới

Kì đầu tiên của năm 4 mình có 1 project về game và mình cùng đồng bọn chọn Unity để làm. Lúc đó xin "thầy bu" đầu tư cho con Mac, để làm game, và cũng vì cả team mỗi mình có Mac nên chạy Unity mượt nên mình bảo bạn mình để mình cân luôn project (hồi đâý hừng hực như con trâu, cái gì cũng làm).

Unity

Làm Unity mình nhận ra rằng, bản thân mình yêu cái đẹp 😄 (nghe dâm quá), thực ra là mình thích làm những cái thiên về bề ngoài trông thấy được (nói gọn như web thì là frontend 😆). Nhưng kết thúc kì đó mình cũng bỏ ngỏ Unity 1 xó.

Sau đó mình có ông anh họ cũng học lập trình, 2 anh em rủ nhau đi học 1 khoá về lập trình ở 1 trung tâm khá to. Khoá học về Java Web, và sau 1 cơ số buổi mình cảm thâý rất chán, không thấy thích Java vì độ phức tạp và loằng ngoằng chỉ để in ra được vài dòng HTML (thời sinh viên cả thèm chóng chán 😄). Cuối cùng thì mình bỏ dở giữa chừng khoá học, bỏ rơi ông anh đi học 1 mình sau đó cũng bỏ luôn vì ngại đi do cô đơn (nghĩ lại thấy mình tội lỗi quá 😂😂)

Java

Thế rồi lại bẵng đi 1 vài tháng sống cuộc đời vật vờ, bùng học, ngủ nghỉ liên miên, hồi đó sinh viên phải nói là ngủ ngày thực sự khoẻ, và thức đêm thì cũng vô biên 😄.

Frontend developer??

Cơ hội mới

Sau những quãng ngày sống lay lắt, và qua những sự dụ dỗ rủ rê nhiệt tình của mấy đứa bạn đại học, thì đến giữa năm 4 đại học mình cũng đi thực tập ở 1 công ty, mình làm ở team PHP, code backend dùng Laravel và frontend là VueJS.

Lúc mới vào nghe thấy phải học Vue là sợ khiếp cả vía rồi, nghĩ bụng sao không dùng JQuery hay Laravel Blade là được rồi, lôi cái mới vào làm chi 😥😥.

Sau đó mình cũng phải bắt tay vào học Vue, và thật sự là cảm thấy yêu ngay từ những ánh nhìn đầu tiên. Vue thực sự dễ học cho người mới như mình, cú pháp khá là giống HTML. Code thì chia rõ ràng, file nào cũng 3 thẻ template, script và style phân chia rõ ràng rành mạch. Document cũng rất là dễ hiểu nữa chứ.

Vue

Suy nghĩ định hướng

Thời gian tiếp theo mình dành rất nhiều thời gian với Vue, làm các tutorial về Vue, tìm các project mẫu về Vue. Nói là làm ở team Laravel + VueJS mà mình toàn làm mỗi Vue, Laravel để member khác làm. 😄

Từ việc thích Vue mình dần dần thích mọi thứ về JS, mình học nhiều hơn về cả Javascript (JS), các chuẩn JS (ES5, ES6, ES7,...) để nâng cao kĩ năng JS. Rồi mình lại thấy yêu dần JS, vì cách viết phóng khoáng và độ mạnh mẽ của nó. Dùng JS có thể viết được hầu như tất cả các loại ứng dụng ở các tảng mà mình biết (Web app, native mobile app, native desktop app).

Rồi mình dành nhiều thời gian hơn để tìm hiểu thêm về những plugin khác của JS như Eslint để format code sao cho đẹp, dễ phát hiện lỗi. Eslint là 1 plugin cực hay mà mình khuyên các bạn RẤT NÊN phải dùng, nó sẽ giúp các bạn code năng suất hơn rất nhiều đấy 😉. Rồi sau đó là học cách tự config Webpack để biết compile project Vue/React thế nào, config Babel để biết được cách mà Babel được sử dụng để dịch code của chúng ta chạy được trên trình duyệt ra sao, sử dụng SCSS thay cho CSS thể giảm thiểu số lượng code phải viết như thế nào, rồi tìm hiểu cả về PWA làm web chạy được cả khi offline và chạy trên điện thoại trông "giống" như app mobile thật, rồi async/await,.... Cái gì về JS là mình cũng muốn tìm hiểu bằng hết (ngựa non háu đá 😄)

JS

Dần dần mình có một thói quen (đến tận bây giờ), là vào bất kì trang web nào thấy hay hay, hay những trang web của những công ti to (Facebook, youtube, google) là cứ phải mở Inspect lên để xem source code, xem request gọi ra sao, websocket, rồi tự test tốc độ, security của các trang đó,....)

Sau này tìm hiểu các trang tuyển dụng, đọc blog thấy mọi người nói nhiều về ReactJS, tìm hiểu thì biết nó là hàng của Facebook, và xem thống kê thị phần việc làm thì React vượt trội nhất cả thế giới frontend 😄. Thế là lại có suy nghĩ nảy ra: mình cần phải có thêm kĩ năng frontend khác ngoài Vue, ngoài kia thế giới xôn xao dùng React tại sao mình lại không biết được (lại toàn suy nghĩ ngựa non háu đá 😄).

Thế là mình lại mày mò học ReactJS. Và cảm nhận của mình: ôiiii, biết Vue sẵn rồi chuyển qua React thật là dễ hấp thụ quá đi, tư tưởng giống nhau, rồi cách triển khai viết code cũng khá là giống nhau nữa. Rồi cũng tìm kiếm các project để làm, xem tutorial về React. Trong quá trình học React mình thấy rằng tài liệu, thư viện, và các tài nguyên khác về React nhiều vô biên không kể xiết, mà được support rất tận tình, cộng đồng thì năng động đông đảo, đúng là hàng của Facebook có khác, nhà nhà yêu mến ❤️

Tới đây mình có suy nghĩ là, có phải Frontend Web Developer là cái mình muốn trở thành...

Bon chen vào backend

Frontend không làm mình đủ

Sau 1 quãng thời gian hầu như chỉ tập trung làm về Vue, có nhiều việc ở công ty mình được giao phải sửa cả phần backend là Laravel mà thật sự lúc đó gà thật (giờ chắc vẫn còn gà nhưng bớt 😄), động cái gì mình cũng phải hỏi thằng bạn làm cùng, cái gì cũng không chắc, không biết. Và tính mình thì ngại làm phiền người khác nhiều, nên tự nhiên cảm giác: mình hỏi nhiều hình như thằng bạn nó cũng bắt đầu chán rồi 😄.

Vậy là mình nghĩ rằng: mình không thể chỉ biết mỗi frontend được, mình muốn được làm nhiều hơn thế.

Tu luyện backend

Vậy rồi mình cũng đành bon chen vào thế giới backend. Dành nhiều thời gian hơn để đọc lại docs của Laravel, làm nhiều ví dụ, tìm các project mẫu về chạy rồi config lại thử xem nó có còn chạy được không sau khi mình thò tay vào 😄. Rồi cứ thế mình tìm hiểu nhiều hơn về Laravel: về queue để chạy task không đồng bộ, về gửi mail, về notification, về laravel echo với socketio để làm realtime, rồi Horizon để quản lý queue job, service provider,... Cứ thế lại thấy tình yêu backend dần tăng lên theo thời gian.

Laravel

Dần dần cũng thấy rằng: ồ, nó cũng không khó như lúc đầu mình nghĩ, chẳng qua là mình lười động vào nên bị sợ backend và chìm đắm trong tình yêu với frontend 😁.

Trong quá trình làm như thế, mình cũng hay lên các trang tìm việc làm, các trang tuyển dụng, đọc blog của mấy a Tây, xem video workshop về công nghệ, thì thấy nói rất nhiều về NodeJS, quảng cáo là NodeJS chạy nhanh, bất đồng bộ nên xử lý được cả triệu request, bla blo.... Trước giờ cứ tưởng NodeJS nó là 1 cái gì đó giống VueJS hay ReactJS (chắc là vì nó có chữ JS 😁😁). Vậy là lại có suy nghĩ nảy ra: mình cũng nên dắt túi thêm 1 ngôn ngữ backend để có nhiều sự lựa chọn khi làm việc, đồng thời tăng khả năng có việc làm sau này, vì thấy NodeJS tuyển nhiều quá trời (thanh niên ham hố thấy cái gì tuyển nhiều là học 🤣🤣)

Vậy là mình đâm đầu vào học NodeJS, chủ yếu là tự học vì đi làm công ty làm Laravel(PHP). Càng học mình lại càng thấy yêu Node, cú pháp thoáng mát, phóng khoáng, dùng async/await viết bất đồng bộ như đồng bộ, và đúng là cảm giác NodeJS có chút gì đó "nhanh" thật 😃. Kết hợp với Express nữa thì quá tuyệt vời, đơn giản, dễ hiểu, hiệu quả.

NodeJS

Và nó lại càng làm tăng cái tình yêu với JS của mình lên. Học mỗi JS là có thể viết được cả frontend lẫn backend 😄. (Và đúng là yêu JS quá nên hiện tại hầu như mình chỉ dùng mỗi NodeJS cho backend)

Rồi sau đó cũng có 1 project làm về Python web, dùng Python + Flask cho backend và Vue cho frontend. Sau project này thì mình thấy (mình thấy thôi nhé 😄): nếu làm web thì nên dùng những ngôn ngữ "thuần" web, sinh ra để cho web: PHP, NodeJS, Ruby,... Vì mình thấy python hay flask vẫn có nhiều cái hạn chế khi làm web, đặc biệt 1 điều mình không thích ở python là việc các thư viện hay bị "bỏ rơi" (lỗi thời) hoặc lỗi về phiên bản của thư viện. Dù không có "cảm tình" với python (ôi sorry các bạn code python nhé 😃), nhưng hiện tại công việc của mình vẫn thi thoảng buộc phải làm vì không còn sự lựa chọn nào khác 😂😂

Cứ nghĩ đến đây là tới thiên đường rồi, dừng ở đây là được rồi, nhưng không, trước giờ mình mới chỉ có toàn code, code, code, chỉ có Vue/React, hay Laravel NodeJS, không biết cái mình làm ra được chạy như thế nào, triển khai ra sao vì toàn code ở local 😄. Mình để ý thấy các anh leader ở trong team luôn làm việc có thể coi là quan trọng hơn cả: deploy project lên server thật và bảo trì, vận hành đảm bảo là user luôn sử dụng hệ thống ổn định. Và những thanh niên gà mờ như mình thì không bao giờ được động vào những thứ quan trọng đó Vậy là trong lòng lại tràn trề 1 niềm khao khát: mình cũng phải làm được những thứ "quan trọng" như thế (tuổi trẻ mà, cái gì cũng tham 😄).

"Yêu lại từ đầu" với Linux

Mình tự thuê những VPS giá rẻ (hồi đó dùng của Digital Ocean thì phải, 5$/ 1 tháng) và tập tành thử deploy các project nhỏ nhỏ để test xem thế nào. Cho các bạn nào chưa biết, VPS là máy ảo, có hệ điều hành như thật (Ubuntu, Win,...), chúng ta có thể thao tới với nó như là 1 máy bình thường, thông thường là qua command line. Và mình khuyến khích các bạn, nếu là developer, thì hãy tập dùng VPS thay vì ném project lên hosting, vì hosting đã "cân" hết rồi, chúng ta chẳng được làm gì cả, vậy là trình chẳng lên được 😄.

Có VPS rồi vì nó là Ubuntu (một "phiên bản" của Linux), nên mình phải học các câu lệnh về Linux, làm việc toàn bộ qua command line, không còn UI để mình thao tác bằng chuột nữa rồi. 😄.

Tiếp đó mình thử deploy một số project về Laravel hoặc NodeJS, làm theo các tutorial trên google. Nào là setup các thứ như PHP, NodeJS, MySQL, Redis, hay Nginx để làm webserver, postfix để làm hẳn 1 mail server riêng. Làm sao để public IP của server để bên ngoài có thể gọi vào được, rồi mua mấy cái tên miền (giá rẻ thôi 😃) và làm sao để trỏ tên miền về địa chỉ IP của server để thay vì dùng IP thì mình dùng tên miền cho đẹp 😄.

Linux

Làm việc với server thì có một yếu tố rất quan trọng nữa là làm sao để server được bảo mật. Mình lại mày mò các tutorial hướng dẫn về HTTPS, Fail2ban, rồi dùng IP table để chỉ mở những port mà cần dùng, không mở thừa thãi port, rồi cách dùng Firewall, tạo account MySQL cho từng project, thay vì lúc nào cũng dùng account root. Về những vấn đề này thì bây giờ mình biết được là hầu hết các provider (Google, AWS, Azure,...) đã hỗ trợ chúng ta nhiều lắm rồi, mà không hiểu sao ngày xưa mình toàn làm tay 😄. Nhưng như thế lại hay, học thêm được nhiều.

Thọc thọc ngoái ngoái biết bao nhiêu lỗi lầm, cái VPS của mình chắc bị phá hỏng mất 3-4 lần, may là vẫn lưu snapshot (kiểu lưu lại trạng thái VPS, sau này lỗi thì có thể recover lại và dùng tiếp). Nhưng sau một thời gian thì mình thấy kĩ năng về Linux của mình cũng tăng đáng kể, toàn dùng command line, gõ trông như hacker 😄, trước còn "khinh" Linux: hệ điều hành gì mà cùi, chả có UI, nhìn command line xấu òm (tính mình cứ thích cái gì đẹp đẹp 😄). Và trong quá trình học nhiều về Linux và quản lý server, thì mình thấy các dev nước ngoài người ta rất là pro về Linux, và nhận ra mình vẫn còn kém xa so với họ.

Anh lead công ty cũ mình từng bảo: nếu chú muốn lên trình thì phải tập dùng linux đi. Trước nghe thì biết vậy, giờ mới thấy thấm thía...

Sau khi có cơ hội được sang Singapore làm việc, môi trường mới cho phép mình được làm nhiều thứ hơn, được tự chủ nhiều hơn. Môi trường mới, mình phải làm việc độc lập nhiều hơn, phải làm nhiều công đoạn trong quá trình làm phần mềm hơn (không chỉ mỗi code nữa 😃) gần như từ khi bắt đầu project đến lúc deploy và maintain, hầu như chẳng thể kêu được ai khi gặp lỗi, gặp bug, chỉ có google và stackoverflow là thầy 😄. Và do đó mình học được nhiều kĩ năng hơn.

Tới đây mình nghĩ là đã đạt điều kiện cần để là Fullstack developer. Phần dưới đây là hoàn toàn tùy chọn, các bạn có thể đọc tiếp để biết thêm hoặc chuyển xuống phần kết bài, mình có vài lời khuyên cho các bạn ở đó 😃

Lon ton vào thế giới DevOps với hi vọng cuộc đời bớt khổ

Nói đến DevOps thì rất rộng và bao gồm nhiều thứ không chỉ những thứ mình nói dưới đây. DevOps giờ đã là cả một ngạch riêng hẳn tương tự như Frontend Engineer, Backend Engineer, giờ có DevOps Engineer (đại loại là những người chuyên deploy, maintain project). Ở đây phần này mình nói tới những khía cạnh mình học được và đã áp dụng và thấy hiệu quả.

Docker

Khi còn làm ở công ty cũ ở Việt Nam trước khi qua Singapore, mình có được thấy anh lead setup sẵn project Laravel cho cả team dùng một thứ gọi là Docker (đọc là: "đốc cơ"), bọn mình thì vẫn cứ code như bình thường thôi, không thấy khác gì. Có hỏi anh ấy thì được biết là dùng Docker thì môi trường làm việc giữa các thành viên trong team giống hệt nhau (không phụ thuộc vào mình dùng win, mac, hay linux,...), đồng thời môi trường làm việc ở local giống hệt môi trường khi chạy production (chạy thật). Vậy là một niềm tò mò cực lớn lại trào dâng.

Lúc đó mình muốn tìm hiểu xem nó là cái gì và nó hoạt động ra sao, vì mình thấy "bức bối" khi có 1 góc nào đó của project mình đang làm mà mình lại không được hiểu hết về nó 😄 (ngựa non lại tiếp tục háu đá 😃).

Vậy là mình dành thêm thời gian rảnh ở nhà để học thêm về Docker, biết được: à nó là công cụ để ảo hoá môi trường làm việc, các package hay thư viện bên trong Docker độc lập hoàn toàn so với môi trường gốc, các ứng dụng sử dụng Docker thì gọi là container (đọc là: "cờn tên nơ"). Điều tuyệt vời khi mình dùng nó là nó nhanh, hiệu suất cao, không bị nặng nề như việc dùng máy ảo kiểu VM Ware hay VirtualBox như mình có từng thử, vì nó share hardware (CPU, RAM,..) với hệ điều hành gốc. Và hiện tại Docker đang cực cực phổ biến, sử dụng hầu hết ở các công ty nhỏ vừa và lớn: Tiki, Google, Facebook, Amazon,... và công ty cũ của mình 😄

Docker

Dùng Docker thì ta có thể viết được ứng dụng với đủ thứ thư viện: PHP, NodeJS, ... bên trong nó, được đóng gói lại thành 1 thứ gọi là Image, chạy được như bình thường và thực tế ta không cần cài trực tiếp những thứ đó vào hệ điều hành gốc. Mỗi Image lại có một file cấu hình đầy đủ chi tiết gọi là Dockerfile. Mỗi 1 project sẽ được mô tả đầy đủ ở file docker-compose. Điều này cực kì thuận tiện khi mà chúng ta phải làm với hàng chục, vài chục app và nhiều hơn thế 😄 (nghe cao siêu quá, xin cái demo coi 😁)

Mình lấy 1 ví dụ cho các bạn dễ hiểu hơn: ta có 1 project Laravel cho backend, frontend dùng VueJS, dùng MySQL cho database, Redis cho queue, và khi chạy thật ta sẽ cần 1 webserver (Apache hoặc Nginx, ở đây mình chọn Nginx). Ta sẽ bắt đầu setup để chạy được project này:

  1. Project dùng Laravel, đương nhiên phải có PHP -> cài PHP
  2. Xong xuôi lại phải cài hàng loạt extension cho PHP: php-xml, php-mbstring, php-zip,.....
  3. Cài composer, chạy composer install
  4. Dùng VueJS -> cài NodeJS, npm, chạy npm install
  5. Cài MySQL, setup user, account, setup database
  6. Cài Redis
  7. Cài Nginx, và setup được nginx thì cũng cần "kha khá" bước 😄

Thường thì chúng ta cứ thế search google và làm theo từng bước, cài trực tiếp vào hệ điều hành gốc (ở local hoặc trên VPS). Điều gì xảy ra nếu ta có cỡ 10 project, mỗi project lại có những yêu cầu lúc thì ít hơn khi thì nhiều hơn phần mô tả bên trên ? Bạn dùng Linux cài các bước trên sẽ khác gần như hẳn so với bạn dùng Window? Local dùng Window, server dùng Ubuntu ? Hay khi bạn cần chuyển 1 project sang một server hoàn toàn khác -> làm lại từ đầu từng bước-> ngồi nghĩ xem cần cài những cái gì, và gần như 96,69% sẽ cài thiếu 1 cái gì đó cho đến khi chạy bị lỗi mới nhớ ra 😄. Điều này mình từng gặp rất nhiều khi join vào 1 dự án và phải cài project của công ty từ đầu, thật sự là 1 ác mộng 😅😅

Nếu dùng Docker cho project bên trên, ta chỉ cần cài duy nhất docker (đương nhiên rồi 😄) khai báo các thư viện, extension trong file cấu hình Docker cho project, và sau đó dùng docker để load file cấu hình và chạy, toàn bộ thư viện, extension... sẽ được cài vào trong app của chúng ta chạy ở môi trường "ảo", chứ không cần cài trực tiếp vào máy thật. Sau này khi lên server hay đưa project cho người khác, ta chỉ cần gửi file cấu hình là người ta có thể chạy được và có môi trường giống hệt mình. Không cần phải đau đầu nghĩ xem nên cài gì, còn thiếu gì, đủ chưa,... 😄

Theo cảm nhận của mình các bạn biết dùng Docker và áp vào project là cuộc đời đã tươi sáng hơn rất rất nhiều rồi 😉. Nếu muốn cuộc đời tươi sáng hơn nữa, thì tiến tới phần tiếp theo nhé 😄

CI/CD - Từ code đến deploy

Đến phần này cũng khá là nâng cao rồi, nếu các bạn thực sự có nhu cầu có thể đọc thêm, không thì biết tới Docker là các bạn có thể dừng bài này ở đây rồi 😄.

Hiện giờ một số trang quản lý code như Gitlab (Github cũng có nhưng phải trả phí cho dịch vụ ngoài). Mình khuyến khích các bạn dùng gitlab vì họ cho free unlimited private repository. Và Gitlab có một dịch vụ đó là CI/CD (Continuous integration and continuous delivery - tích hợp liên tục, triển khai liên tục) dành cho các ứng dụng sử dụng Docker.

Gitlab_CI_CD

Phần này các bạn cần dành nhiều thời gian tìm hiểu mình chỉ xin nói qua về các mình áp dụng và học hỏi.

CI/CD là kể từ khi ta sẽ định nghĩa sẵn 1 loạt kịch bản cho project kể từ khi code được commit lên repository->đến deploy ra project thật (chạy thế nào, test ra sao, tiền xử lý, hậu xử lí cái gì,..), để các trang như Gitlab làm tự động toàn bộ thay cho chúng ta, việc của ta là chỉ tập trung vào code mà thôi 😄.

Cơ chế như sau (ở đây mình dùng Gitlab): khi có file cấu hình kịch bản sẵn rồi, ta để chung với folder project của chúng ta, commit code lên Gitlab, Gitlab sẽ tự động chạy test (thích bao nhiêu test ta cứ định nghĩa, test thế nào cũng toàn bộ do chúng ta định nghĩa), rồi Gitlab sẽ tự build Docker Image, rồi cũng tự push push Image lên Container Registry, cuối cùng là tự động update trên server thật luôn.. Quá trình này hoàn toàn tự động.

Nhờ vậy mà ta có thể code, commit, qua các test cần thiết để đảm bảo code chạy đúng và đủ sau đó triển khai ra server thật để user dùng các chức năng mới càng sớm càng tốt.

Khi biết tới CI/CD mình thấy công việc của mình đã nhàn đi rất là nhiều rồi. Nếu theo cách truyền thống là ta code ở local, test, commit code, lên server pull code về, install các thư viện cần thiết, build lại project, và restart, mất rất nhiều thao tác và phải tự mình làm hết. Giờ đây việc của ta là chỉ cần cấu hình 1 lần, và kể từ sau chỉ cần tập trung vào việc viết code giảm thiếu tối đa thao tác lặp lại.

Đến bước này thì cuộc đời cũng tươi sáng lắm rồi. Các bạn đọc đến đây là tắt được rồi 😄. Nhưng nếu các bạn lại muốn cuộc đời sáng thêm 1 nấc thì đọc tiếp phần dưới nhé.

Phần dưới nếu các bạn thực sự muốn thì có thể đọc và tự tìm hiểu thêm nhé 😄

Kubernetes

Ở bên này (Singapore) mình có hay đi tham dự các buổi seminar của những công ty như Facebook, Google, Amazon, Zendesk, Stripe,.. và mình cũng hỏi bạn mình làm ở Tiki (Việt Nam) thì được biết là các công ty này đều dùng Kubernetes (đọc là: "kiu-bơ-nấy-tịt-s) để chạy và quản lý projects.

kubernetes

Kubernetes là 1 platform để quản lý các ứng dụng container hay thực tế là các ứng dụng sử dụng Docker. Kubernetes là hàng của Google, Google phảt triển và sự dụng, ém hàng bao năm rồi, một vài năm trở lại đây mới public để cộng đồng sử dụng và đóng góp. Kubernetes được mô tả là production-ready (tạm hiểu là sinh ra để chạy production).

Sử dụng Kubernetes ta có thể:

  • quản lý các ứng dụng, tự động scale
  • tự động deploy -tự động "heal" (sửa chữa) project khi gặp lỗi
  • deploy project zero downtime: bình thường khi ta deploy project sẽ có 1 khoảng server sẽ bị down (có thể khá nhỏ < 1 giây) khi ta restart để cập nhật lại code mới, khi chạy thật mục tiêu của ta là làm sao để server luôn luôn hoạt động mọi lúc, không down dù bất kì 1ms nào 😄. Với Kubernetes thì sẽ không còn chuyện đó nữa (quá tuyệt vời ❤️), và việc này được Kubernetes làm tự động.
  • Load balancer: điều phối traffic để đảm bảo các app của chúng ta luôn hoạt động ổn định
  • Dễ dàng chuyển app của chúng ta từ trạng thái này sang trạng thái khác. Khi deploy mà gặp lỗi ta có thể chuyển ngay về trạng thái cũ khi mà app vẫn chạy bình thường.
  • ... vân vân và mây mây

Nghe thôi đã thấy sướng rồi 😄, mình rất tò mò về những thứ mà các công ty lớn họ sử dụng để xây dựng và phát triển sản phẩm của họ, cách mà họ quản lý chúng,...., Vậy là chú ngựa non háu đá lại tiếp tục học thêm về Kubernetes. Hiện tại đã áp dụng vào 1 - 2 project và thấy khá ổn.Và thật sự đi tức mức này và để hiểu được thì vẫn còn nhiều thứ thực sự đau đầu, dự định của mình là dần dần sẽ áp dụng lên toàn bộ các project mình làm.

Thứ chúng ta đã lãng quên

TEST - ôi nghe thấy đã thấy chán rồi. Cái này ai chả biết mà 😄. Lúc deploy chạy thật có user test cho rồi. Lỗi user kêu là biết ngay 😄

Mình chỉ xin nói ít dòng. Ngày trước mình cũng nghĩ như thế, và nhiều khi lúc code có những phần phải kiểm tra lại những do code nhiều quá đầu óc mụ hết đi rồi không nghĩ tới, và thành ra lúc deploy xong mới thấy những lỗi vớ vẩn hoặc thậm chí nghiêm trọng mà trong khi nó xuất phát từ những thiếu sót khi code (không nghĩ tới đủ các trường hợp, lỗi dữ liệu đầu vào,...)

Mình khuyên các bạn, Nên viết các test tự động cho project. Laravel có Laravel Dusk, Vue có bộ test riêng, NodeJs thì có Mocha, React hay React native cũng có những bộ test riêng, bla blo,....Ta chỉ việc viết test case sẵn, rồi chạy bằng 1 command là các test case đó sẽ được chạy tự động.

Test

Thôi phần này mình chỉ nói thế thôi không anh em lại chán (thực ra đọc đến đây dài là cũng chán lắm rồi 😄)

Bonus thêm 1 thứ đã lãng quên khác

Cấu trúc dữ liệu và giải thuật

😆😆😆😆😆😆😆

Algorithm

  • "Mình làm fullstack, cái phải học là Vue, là Node, là PHP, là Java, Docker,... Khi code có bao giờ phải dùng đến nào Stack, Queue, Linked List hay dùng Quick Sort để viết CSS JS bao giờ đâu????"
  • "Rồi rồi biết rồi, ai chả biết cấu trúc dữ liệu giải thuật là basic cho mọi thứ, biết rồi, chuẩn bị học đây" 😄

Định hướng trở thành Fullstack developer, đã từng có 1 thời gian dài mình ôm chặt suy nghĩ là không cần thiết phải học cấu trúc dữ liệu và giải thuật, vì nghĩ rằng khi code có bao giờ dùng tới, và giờ các ngôn ngữ bậc cao đã xử lý hết cho chúng ta rồi...

Phần này mình cũng không nói nhiều, chỉ muốn chia sẻ một chút. Một thời gian gần đây mình có tranh thủ chút thời gian rảnh, để xem thêm về CTDL & GT đồng thời giải các bài toán trên hackerrank, một thời gian mình thấy rằng khi viết code mình có sự tư duy nhiều hơn mỗi khi gõ 1 dòng code, ngày xưa thì gõ như cái máy, giờ hay nghĩ xem cái hàm này làm gì, làm thế nào rồi mới viết trước, giúp mình hiểu sâu hơn và đặc biệt là rèn được cái phải nghĩ trước khi viết thay vì viết như cái máy 😄

Mình khuyến khích các bạn, không quá đặt nặng nề, nhưng nên dành ra chút thời gian rèn luyện về CTDL & GT, đọc tài liệu, blog, làm challange trên các trang như kiểu hackerrank,... mỗi ngày mỗi lần 1 chút để hoàn thiện bản thân. 😉

Dấu chấm hết bài

Phù, cuối cùng cũng đọc tới cuối bài (cha nội này viết dài quá 😄)

Qua bài này chắc hẳn các bạn thấy mình là 1 người "tham", cái gì cũng muốn học. Đúng thật mình thấy mình là 1 người tham. Và vì cái "tham" đó nên mình buộc phải dành nhiều thời gian hơn để học. Với bản thân mình, sau này nhìn lại mình không muốn mình chỉ là một người sống cuộc đời lay lắt, đi làm đủ công ăn lương tối về nhà là hết. Mình hâm mộ Cristiano Ronaldo, và mình học được từ anh ấy tính khao khát có mọi thứ và các câu chuyện về sự kiên trì của anh để có được thành công hôm nay, và triết lý đó mình nghĩ không chỉ có thể áp dụng được ở bóng đá mà ở mọi lĩnh vực. 😄 (nghe triết lí to lớn ghê 😄)

Tất nhiên mình chỉ tập trung vào linh vực mình làm không có ý định ham hố quá nhiều, chủ yếu là quá trình phát triển và các công nghệ liên quan tới web và server, và hiện tại mình đã chuyển dần gần như chỉ làm với NodeJS, Vue và React (hoàn toàn không nghĩ việc sẽ nhảy sang mấy ngạch kiểu machine learning 😄)

Và dưới đây là một số lời khuyên mình dành cho các bạn:

  • Trở thành Fullstack Web Developer, các bạn hãy đọc tham khảo về 2 mục về frontendbackend trong bài viết của mình. Những thứ đó theo mình là cần thiết. Sau đó nên xem tới phần về Linux, còn các phần khác thì tùy theo các bạn muốn bản thân biết nhiều hơn hay không 😄.
  • Hãy đi thực tập, đi làm ở các công ty càng sớm càng tốt. Họ sẽ dạy cho bạn rất nhiều thứ.
  • Tự học, cái này mình nghĩ rất quan trọng đối với lập trình viên, nó sẽ mở ra cho các bạn rất nhiều thứ mới mẻ 😉
  • Kiên trì và dành nhiều thời gian hơn để trau dồi nâng cao giá trị bản thân.

Kiên trì là điều tối quan trọng mình muốn gửi tới các bạn. Vì thật sự, ngay cả với bản thân mình, trong quá khứ, mình đã từng có nhiều suy nghĩ: ồi làm machine learning/data science lương cao khủng thật chứ mấy ông Fullstack làm dăm ba cái web PHP làng nhàng thì được mấy đồng, hay cũng có lúc mình có hơi chút chút nghi ngờ về ngôn ngữ mình chọn, framework mình học nhưng thật may sau đó được gặp nhiều người đọc nhiều blog và mình nhận ra là mình phải kiên trì với lựa chọn của mình, kiên trì với con đường mình đã và đang đi.

Hi vọng rằng qua bài này mình có thể giúp được bạn nào đó còn đang băn khoăn thắc mắc về đường đi như thế nào nếu muốn trở thành frontend/backend hay fullstack developer.

Cám ơn các bạn đã theo dõi blog của mình, chúc các bạn luôn kiên trì và thành công trên con đường sự nghiệp và hẹn gặp lại các bạn vào các bài viết sau. ❤️


All rights reserved

Bình luận

Đăng nhập để bình luận
Avatar
@Naem
thg 8 25, 2019 9:56 SA

Hay quá bro, nhưng ông học nhanh thật đấy, một năm sau ra trường mà nhồi hết cả được đống đấy vào người =))

Xem thêm (5)
Avatar

ngày xưa là thử nhiều cái để biết mình muốn gì, giờ thì yên tâm công tác rồi 😄

Avatar

@Naem đọc bài viết mà có thêm động lực cày tiếng anh, chứ ra trường hơn 1 năm rưỡi rồi mà vẫn chán quá =))

Avatar
@ddthanhdat
thg 8 25, 2019 12:44 CH

Mình cũng di còn đường như cậu, nhưng trước đó mình không thích .net lắm.

Avatar

Đến bây giờ mình nhận ra rằng ngôn ngữ hay framework cũng không quan trọng bằng bạn hiểu 1 cái sâu như thế nào, oke rồi thì chuyển sang cái mới cũng sẽ dễ thích nghi thôi. Cố gắng nhé bạn 😉

Avatar
@johnson
thg 8 25, 2019 3:08 CH

đọc thôi cũng cảm thấy tràn ram não

Avatar

Anh chia sẻ một chút về cơ hội đi Singapo của anh đi ạ.

Avatar

Chắc a sẽ viết một bài riêng nho nhỏ để chia sẻ về may mắn của anh khi qua đây làm việc 😄

Avatar
@ddthanhdat
thg 8 27, 2019 9:27 SA

Hay đó, mong có cơ hội như cậu

Avatar
@tomhagen
thg 8 25, 2019 6:06 CH

Thánh học nhanh cmnr, mới thời gian ngắn mà học cả đống thứ vào người. Bái phục (y). À, nhân tiện mình tính vọc Digital Ocean, đang làm việc với Nodejs & React, bro cho lời khuyên đi, về mảng devop mình khá là ngu. Ten kiu !

Avatar

Thực ra những phần về frontend và backend mình được học từ quãng thời gian đi làm từ lúc sinh viên (ở trong bài mình chia sẻ), còn khi ra trường qua sing làm thì mình mới rèn thêm chút ít thôi. Chứ mình cũng có phải cái máy mà 1 năm nhét vào được đâu bạn 😄

Avatar

Chắc tại mình dùng Digital Ocean đầu tiên nên mình thấy nó dễ. Nhưng cảm nhận là bên đó nó không có quá nhiều services như bên AWS, Google hay Azure (dễ làm ae mới học bị hoảng khi sử dụng vì không biết dùng cái nào), và bên DO giao diện khá là ổn, trực quan, giá còn rẻ nữa chứ, dùng bao nhiêu hết bằng đó. 😉

Avatar
@vqdat169
thg 8 26, 2019 12:53 SA

Đúng là tuổi trẻ tài cao. Chúc em ngày càng thành công nhé.

PS: Trong bài có phần e nói về Python ấy, thật ra Python mạnh nhất ở mảng ML và Computer Science, đặc biệt là các thư viện của nó. Web cũng không phải ko mạnh, nhưng do NodeJS và Laravel quá tốt cho việc build thôi.

Avatar

Em cám ơn anh đã theo dõi. Chúc anh mọi điều tốt đẹp. Vè phần cảm nhận của e về Python, chắc do cảm nhận cá nhân của e thế thôi ạ, chứ nói về ML hay data science thì python vẫn rất bá 😄

Avatar
@vqdat169
thg 8 26, 2019 11:55 CH

Muốn upvote mà cũng ko dc, do toàn đi comment dạo thôi 😃)) Anh cũng từng thử Django rồi, đúng là nó hơi rối 1 chút so với Laravel hay Express. Chưa kể nếu ko quen cách code của Python thì cũng mệt nữa 😃)

Avatar
@thai
thg 8 26, 2019 2:52 SA

để đi sin cần tiếng anh như thế nào bạn ơi. Giờ học xong biết bao giờ mới đi được huhu

Avatar

Chủ yếu là giao tiếp bạn à, ngành của chúng mình đi làm công ty nên cần tiếng anh giao tiếp nhiều, rất rất rất rất rất quan trọng. Tiếng anh đủ giao tiếp + skill phù hợp với job là được bạn à

Avatar
@nguyennhudat
thg 1 8, 2020 7:09 SA

có cần IELTS hay gì ko cau @maitrungduc1410

Avatar

mình theo hướng đi làm (engineering) nên không cần bằng gì cả, chủ yếu là tiếng anh giao tiếp bạn à

Avatar
@tungaqhd
thg 8 26, 2019 4:04 SA

Em mới bỏ PHP qua học NodeJs, đang cảm thấy hơi hoang mang về khả năng có việc sau này. Mn cho e hỏi có nên học kèm React với Nodejs không ạ ?

Avatar

Node với React quá là tuyệt vời luôn e, 2 cái đó giờ tuyển dụng rất nhiều, Sự kết hợp quá hoàn hảo.

Cứ kiên trì nhé em 😉

Avatar
@quy
thg 8 29, 2019 9:30 SA

haha cũng chưa tuyệt với lắm đâu anh @maitrungduc1410 . 😃)

Avatar
@tungaqhd
thg 9 26, 2019 8:43 CH

dạ em cảm ơn anh 😄

Avatar
@phuongnm153
thg 8 26, 2019 4:13 SA

Hi tác giả + ae dev,

Mình có chút nhận xét khách quan sau khi đọc bài viết này. AE có thể tham khảo nhưng đừng gạch đá nhé.

Bài viết rất dài, nói đủ mọi mảng lĩnh vực. Fullstack không nhất thiết phải đủ mọi skills kể trên.

Khi học và làm 1 ngôn ngữ hay 1 skill nào đó thì nên thành thạo nó lên mức master. Nó có thể thể hiện qua thời gian bạn làm việc với nó (ở công ty bạn làm, ở project bạn tự build nhưng nên dc release, public có hữu ích j đó). Như tác giả thì có những cái chỉ học vài tháng, hoặc tự làm nhưng k thấy kể dc sản phẩm làm ra bởi thứ được học.

Có 1 câu nói mình đọc được trong quyển "The Book Of Leadership": trước khi bạn xác định học hay làm cái j đó mà muốn từ bỏ nó vì chán hay học, làm nó thât expert. Nên mình cũng khuyên các bạn muốn theo hướng fullstack thì hãy expert ở skill mình đang làm rồi tiếp tục cái khác như đừng học dc chút rồi cho vào profile.

Mình mới chỉ đi làm có +7 năm exp mà chưa học đủ như bạn tác giả này +1 năm exp.

Nói vậy thôi mình đi cài win tiếp đây, khách còn bo cho 50k :v

Xem thêm (3)
Avatar
@thang.nv
thg 8 27, 2019 7:57 SA

Chủ thớt cũng giống mình 4 năm trước. Rất thích học cái mới. Và học cũng rất nhanh. Nhưng về sau có ai hỏi kĩ hơn về 1 vấn đề nào đó thì mới nhận ra rằng basic mình bị rỗng nhiều quá, hầu như không "hiểu" rõ. mà chỉ ở mức độ "biết" thôi. Bây giờ mình đang cải thiện điểm này.

Nên mình khuyên đã mất công học cái gì đó thì nên học nó đến master. Vì sau này đi làm ở cty nào đi chăng nữa họ vẫn muốn mình master hơn là fullstack.

Với cả còn 1 điểm nữa mình muốn nhấn mạnh là cần định nghĩa rõ level của fullstack. Chỉ cần học mỗi thứ 1 ít thì đc gọi là fullstack hay phải master/pro từng cái mới đc gọi là fullstack. Mình trước nay vẫn hiểu cần phải "pro" từng cái mới đc gọi là fullstack.

Trước có đọc 1 quyển sách họ nói là chúng ta cần nên phân biệt rõ ràng giữa 2 khái niệm "hiểu" và "biết". Đa số dev bây giờ vẫn trong level là biết thôi (tức là ở mức độ dùng framework), còn đa số chưa "hiểu".

Avatar
@ddthanhdat
thg 8 27, 2019 9:35 SA

Theo như mình hiểu tác giả đang theo con đường là JS: vuejs, node js. Thì bản thân mình thấy đều chung là JS. Nên việc chuyển giữa 2 cái này là ổn đó chứ. Mình cũng đam mê về JS nên đang đi con đường này.

Avatar
@halozeen432
thg 8 26, 2019 5:52 SA

Tuyệt vời !!! Đọc lôi cuốn hết sức. Cảm ơn thím đã dành công sức để chia sẻ. Ngồi đọc chỉ hết tầm 30phút. Chứ thím viết cả ngày mới ra được cái đống này ấy nhỉ 😄 Chúc thím sức khỏe thành công hơn nè.

Avatar

Cám ơn bạn đã theo dõi, con tim cô đơn này đã phải nghĩ nát óc xem viết bài chia sẻ với các bạn thế nào. Chắc vì thế nên đọc lại thấy hơi nát 😄

Avatar
@laudaikinhdi
thg 8 26, 2019 7:09 SA

Hướng dẫn thêm về server đi bạn

Avatar

Cám ơn bạn đã theo dõi. Bạn có thể cho mình một chủ đề, nếu trong khả năng mình rất muốn được chia sẻ với mọi người 😄

Avatar
@laudaikinhdi
thg 10 21, 2019 3:22 SA

Mình thấy bạn có viết mấy file config serve(nginx, apache). Mà mình đọc nhiều chổ không hiểu. Bạn có thể làm một bài hướng dẫn chi tiết hơn k

Avatar

để viết thành 1 bài thì mình sợ là nhiều bạn sẽ không hiểu, vì nó khá đi sâu vào bên server, nên nếu có gì thắc mắc bạn có thể ping qua facebook cho mình nhé

Avatar
@xdangminhtruongx
thg 8 26, 2019 12:46 CH

Bạn sinh năm bao nhiêu nhỉ ? Mình cũng đi làm được 2 năm rồi mà chẳng tự tin chút nào, bạn học chừng đó thứ và lại có khả năng tiếng anh nữa. Thật đáng ngưỡng mộ. Bài tới bạn chia sẽ về hành trình và cơ hội mà bạn sanglàm việc ở Singapore được không ? 😄

Xem thêm (4)
Avatar
@xdangminhtruongx
thg 8 27, 2019 8:10 SA

(tat) Nhìn người ta mà học hỏi nhé. M chỉ đc cái mất nết =))

Avatar
@Naem
thg 8 27, 2019 8:41 SA

hihi =))

Avatar
@light
thg 8 26, 2019 3:36 CH

Anh đúng là cảm hứng học của em rồi.

Đúng là dân Bách khoa 😂😂 Em giờ học năm cuối rồi mà vẫn chỉ biết mỗi HTML, css, javascript😅 Php thì em vừa học được mấy tháng mà giờ lại đú thêm laravel trong khi php thì như con gà Giờ anh cho em cái định hướng a

Avatar

về con đường của a thì a đã chia sẻ trong bài đó e, nếu e cũng theo thế thì e có thể tham khảo (ngôn ngữ khác thì cũng thế 😃 ), a thấy cách e học được nhanh nhất và nhiều nhất là đi thực tâp/đi làm ở công ty, họ sẽ dậy e rất rất nhiều thứ 😄. Điều tiếp theo là chăm chỉ rèn luyện, tự học để trau dồi thêm thật nhiều. E hãy học "muốn" nhiều hơn, khi em muốn thì em sẽ làm và e sẽ tiến bộ lên thôi 😉

Avatar
@duongnamhaui
thg 8 28, 2019 2:00 SA

Anh viết hay quá, rất tự nhiên, hóm hình và đầy nhiệt huyết, chờ đón những bài viết mới từ anh!

Avatar

cám ơn e đã theo dõi. Lúc viết bài a viết theo cái cảm xúc của một thanh niên hơn 2 chục tuổi với tâm hồn của người 12 tuổi nên câu từ nó trẻ thơ như thế đó 😄

Avatar

Rất nể phục thớt về khoản hấp thụ các công nghệ mới ✌️ Bài viết hay và lôi cuốn!

Avatar

Cám ơn bạn 😄

Avatar

Mong chờ bài viết về cơ hội được làm việc ở Sing của Thớt ạ (hehehe)

Avatar
@manhquan
thg 8 29, 2019 7:17 SA

Chào bạn. Mình rất muốn làm việc ở Singapore. Bạn có thể làm 1 bài chia sẻ về những yêu cầu của các công ty bên đó được ko.

Avatar

Mình sẽ chia sẻ trong bài viết tới để các bạn có thể tham khảo nhé 😉

Avatar
@quy
thg 8 29, 2019 9:40 SA

Mình hâm mộ Cristiano Ronaldo và mình không bao giờ xem đá bóng :V

Avatar

A vẫn xem đều mà e. Đều đều 1 năm hẳn 1-2 lần. 😄 😄 😄

Avatar
@hoaihuy
thg 8 31, 2019 7:15 SA

bài viết hay quá ❤️

Avatar

Cám ơn bạn đã theo dõi

Avatar
@nguyenkhank
thg 9 1, 2019 5:21 CH

Ồ, bài viết khá hay. Cũng như nhìn lại được đâu đó hình ảnh của mình ngày xưa =))) chú ngựa con háu đá... Bạn fullstack mà cũng chuyên về bên devops nữa, thực là võ công cao cường.

Avatar

DevOps mình chủ yếu cũng chỉ docker và CICD là nhiều, đủ để có thể tự deploy và maintain project vừa và nhỏ, chứ ko chuyên như bạn nghĩ đâu 😄, vẫn code Node và PHP bình thường thôi 😄

Avatar

Còn trẻ mà đã tích lũy nhiều như vậy rồi, tinh thần học hỏi + sự tò mò sẽ còn tiến xa trong sự nghiệp. Chúc em thành công! À, hỏi thêm tác giả chút là dạo này Machine learning và blockchain cũng đang đc bàn tán xôn xao nhiều, em có định mày mò tìm hiểu thêm 2 lĩnh vực này không?

Avatar

Cám ơn anh đã theo dõi 😄

Mấy năm nay e thấy ML và blockchain cũng khá là nổi, mọi người cũng đổ xô đi học, job nhiều hơn và mặt bằng chung là lương cao hơn hội fullstack bọn e 😄, e cũng từng thử với blockchain vào ĐATN, nhưng sau đó ko thực sự thâý hứng thú, còn với ML/Data mining,...e cũng thấy mình ko hợp với hướng đó, và vẫn xác định là mình chỉ tập trung vào cái e đang theo đuổi chủ yếu là web/server thôi anh ạ. 😄

Avatar
Avatar
@tuananhbfs
thg 9 20, 2019 10:21 SA

Chào bạn Đức, lại là mình đây 😃)

Rất cảm ơn các bài viết của bạn đã giúp đỡ mình rất nhiều khi nhập môn Laravel và Vuejs. Mình năm nay 31 tuổi rồi, quá trình đi làm 5 năm vừa qua của mình là 1 câu chuyện khờ buồn.

Bây giờ mình gần như là Xóa acc cày lại cái nghề dev này, trước đây mình đi làm ở các công ty thiết kế web nhỏ nên kỹ năng và kiến thức khá là ít, gần đây mới nhận ra và định hướng lại mục tiêu nghề nghiệp.

Mới đọc dc 1/2 bài này vì những thứ về sau mình chưa hề biết gì, sẽ lưu bài viết này của bạn để để nghiên cứu từ từ. Suất mấy năm nay mình chỉ rút dc 1 kinh nghiệm đó là "Thông tin là vàng". Thank you

Avatar
Avatar

Cám ơn a đã theo dõi blog của e,

Em nghĩ mọi sự khờ dại sai lầm cũng đều là những bài học tốt để mình hoàn thiện bản thân. Dù a 3x nghĩ thì có vẻ hơi "dừ" nhưng vẫn còn nhiều thời gian để phát triển lắm anh ạ.

Chúc anh thành công trên con đường a đang chọn 😄

Avatar
@huyad
thg 10 28, 2019 6:32 SA

Nhưỡng mộ bạn quá. Bài viết vừa hay vừa hài hước 😛

Avatar
@phuxm01
thg 11 1, 2019 6:50 SA

có ai ở đây sv năm 3 như em đang làm php - laravel base ko , hiện tại đang tìm hiểu thêm vuejs để xây dụng trang admin sử dụng cùng vuejs cho nhanh ^^ . chủ thớt cho xin ý kiến với ạ

Avatar

được đó e, php laravel vuejs quá ổn luôn rồi, công việc bây giờ cũng tuyển nhiều php laravel (vue thì ở VN chưa nhiều lắm như react), nhưng vẫn rất oke, tiếp tục cố gắng nhé bạn

Avatar
@phuxm01
thg 11 5, 2019 2:26 SA

anh có skype hay telegram ko anh , e có mấy thứ ko hiểu mong dc a giải đáp ,giúp đỡ .

Avatar

e ping vào facebook của a nhé: @maitrungduc1410

Avatar
@hoc_anms
thg 11 25, 2019 3:48 SA

Cảm ơn bài viết tâm huyết của đại ca nhé, Vue + Node = Nostack Dev rồi ạ hehe, just do it !

Xem thêm (2)
Avatar
@maitrungduc1410
thg 11 25, 2019 9:06 SA

chắc chắn rồi nhé e, Docker cũng là "món" a rất mê 😄

Avatar
@hoc_anms
thg 11 26, 2019 3:40 SA

dạ vâng anh ơi, em ngồi ngay ngắn và lót dép hóng rồi nhé 😄

Avatar
@tungnt
thg 3 6, 2020 5:23 CH

Mặc dù những nội dung quan trọng trong ngành thì mình chẳng hiểu gì nhưng con đường trải qua thì thật nể thằng bạn mình. Tôi vẫn nhớ mấy hôm ở nhờ nhà ông tự thắc mắc bảo wtf cứ đeo tai phone ban đêm vào cày ghê thế, ham thế cơ à 😃)

Avatar
@tungnt
thg 3 6, 2020 5:24 CH

By the way, văn phong viết hài hước, thú vị vch 😂

Avatar

haha, sao cũng mò vào đây đọc blog à 😄

Avatar
@YukiDouji
thg 8 4, 2020 5:04 SA

đang thiêu thân vào .NET đây 😦 huhu học Java nhưng làm cái này công nghệ các thứ xài khác luôn á. Cơ mà bác học tiếng anh + niềm đam mê với nghề kiếm đâu ra thế nhỉ. 😮(((( . Em thiếu nghị lực quá. Cơ mà nhìn bài này thấy xong lại thấy bản thân có định hướng rõ ràng hơn một tí này :3 thank u. À bác cho em kết bạn với mai sau có gì hỏi hỏi hay cần tư vấn gì có người giỏi thế này cũng thích. hehe

Avatar

Ngày xưa lúc học đh mình muốn được đi nước ngoài nên chăm apply học bổng mà cái nào cũng đòi tiếng anh cả, những năm cuối thì muốn đc làm ở nước ngoài nên nhận thấy tiếng anh càng phải có.

Có một điều nữa mình thấy là ở đại học anh em theo học CNTT rất lười học tiếng anh, nên là phải "tranh thủ" lúc hội đó lười thì mình phải đi học ngay 😄

Còn về đam mê nghị lực với nghề thì mình thấy chỉ là mình muốn nhiều hơn bạn chút thôi, nên phải làm nhiều hơn để đạt được những điều đó 😉. Bạn cũng có thể "tập" muốn nhiều hơn như vậy 😉

P/s: kết bạn qua FB của mình nhé (tên này luôn)

Avatar
@YukiDouji
thg 8 5, 2020 7:07 SA

:3 đã gửi request ehehe nào có gì vọc vạch docker chắc phải hỏi bác nhiề

Avatar

🤙🤙

Avatar
@Thanh.Phan
thg 11 6, 2020 6:33 SA

Mình flow bro cũng đã lâu. Cứ tưởng bro làm devOps cho bên Sun thôi chứ 😄

Avatar

ai cũng nghĩ mình làm ở Sun hết á 😄 😄. Thực tế là mình chưa làm ở đó bao giờ.

Chắc do mình active trên Viblo 🤣🤣

Avatar
@Croud141
thg 11 17, 2020 7:43 CH

Hello anh, lại là em đây mong anh không phiền với kha khá những comments "hỏi bài" đến từ e 😂😂😂 Em đã học qua php (code thuần + laravel) và hiện đang code frontend (vuejs). Em rất thích js nên đã bắt đầu tự học nodejs. Tuy nhiên em lại không biết nên bắt đầu từ đâu và em muốn tham khảo ý kiến anh về một vài vấn đề sau:

  1. Có nhiều framework nodejs nhưng em không biết liệu có nên bắt đầu học nodejs bằng cách code chay không ạ (không dùng framework chỉ nodejs không). Và nếu có thì anh có thể chia sẻ cho em vài bí kíp nếu có tài liệu thì tốt quá ạ 😝😝😝 Vốn dĩ em hỏi câu này vì em thấy nodejs không cũng đã hỗ trợ kết nối dtb, tuy nhiên về những thứ như bảo mật hay bắt request thì em chưa tìm thấy tài liệu nào (hoặc do em chưa tìm đủ).
  2. Em đã thử tìm một số tutorials và họ đều hướng dẫn với expressjs theo anh nếu mới học nodejs mà học luôn expressjs thì liệu có bị hổng kiến thức về nodejs k ạ. Vì em vẫn đang băn khoăn về việc nên học chay nodejs trước (nhưng đang gặp khó khăn trong việc tìm tài liệu và không biết bắt đầu từ đâu) hoặc (học theo những tutorials với expressjs nhưng lại sợ bị hổng một số kiến thức cơ bản về nodejs).
Avatar
@maitrungduc1410
thg 11 18, 2020 2:50 SA

a cũng là fan JS nè 😄. Con đường học hành của e nom cũng như a đó, ban đầu a cũng học HTML thuần, sang Jquery rồi laravel thuần, sau đó chuyển qua Vue và giờ làm cả Vue và NodeJS

  • Express là 1 sự lựa chọn tuyệt vời cho người mới học vì độ đơn giản của nó, đó là lí do vì sao e search toàn thấy người ta hướng dẫn Express. A nghĩ ban đầu e dùng luôn express cũng ko sao, a ngày trước cũng thế chứ ko làm "chay" tất cả mọi thứ. Thực ra Express thì kiến trúc của nó đơn giản, chả hơn "chay" là bao, ko có nhiều thứ do đó nên e sẽ phải làm nhiều hơn, trong docs của nó ko có đâu mà e phải tự tìm hiểu, tự cài và ghép các thành phần vào với nhau để có 1 project hoàn chỉnh: có DB thì phải tự cài và setup mongoose, setup kết nối đến DB, retry, authentication thì phải setup jsonwebtoken, dùng queue thì phải setup Bull,...ý a ở đây là e sẽ phải làm nhiều hơn và nó rất tốt cho người mới học vì e sẽ học đc nhiều. Ko phải lo lắm đâu, làm express ngay ban đầu cũng đc nhé e 😉
  • Còn tự học Express thì e nên tìm các project về CRUD, realtime chat, blog, simple social network. E tìm theo dạng series họ hướng dẫn từ đầu tới cuối ấy nhé (trên youtube nhiều lắm). Stackoverflow là nơi e tìm kiếm cách fix các lỗi liên quan. Internet là người thầy vĩ đại nhất của a trong quá trình học và làm 😉
  • Khi e code thành thạo e có thể cân nhắc học NestJS (cũng là 1 framework node), cái này a đang làm 1 thời gian rồi và thấy kiến trúc của nó khá tốt, hỗ trợ e làm rất nhiều thứ (DB, security, queue, microservices,...), e đỡ phải làm những việc đó đi rất nhiều, code 100% typescript (khi code ổn với JS e nên học Typescript vì giờ đi làm hầu như người ta chuộng Typescript hơn vì nó giúp hạn chế nhiều lỗi lầm, làm theo team rất tốt). Nest gần đây nổi lên rất hot trong community nodejs vì kiến trúc tốt, hệ sinh thái nhiều, đc maintain rất là active chứ ko như express, koa, loopback,...
Avatar
@Croud141
thg 11 28, 2020 7:55 SA

@maitrungduc1410 Giờ em mới có thời gian vào reply, cảm ơn lời khuyên của anh ạ. Anh cho em hỏi thêm một câu nữa ạ 😝. Khi e học thì e thấy có khái niệm về Buffer và Stream, em đọc khái niệm thì có hiểu qua. Tuy nhiên những ví dụ trên docs hay trên các bài viết khác e đều thấy họ dùng cho việc đọc ghi file. Vậy anh cho em hỏi là 2 khái niệm này có thực sự cần thiết không hay chỉ cần nắm cơ bản thôi ạ. Nếu cần thiết thì nó được áp dụng như thế nào ạ? Em cảm ơn a nhiều.

Avatar
@maitrungduc1410
thg 11 28, 2020 1:13 CH

@Croud141 Về trải nghiệm bản thân a thấy ít khi phải trực tiếp dùng tới Buffer (Stream thì lại càng ít gần như không bao giờ). E nắm cơ bản bao giờ gặp vấn đề thì tìm hiểu sâu hơn là oke rồi 😉

Avatar
@chalkybug
thg 4 26, 2021 6:41 SA

good bài viết hay lắm

Avatar
@njkn
thg 1 20, 2022 4:09 SA

bài viết hay lắm ạ, em đọc khá là lâu, thì chắc anh viết lâu lắm nhỉ, cám ơn anh rất nhiều, bài viết rất trau chuốt. Chúc anh thành công

Avatar

thanks e, viết đc 1 bài cũng khá là lâu nhưng mọi người thấy hay và hiểu là a thấy vui rồi ❤️

Avatar

😅Bài viết trải lòng của anh hay quá ạ , e sv năm nhất thú thật đọc được nửa là next luôn r 😅 . Tiện thể anh cho e hỏi , hiện tại ở trường thì e đã học cơ bản về c++ , hướng đối tượng c++ , cấu trúc dữ liệu và giải thuật .E muốn tương lai theo ngành web thì nên bắt đầu xuất phát học cái gì ạ ~~~~

Avatar
@maitrungduc1410
thg 6 19, 2022 10:46 SA

nếu e theo web thì HTML, CSS, JS là thứ ko thể ko biết 😃, sau đó thì lên dần tới web framework/library như React, Vue, Angular, và đẩy dần tiếp tới backend nếu như e muốn lên thêm nữa (nodejs, php, java .....)

Avatar

😬@maitrungduc1410 e cảm ơn anh ạ , thế về những thứ e học ở trường kia , thì có cần thiết phải học thật kỹ hay phải tạo ra sản phẩm k ạ , hay là mình có thể nhảy sang hẳn để học web luon z a 😬

Avatar

😄Bài viết hay quá ạ 😄 Khum biết anh có nhận đệ tử không ạ !! E mới chập chững học nên còn nhiều khó khăn nên mong muốn có gì a giúp đỡ ạ

Avatar

có gì e nhắn qua đây hoặc facebook cho a đều đc nhé, link FB ở bio

Avatar
@Thanh030103
thg 9 23, 2022 1:44 CH

Cám ơn anh. Tình cờ đọc đc bài viết tâm huyết và hành trình của anh e thấy có động lực lắm. Cám ơn anh nhiều 🤗

Avatar

cám ơn e đã theo dõi ❤️ ❤️

Avatar
@anduy1712
thg 2 4, 2023 4:05 SA

Hay quá anh ơi, tuy là không liên quan tới bài viết nhưng không biết là để nhồi nhét 1 đống thứ như thế này, anh có phải đánh đổi gì không ạ, kiểu như là thời gian, các mối quan hệ, tình cảm...

Avatar

cám ơn e đã theo dõi.

Dùng từ "đánh đổi" thì không đến mức đó, chỉ là a thích việc a đang làm thôi, hầu như a luôn ngồi máy tính cả ngày, 7 ngày 1 tuần và quanh năm: để làm việc, để vọc vạch những cái mới, làm dự án riêng,... Đúng là vì thế mà a cũng ít có thời gian hơn cho các mqh bên ngoài, nhìn đi nhìn lại cả ngày chỉ ở trong phòng với cái laptop. Nhưng a thấy thích những việc a đang làm, nó giúp a phát triển, học/làm đc nhiều hơn, kiếm cũng đc nhiều hơn nữa 🤣🤣🤣.

Avatar
@dev032422
thg 3 11, 2023 1:43 CH

thank bro đã chia sẻ

Avatar
@maitrungduc1410
thg 3 15, 2023 11:33 SA

😍😍cám ơn bạn đã theo dõi 😍

Avatar
@hieu_db_d1
thg 4 8, 2023 7:39 SA

Anh nói đi, mỗi ngày anh học 25 tiếng phải không?, phục anh quá. 😦)

Avatar

ko e, để thời gian tập gym nữa chứ 🤣

Avatar
@teracom22
thg 2 26, 2024 4:48 SA

Bro đúng là Pro !!!

Avatar

cám ơn bạn đã theo dõi ❤️

Avatar
@Khanhzz17
thg 6 26, 2024 4:20 SA

Bài viết hay quá. Mình bằng tuổi bạn, cũng k58 BK, nhưng cuộc đời bị trật vài nhịp. Mình đang làm thuần FE, đang muốn phát triển kỹ năng thêm. Mình đã đọc hết bài viết, như cơn mưa rào giải hạn. Cảm ơn những chia sẻ của bạn nha

Avatar

chúc bạn tìm ra con đường cho riêng mình, 😊

Avatar
+249
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí