Tag Archives: framework

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ị)

Từ chuyện cargo cult programming, đến phong cách lập trình theo kiểu “bầy đàn”

Chuyện kể rằng, vào thời thế chiến thứ 2, binh lính Mĩ lần đầu tiên tiếp xúc với các thổ dân ở nhiều quần đảo thuộc vùng Melanesia.

Vì nhu cầu chiến tranh, quân Mỹ/Nhật chở hàng loạt tàu hàng, cho máy bay thả hàng tiếp tế (thức ăn, lương thực, vũ khí) xuống, làm đời sống nhân dân trên đảo được cải thiện.

Khi chiến tranh kết thúc, hàng hoá cũng hết theo. Cư dân trên đảo bắt đầu bắt chước hành động của binh lính Mĩ. Họ cũng dựng chòi canh, khắc gỗ làm radar headphone, quơ quào trên đường băng như binh lính liên lạc.

Cư dân trên đảo làm giả máy bay, headphone, đài phát sóng; với hi vọng máy bay thật sẽ quay lại

Dân chúng bắt đầu làm theo những nghi lễ này, với hi vọng máy bay sẽ quay lại, mang theo những thùng hàng tiếp tế. Tất nhiên là, dù họ có quơ quào cả năm trời, cũng chẳng có chiếc máy bay nào quay lại cả.

Dần đà, những thứ này trở thành nghi lễ, được thờ cúng. Những tôn giáo, nghi lễ dạng này được gọi là cargo cult (cargo là hàng hoá được chuyên trở trên tàu).

 

Ơ, chuyện nghe thú vị đấy, nhưng mà nó có liên quan gì đến lập trình đâu?? Ấy vậy mà có đấy!

Continue reading Từ chuyện cargo cult programming, đến phong cách lập trình theo kiểu “bầy đàn”

Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại

Từ trước đến nay, với các bạn muốn theo ngành IT, mình đều có lời khuyên là:

Kiến thức trong ngành thay đổi rất nhanh, các công nghệ rất dễ trở nên lạc hậu, lỗi thời. Do vậy, để theo đuổi ngành này, chúng ta phải chịu khó tự học, tự làm mới bản thân.

Hôm nọ, mình có đọc mẩu truyện tranh ngắn sau, về một cuốn sách khá nổi tiếng trong ngành – Working Effectively with Legacy Code

Nguồn: commitstrip.com/en/2019/03/13/like-a-good-wine

Mình chợt nhớ ra/ngộ ra rằng kiến thức công nghệ trong ngành IT cũng có 2 loại:

  • Loại thứ nhất càng để lâu càng cũ, lạc hậu, trở nên vô dụng
  • Loại thứ hai để lâu tận 10 năm, 20 năm cũng chả sao, thậm chí càng ngày càng có giá

Loại thứ 2 là những kiến thức gì vậy, các bạn xem sẽ biết nhé! (Bật mí nhỏ là không phải chỉ có thuật toán như mấy ông thầy trong trường hay nói đâu!

Continue reading Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại

Những công nghệ mình chưa biết trong năm 2018

Bản thân blog này là nơi mình chia sẻ kinh nghiệm cá nhân, chia sẻ những kiến thức của mình tới bạn đọc.

Vì thế, blog chính là nơi mình … khoe những thứ mình đã biết (web, front-end, cloud, sách) v…v. Điều này không có gì sai, những sẽ dễ làm nhiều bạn lầm tưởng rằng mình biết nhiều, cái gì cũng biết!

Do vậy, cuối năm cũ, đầu năm mới, mình sẽ thử làm ngược lại, tự bóc phốt chính mình, nói cho bạn đọc về những ngôn ngữ/công nghệ/những thứ mà mình chưa biết nhé!

Continue reading Những công nghệ mình chưa biết trong năm 2018

Lightning Talk Kì 19 – Năm điểm khác biệt giữa đi học và đi làm

Kì này, mình chia sẻ về những điểm khác biệt giữa việc học lập trình và đi làm lập trình viên thực sự nhé.

1. Đi học, code xong rồi thôi. Đi làm, code xong rồi sửa
2. Đi học, code sao cho chạy. Đi làm, code sao cho tốt
3. Đi học, không được copy code. Đi làm, copy code thoải mái
4. Đi học, học những thứ cơ bản. Đi làm, dùng những thứ thực tế
5. Đi học, học xong là hết. Đi làm, học xong là…lết

Bài viết liên quan: https://toidicodedao.com/2017/05/18/khac-biet-di-hoc-va-di-lam/

Channel Tôi Đi Code Dạo là nơi mình chia sẻ những kiến thức, kinh nghiệm về ngành lập trình mà mình đạt được trong quá trình làm việc. Những kiến thức này sẽ biến các bạn từ một coder trở thành developer – lập trình viên thứ thiệt.
Nhớ ghé thăm và subscrible channel để xem clip mới vào tối t3 và t6 hàng tuần tại bit.ly/codedaotube nha.

Cách sống sót với những áp lực trong ngành lập trình

Nếu chỉ nghe lều báo nói, các bạn sẽ nghĩ rằng ngành lập trình là một ngành … dễ ăn: Nhu cầu thị trường nhiều, công việc thú vị, được ngồi văn phòng máy lạnh cả ngày, lương cao so với mặt bằng chung.

Tuy vậy, ngành IT mình cũng có một số mặt tối như: kiến thức cần học rất rộng, công việc khó, ngồi nhiều dễ ảnh hưởng sức khỏe, gặp đủ thứ áp lực.

Do vậy, trong bài này, mình sẽ chia sẻ về những áp lực các bạn sẽ gặp khi theo ngành lập trình, cùng với cách sống sót và “đối phó” với chúng nhe.

Continue reading Cách sống sót với những áp lực trong ngành lập trình

Series Lược Sử Lập Trình Web Phần 3.1 – JS framework trỗi dậy

Series này gồm 4 phần chính:

Ở những phần trước, chúng ta đã biết về giai đoạn 2005-2010, khi JavaScript dần dần được cộng đồng sử dụng rộng rãi.

Ở phần này, chúng ta sẽ tìm hiểu về những năm 2010-2014, còn được người đời gọi là Thời đại Phục Hưng của JavaScript.

Đây là giai đoạn JS bước lên vũ đài chính trị, lộn, vũ đài lập trình, với sự ra đời của vô số framework/tooling hay ho, dần dần được nhiều người biết đến.

Continue reading Series Lược Sử Lập Trình Web Phần 3.1 – JS framework trỗi dậy

Developer phải làm sao khi làm việc với code … rởm?

Ở bài “Tại sao code của dự án hiện tại nó … tởm quá vậy” trong kì trước, mình đã nói lý do mà code của các dự án càng để lâu sẽ càng loằng ngoằng, rối rắm.

Đây là chuyện bất khả kháng, và chúng ta ít khi có quyền lựa chọn project mình tham gia!

Thay vì than trời, trách đất, chửi mấy lão developer trước kia, bạn hãy cùng mình tìm hiểu một số cách “sống chung với lũ” – tức sống và làm việc chung với code bựa.

Ở cuối bài, mình cũng sẽ chia sẻ một số phương pháp để nâng cao chất lượng code trong dự án, giúp code đỡ “tởm dần đều” qua thời gian nhé!

Continue reading Developer phải làm sao khi làm việc với code … rởm?

Tại sao code hiện tại của dự án lại … “tởm” quá vậy?

Khi đi học hoặc mới đi làm, chúng ta được dạy về việc viết code rõ ràng, mạch lạc, chất lượng:

  • Code phải được chia tách thành các class/module rõ ràng.
  • Mỗi module phải làm một nhiệm vụ duy nhất, ít lệ thuộc lẫn nhau (high cohension/low coupling)
  • Code được thiết kế theo architecture phù hợp (3-tier hoặc MVC) tùy vào dự án. Có sử dụng design pattern tùy vào vấn đề.

Khi tham gia dự án đầu tiên, hẳn ai cũng mong rằng mình sẽ được tiếp xúc với những dòng code mạch lạc, chất lượng như vậy.

Thế nhưng, đời sẽ cho bạn một gáo nước lạnh ngay lập tức! Khi tham gia một dự án, nhiều khả năng các bạn sẽ được đọc một đống code vừa khổng lồ, vừa tởm vừa rối như canh hẹ.

Có những đống code đọc vào chỉ muốn chửi WTF

Thật đấy, 96.69% code của các dự án lớn đều như vậy cả. Có thể dự án hiện tại bạn đang làm cũng vậy đấy!

Vì sao thế? Cùng đọc bài viết này để biết nhé!

Continue reading Tại sao code hiện tại của dự án lại … “tởm” quá vậy?

Tại sao đa phần các công ty thích dùng công nghệ “lỗi thời”

Ở kì trước, mình có khuyên các bạn Nên đặt câu hỏi vì sao (why) thay vì làm sao (how). Việc này sẽ giúp các bạn học sâu hơn, nhìn nhận vấn đề tốt hơn!

Ngay sau đó, mình lại nhận được một câu hỏi “Vì sao” khá hay từ vài bạn độc giả:

Anh ơi, tại sao các công ty họ lại thích dùng công nghệ cũ vậy ạ?
Em tự học, tự tìm hiểu Spring/Struts với Angular đồ; vào cty F lại dùng toàn đồ cũ, làm dự án toàn VB.NET rồi JSP rồi jQuery là sao anh?

Hẳn nhiều bạn sinh viên mới ra trường cũng có suy nghĩ tương tự nhỉ!

Bài viết này sẽ cho bạn một góc nhìn khác về các công nghệ mới, cũng như trả lời câu hỏi: Tại sao đa phần các công ty thích dùng công nghệ cũ??

Continue reading Tại sao đa phần các công ty thích dùng công nghệ “lỗi thời”