All posts by Phạm Huy Hoàng

Tôi là Phạm Huy Hoàng, một developer. Thuở còn là sinh viên, tôi từng có những thắc mắc, trăn trở về technical, về con đường nghề nghiệp, nhưng không có ai giải đáp. Blog này là nơi tôi chia sẻ những kiến thức, kinh nghiệm mà mình đạt được trong quá trình làm việc và trải nghiệm. Mong rằng nó sẽ giải đáp phần nào những khúc mắc, trăn trở cho những bạn sinh viên như tôi ngày xưa. Cảm ơn bạn đã bỏ thời gian đọc những dòng tôi chia sẻ.

Tới một trình độ nào đó, các bạn đừng nên đọc blog của Code Dạo nữa

Dạo gần đây, mình hay trò chuyện với nhiều bạn đọc blog. Có bạn đang là sinh viên năm 2 năm 3, có bạn sắp ra trường, có bạn đã đi làm được 1,2 năm.

Nhiều bạn đi làm được 2, 3 năm có tâm sự với mình thế này: Em nói anh Code Dạo đừng buồn; hồi trước em hay đọc blog của anh Code Dạo lắm. Đi làm một thời gian, em cũng đọc ít lại, tại có cái em biết rồi, có cái không hữu ích với em nữa!

Nghe nói vậy, mình không buồn mà còn rất vui =)). Thật đấy, khi đã đạt tới 1 trình độ nhất định, bạn nên … nghỉ đọc blog của Code Dạo mà nên tìm những nguồn khác hay hơn.

(Nguồn nào hay thì mình để dưới cuối bài viết, các bạn kéo xuống cuối cùng nhé!)

Continue reading Tới một trình độ nào đó, các bạn đừng nên đọc blog của Code Dạo nữa

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 3: HashTable và Set, Graph và Tree

Ở phần 2, bọn mình đã ôn lại những cấu trúc dữ liệu rất cơ bản như Array, LinkedList, Stack and Queue rồi. Ở phần này, tụi mình sẽ tìm hiểu thêm về các cấu trúc dữ liệu hay ho nhưng ít dùng hơn như HashTable, Set, Graph và Tree!

Mình sẽ giải thích sơ về độ phức tạp, ứng dụng của chúng, cũng như những bài toán các bạn hay gặp với các cấu trúc dữ liệu này nhé.

 

Đây là phần 3 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 3: HashTable và Set, Graph và Tree

Tôi đã đến với ngành lập trình như thế nào?

Học thuật toán mấy bài liền chắc anh em cũng mệt. Do vậy, hôm nay Code Dạo sẽ tâm sự mỏng với anh em về con đường đã đưa mình tới ngành lập trình nhé!

Thời xưa, ngành CNTT cũng chưa hot như hiện tại. Báo đài không đưa tin việc nhẹ lương cao ngàn đô; các bậc phụ huynh cũng chả rõ làm lập trình là làm cái gì?

Thuở ấy cũng không có mấy thằng nghệ danh Code Dạo, lấy danh lập trình viên, lên Youtube dụ dỗ các em theo ngành. Muốn tìm gì phải xem TV hoặc đọc tạp chí.

Đôi khi ngẫm lại, mình thấy có khi là không phải mình chọn cái ngành này, mà là dòng đời đưa đẩy để mình đến với nó đấy các bạn ạ! Thôi mào đầu cùng dài rồi, kể cho anh em nghe cho nóng nhé.

Continue reading Tôi đã đến với ngành lập trình như thế nào?

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 2: Array và Linked-List, Stack và Queue

Ở phần 1, bọn mình đã ôn lại một số khái niệm như Big-O Notation, Time và Space Complexity rồi.  Bạn nào chưa đọc thì đọc lại mới hiểu được trong phần 2 này nha.

Trong phần này, tụi mình sẽ ôn lại những cấu trúc dữ liệu rất cơ bản như Array, LinkedList, Stack and Queue nha!

Mình sẽ giải thích sơ về độ phức tạp, ứng dụng của chúng, cũng như những bài toán các bạn hay gặp với các cấu trúc dữ liệu này nhé.

Đây là phần 2 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 2: Array và Linked-List, Stack và Queue

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 1: Ôn lại về Big-O Notation và độ phức tạp

Thay vì ngồi học mấy công nghệ cao siêu, kì này tụi mình ngồi học lại cơ bản, ôn lại kiến thức về thuật toán, về các cấu trúc dữ liệu thôi nhỉ?

Kiến thức về thuật toán không được dùng hằng ngày trong việc code, nhưng nó giúp bạn viết code tối ưu hơn, xử lý nhanh hơn. Ngoài ra, rất nhiều công ty bây giờ khoái phỏng vấn bằng thuật toán.

Số lượng thuật toán, cấu trúc dữ liệu có rất rất nhiều, kể vài quyển sách chưa hết. Tuy vậy, tụi mình chỉ cần tập trung vào 8 cấu trúc dữ liệu cơ bản này là được!

96,69% các bài phỏng vấn, leetcode, thuật toán … đều dựa trên 8 cấu trúc dữ liệu này, và 1 số biến thể của nó. Nắm vững 8 cấu trúc dữ liệu này, biết cách sử dụng nó là các bạn đã có kiến thức kha khá rồi nhé!

 

Đây là phần 1 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 1: Ôn lại về Big-O Notation và độ phức tạp

Từ Thuyết Cửa Sổ Vỡ, đến những dòng Code tởm dần đều theo năm tháng

Thuyết “Cửa Sổ Vỡ” ra đời vào năm 1982, dựa theo 1 quan sát khá kỳ lạ:

  • Những căn nhà/ô tô có một cửa sổ bị vỡ, nếu không được sửa chữa kịp thời, dần dần sẽ bị dân phá hoại… đập hết các cửa sổ còn lại
  • Đường đi bộ, đất trống khi bị xả rác, nếu không được lau dọn kịp thời, dần dần sẽ thành nơi dân tình ra tổng hết rác thải vào

Nguyên nhân là vì sao:

  • Khi thấy cửa sổ không được sửa, dân phá hoại sẽ nghĩ “nhà này chắc bỏ hoang, đập chắc cũng không ai quan tâm”.
  • Khi thấy rác chất chồng, dân xả rác sẽ nghĩ “chỗ này ai cũng xả rác, mình xả thêm có sao đâu?

Điều này được mấy bác cảnh sát và các nhà tâm lý học đồng tình. Có những hư hỏng, phá hoại nhỏ (cửa sổ vỡ), nhưng nếu để lâu không quan tâm sẽ trở thành những hiểm hoạ to lớn.

 

Ủa mà cái thuyết lạ lol này thì có liên quan gì đến code, đến lập trình đâu nhỉ? Ấy vậy mà có đấy, bạn đọc tiếp sẽ rõ.

Continue reading Từ Thuyết Cửa Sổ Vỡ, đến những dòng Code tởm dần đều theo năm tháng

Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Đôi lời lý giải chút về tên series

返璞归真 – Phản phác quy chân: Lúc đạt đến điểm cao nhất, cũng chính là lúc quay lại điểm xuất phát. 
Trong võ học, nó có nghĩa là đạt tới cảnh giới “tối thượng” trong truyền thuyết, quay lại như lúc ban đầu, quên đi tất cả võ học trong thiên hạ, bản thân đã không còn chiêu thức cụ thể, chỉ dựa vào ý cảnh mà đơn giản xử lý.

Võ học được thành lập từ các chiêu thức cơ bản, tuyệt thế võ công cũng từ các chiêu thức cơ bản mà ra. Code học cũng tạo thành từ bit/byte cơ bản, chương trình phức tạp cũng được viết thành từ nhiều module, từ từng dòng code.

Đôi khi, ta đã quá quen với việc dùng thư viện, dùng framework mà quên thì những thứ nằm sâu bên dưới, không nắm được bản chất. Có những vấn đề mà phải nắm rõ bản chất của nó ta mới có thể giải quyết được.

Như cái tên “Phản Phác Quy Chân”, series này không giới thiệu công nghệ hay ngôn ngữ mới, mà sẽ tập trung quay lại những cái bản chất, đơn giản, tinh túy nhất mà ít người quan tâm để ý (Bên tiếng Anh có một từ tương tự : Back to Basic, bỏ qua những cái phức tạp, quay lại những cái cơ bản để hiểu tận gốc vấn đề).

 

Đây là một series khá xưa nhưng rất hay của Code Dạo, nay có hứng thú lại nên mình viết tiếp season 2 của series nha.

Hôm nay, chúng ta cùng tìm hiểu về Separation of Concerns, một nguyên lý thiết kế đã có hơn 35 năm tuổi đời; nhưng vẫn có sức ảnh hưởng rất lớn, và được áp dụng rất nhiều trong thiết kế hệ thống, trong viết code và design các library.

Continue reading Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Những điều mình thích và ghét sau hơn 6 năm theo ngành lập trình

Mấy nay viết bài kĩ thuật nhiều rồi nên hôm nay anh em mình ngồi tâm sự chém gió chút về chuyện ngành này nhé.

Đi làm cũng được vài năm rồi, nên hôm nay mình tâm sự mỏng về những điều mình thích và ghét sau hơn 6 năm năm theo ngành ha.

Tất cả những điều này đều dựa theo trải nghiệm của bản thân mình, thông qua các dự án/công ty mình đã làm qua. Do vậy nó hơi mang tính chủ quan của bản thân mình nha.

Continue reading Những điều mình thích và ghét sau hơn 6 năm theo ngành lập trình

Thành công của một dự án công nghệ đôi khi lại … méo phải nhờ kĩ thuật

Truyện kể rằng, ngày xửa ngày xưa, có 2 cậu developer rất thân tên Tùng và Sơn. Dòng đời đưa đẩy, khi ra trường, cả 2 đều đầu quân vào làm cho 2 công ty startup.

  • Sơn vào làm cho TiKu, một startup nhỏ chuyên bán sách, bán giày, bán quần tà lỏn. Công ty nhỏ, cả team chỉ có 1 ông senior với vài bạn trẻ code. Cả dự án là nguyên một cục PHP + MySQL.
  • Tùng vào làm cho WeFack, một startup chuyên kết nối phòng chịch với người muốn chịch. Công ty đã gọi vốn được kha khá, team toàn mấy ông senior hầm hố, dùng đủ công nghệ xịn xò như React, NodeJS, Kafka, theo kiến trúc microservice.

Những tưởng, với công nghệ hiện đại, đội ngũ developer hầm hố, WeFack sẽ ngày càng phát triển, còn Taka thì sớm chết yểu.

Trớ trêu thay, mọi chuyện lại xảy ra ngược lại. 2 năm sau, WeFack phải giải thể, anh em dev phải ra đường Fack dạo, còn Tiku thì gọi được vốn trăm tỷ, càng ngày càng lớn mạnh!

Ủa, sao lạ vậy?? Các bạn đọc hết bài sẽ rõ.

Continue reading Thành công của một dự án công nghệ đôi khi lại … méo phải nhờ kĩ thuật

Build và deploy website để “khè” bạn bè vô cùng đơn giản với Glitch.com

Hãy tưởng tượng, bạn đang học làm web. Bạn vừa build được 1 cái website nho nhỏ bằng HTML/CSS (hoặc nguyên cục website bằng NodeJS) và muốn show cho bạn bè và người khác góp ý, hướng dẫn.

Việc này tưởng dễ mà không hề đơn giản:

  • Bạn phải kiếm 1 con VPS hoặc host free, sau đó kiếm tên miền và kết nối tên miền với VPS
  • Nếu web của bạn cần 1 số tính năng như micro, webcam, bạn phải cài đặt HTTPS, không hề dễ dàng xíu nào
  • Hoặc bạn có thể dựng web server hoặc chạy app ở local, sau đó dùng ngrok, portmap.io hoặc pagekite để open tunnel, cho người khác truy cập vào web của bạn

Những cách này khá tốn thời gian và không hề dễ dàng. Chưa kể, người xem không thể xem code, phụ bạn sửa code v…v.

Vì vậy, hôm nay mình giới thiệu Glitch.com, một trang web rất hay ho giúp bạn code phát là có web ngay, có domain lẫn HTTPS, ko cần cài IDE hay Git gì luôn. Hãy xem nó có gì bá đạo mà có quá trời người dùng nhé!

Continue reading Build và deploy website để “khè” bạn bè vô cùng đơn giản với Glitch.com