Series Phản Phác Quy Chân – Chuyện về những “ổ gà” trên con đường lập trình

Hôm nay, trước khi nói về ngành lập trình, ta hãy nói về ngành cầu đường.

Trên đời này làm gì có đường, người ta đi mãi cũng thành đường thôi. – Lỗ Tấn

Từ chuyện xây đường…

Thưở xưa, để đến nơi, người ta phải đi chân trần, trèo đèo lội suối, đập đá băng rừng.

Dần dần người ta chặt cây, nhổ cỏ, làm đường đất để mà đi. Đường đất vừa bẩn vừa nhiều bụi, người ta lại lát đá, lát gạch cho đường sạch đẹp, dễ đi hơn.

Thế rồi khoa học tiến bộ, người ta không lát đá nữa mà ủi phẳng, trải nhựa, trải bê tông. Trên đường nhựa, người ta xây cầu vượt, xây vòng xoay, xe cộ băng băng qua lại, nhanh chóng và tiện lợi hơn nhiều so với ngày xưa.

go-your-own-road-by-erik-johansson

Continue reading Series Phản Phác Quy Chân – Chuyện về những “ổ gà” trên con đường lập trình

Review sách: Dreaming in Code – Nửa đêm mơ code

Dạo này vì lo viết bài technicalchém gió về nghề nghiệp dữ quá nên lâu rồi cũng chưa viết bài nào review sách. Từ đầu tháng 1 tới giờ mình cũng đọc được khoảng 5,6 cuốn nhưng không phải sách lập trình nên không review chém gió được. Cuốn sách này mình đọc xong hồi tháng 12 năm ngoái, kể về một dự án thất bại nổi đình nổi đám. Thôi thì đầu năm đầu tháng lôi tháng lôi thất bại của người khác ra review để rút kinh nghiệm vậy….

cover

Giới thiệu – Tóm tắt

Tên đầy đủ của cuốn sách là: Dreaming in Code – Two dozen programmers, three years, 4732 bugs, and one quest for transcendent software (Tạm dịch: Nửa đêm mơ code – 2 tá lập trình viên, 3 năm, 4 nghìn 7 trăm 32 con bug, và 1 hành trình truy cầu phần mềm siêu việt). Mình tình cờ đọc được review của cuốn này trên blog Joel on Software (Ai theo dõi blog mình chắc cũng biết lão này là cựu nhân viên Microsoft, người sáng lập StackOverflow). Tuy chưa tới mức thuộc dạng sách gối đầu giường như Code Complete, The Mythical Man-Month, Peopleware,… nhưng nó cũng được nhiều người khuyên đọc.

Continue reading Review sách: Dreaming in Code – Nửa đêm mơ code

Du học nước ngoài có gì dzui???

Hôm trước có vài bạn hỏi về cuộc sống học hành nước ngoài thế nào, sẵn hôm nay rảnh nên mình viết bài miêu tả luôn. Hồi mới qua mình có viết một bài kể sơ sơ rồi, giờ trong bài này mình sẽ giới thiệu/khoe khoang những cái hay hay của trường nước ngoài. Các cụ có câu là “Tốt đẹp khoe ra, xấu xa đậy lại” nên mình không nhắc tới khuyết điểm nhé, chỉ khoe thôi.

Continue reading Du học nước ngoài có gì dzui???

Series JavaScript sida – Cùng làm quen và “chịch”, nhầm… nghịch ES6

Dạo gần đây mình đi làm thêm, project hiện tại có sử dụng React với cả ES6 – chuẩn Javascript mới. Do mấy bài viết trước mình chê JavaScript sida nhiều thấy cũng tội, hôm nay viết một bài nói tốt cho nó một tí để đổi gió nhé.

Phiên bản JavaScript hiện tại chúng ta đang sử dụng dựa trên chuẩn ECMAScript 5 (ES5). Hiện tại, JavaScript được sử dụng ngày càng nhiều, từ front-end cho đến back-end, điều này đòi hỏi sự cải tiến trong JavaScript (Nghĩ cũng đúng, cái ngôn ngữ sida thế mà code mấy hệ thống to to, code phức tạp thì để lâu chả banh chành ra à !!). Đó là lý do chuẩn ECMAScript 6 (ES6) ra đời, cung cấp 1 số tính năng mới cho JavaScript, đồng thời giúp code trở nên tường minh và dễ viết hơn.

Capture

Continue reading Series JavaScript sida – Cùng làm quen và “chịch”, nhầm… nghịch ES6

[Giải trí] Tổng hợp các comment “bá đạo” từ trước đến nay

Dạo gần đây viết nhiều bài về technical khá mệt và nhức đầu, lâu lâu mình viết một bài theo dạng “dịch và sưu tầm” để giải trí cho các bạn đọc vậy. Trước đây, mình từng có một bài viết về việc sử dụng comment. Code có comment hay không, comment như thế nào luôn là vấn đề tranh luận của giới developer từ trước đến giờ. Hôm nay chúng ta không tranh luận về comment, mà hãy cùng thưởng thức các comment “bá đạo” từ trước đến giờ để giải trí nhé.

Méo mặt khi bị giao optimize code mà gặp phải dòng này

// Chào anh bạn coder:
//
// Sau khi chú em đã gắng hết sức để ‘optimize’ hàm này,
// để rồi nhận ra việc đó nhảm nhí và phí công vô ích thế nào,
// hãy cộng thêm số giờ phía dưới để cảnh báo cho các coder
// xấu số tiếp theo
//
// tổng_số_giờ_lãng_phí = 42

Khi code được viết ra trong một phút giây “thần thánh”

// Ngày xưa, khi tôi viết đoạn code này, chỉ có Chúa và tôi hiểu
// Bây giờ nhìn lại, chỉ có Chúa mới hiểu

super-computer-nerd

Continue reading [Giải trí] Tổng hợp các comment “bá đạo” từ trước đến nay

Ngày đầu đi code dạo nơi đất khách quê người – Phần 2

Định viết một bài thôi mà không ngờ dài quá nên phải chia làm 2 phần luôn. Nội dung phần 2 này sẽ chia sẽ một chút về technical, trải nghiệm khi pair-programming và ăn nhậu với team ;).

Đống code như đống *beep*

Nói chuyện con người đủ rồi, giờ nói chuyện technical một chút nào. Ứng dụng của team được xây dựng trên framework CampusM. Framework này là cũng tương tự Ionic Framework, hỗ trợ viết app di động kiểu hybrid-app bằng HTML, CSS, JavaScript. Vì nó khá mạnh, tích hợp được nhiều thứ nên được một số trường Đại học ở UK sử dụng, trong đó có trường mình. Ngày xưa, team sử dụng phiên bản 1 của framework (AEK 1) để viết các chức năng. Gần đây, framework ra phiên bản AEK 2 (Tích hợp React, Redux và ES6 khá hầm hố), một số chức năng mới lại viết bằng AEK 2. Thế là code chia ra làm “code cũ” và “code mới”, cái nào cũng đủ chuyện nhức đầu.

cpm

Continue reading Ngày đầu đi code dạo nơi đất khách quê người – Phần 2

Ngày đầu đi code dạo nơi đất khách quê người – Phần 1

Hôm trước, mình đã kể chuyện đi phỏng vấn xin… code dạo ở nước ngoài được khá nhiều bạn ủng hộ. Kì này mình sẽ kể về ngày đầu tiên đi code dạo và những đồng nghiệp trong dự án nhé.

Hôm đầu ngơ ngác

Như mình đã kể, chắc do thiếu người hay dự án đang cần gấp nên quy trình phỏng vấn và tuyển dụng diễn ra rẹt rẹt, mình vừa phỏng vấn sáng thứ 4 hôm 10/2 thì có offer ngay chiều hôm đó, và sáng thứ 5 hôm sau phải xách đít đi làm. Bọn bên này làm ăn cũng đàng hoàng, send sẵn một cái file PDF hướng dẫn cách liên hệ với admin request account, set vào các group. Do team cũng nhỏ nên trong file có ghi đầy đủ tên thành viên, chức vụ, sở thích (chắc để mọi người gần gũi với nhau hơn), đọc cũng khá là vui.

Capture
Danh sách thành viên trong team. Bé Alice là cái bé PV mình nhắc tới trong bài trước ý
Continue reading Ngày đầu đi code dạo nơi đất khách quê người – Phần 1

Series Phản Phác Qui Chân – Tuốt tuồn tuột về Unicode và Charset

Chào mừng các bạn đã quay lại với series Phản Phác Quy Chân. Lần này series sẽ tập trung giải thích mổ xẻ tất tần tật về Unicode, encode và charset. Hầu hết các ngôn ngữ/framework đều hỗ trợ sẵn Unicode nên bạn có thể thoải mái code cả mấy năm trời mà chẳng cần quan tâm đến 2 thằng này. Tuy nhiên, không phải hù gì các bạn nhưng mà “Lỗi liên quan tới encoding là những lỗi khó chịu và khó sửa nhất”, do đó tự trang bị những kiến thức “xưa mà không cũ” về Encoding vẫn khá là cần thiết đấy nhé.

So I have an announcement to make: if you are a programmer working in 2003 and you don’t know the basics of characters, character sets, encodings, and Unicode, and I catch you, I’m going to punish you by making you peel onions for 6 months in a submarine. I swear I will.

And one more thing:

IT’S NOT THAT HARD.

Continue reading Series Phản Phác Qui Chân – Tuốt tuồn tuột về Unicode và Charset

Chuyện ngày xưa – tôi đã viết sách như thế nào?

Đêm nay mưa rả rích, gió xì xào, ngoài hè văng văng tiếng dế kêu da diết, làm mình bỗng nhớ nhà, nhớ trường, nhớ quê. Lục đống hình ngày xưa ra xem bỗng thấy một cuốn sách bìa xanh xanh vàng vàng. Bao nhiêu kỉ niệm xưa ùa về, đành kể lại cho mọi người nghe để trải lòng vậy.

13

Bạn nào từng đọc phần About me chắc cũng thấy mình từng đề cập đến cuốn này. Đây là một cuốn sách mình viết vào năm 2013, khoảng năm 3 Đại học. Có thể xem nó là tiền thân hoặc ông cố nội của blog toidicodedao bây giờ.

Để mình kể cho các bạn nghe, đằng sau 2 tấm bìa xanh xanh vàng vàng là 1 tháng trời công sức và mồ hôi và nước mắt của bao nhiêu thế hệ sinh viên FPT.

Continue reading Chuyện ngày xưa – tôi đã viết sách như thế nào?

Series Phản Phác Quy Chân – Tại sao cộng string lại chậm

Lý giải chút về tên series

返璞归真 – Phản phác quy chân: Nghĩa là điểm cao nhất cũng chính là điểm xuất phát, được ứng dụng trong rất nhiều lĩnh vực. 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, 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 đến mấy cũng dịch được ra bytecode. Đô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 đề).

01_s_by_darkdamage-d5yo32c

Ở bài viết đầu, mình sẽ nhắc sơ lại về string, cũng như giải thích lý do vì sao việc cộng string sẽ ảnh hưởng tới bộ nhớ và performance của hệ thống (Hình minh họa và bài viết méo liên quan với nhau đâu, vì tác giả thích thế :v).

Continue reading Series Phản Phác Quy Chân – Tại sao cộng string lại chậm

Lập trình viên giỏi không phải chỉ biết code