Lightning Talk Kì 10 – Những khó khăn thường gặp khi mới học lập trình

Lần trước có bạn hỏi mình về những khó khăn mà các bạn sinh viên mới học lập trình hay gặp phải, cùng với cách vượt qua chúng.

Do vậy hôm nay mình sẽ làm vlog chia sẻ nhé, những khó khăn này là:

  1. Viết code chậm, lỗi nhiều, code sai
  2. Cảm thấy nản vì chương trình học quá mệt và nặng
  3. Mất phương hướng vì có quá nhiều lựa chọn
  4. Tẩu hoả nhập ma vì có quá nhiều thứ để học
  5. Tự ti vì sợ thua kém bạn bè

Các bạn nhớ xem vlog để biết cách vượt qua chúng nhé.

 

Mình đăng trên Channel Youtube trước blog và fanpage khoảng vài hôm. Bạn nào muốn xem trước tiên thì subscribe channel của mình nhé: https://www.youtube.com/c/toidicodedaoblog

Advertisements

Công nghệ “hiện đại” phía sau tốc độ tải trang “chóng mặt” của Thế Giới Di Động

Cách đây vài hôm, mình nhận được một câu hỏi khá thú vị là: Trang Thế Giới Di Động (thegioididong.com) sử dụng công nghệ gì mà có thể tải nhanh chóng mặt như vậy?

Chỉ mất vài phút để mở web thế giới di động lên tìm hiểu, nhưng mình lại nhận được một câu trả lời vừa hay ho, vừa ngạc nhiên và vô cùng thú vị.

Nếu tò mò thì các bạn kéo xuống đọc tiếp nhé!

Full disclosure: Mình không được đồng quảng cáo nào khi khen team thegioididong đâu nhe 😉

Continue reading Công nghệ “hiện đại” phía sau tốc độ tải trang “chóng mặt” của Thế Giới Di Động

Đừng hỏi “có nên học cái này cái kia không” nữa!!!

Hôm trước, mình đã làm một bài chửi về việc lười làm bài tập, thích ăn sẵn: Thực trạng học lập trình của sinh viên Việt Nam.

Hôm này, sau khi đi dạo vòng quanh Facebook, đọc nhiều câu hỏi khiến mình cảm thấy buồn bực, ngứa ngáy tay chân. Do vậy, mình viết bài này để chửi thêm một phát về thói lười học và… ngại học.

Bạn nào đọc mà thấy nhột nhột thì cứ nhủ: Chắc thằng Code Dạo nó chừa mình ra nhé :))

Continue reading Đừng hỏi “có nên học cái này cái kia không” nữa!!!

Tìm hiểu về ELK Stack – công cụ quản lý log ngầu nhất quả đất!

Hôm trước, trong bài viết về các công cụ “hay ho” mà lập trình viên ít biết, mình có nhắc đến logging.

Logging là một công cụ đơn giản và mạnh mẽ, ghi lại toàn bộ những hoạt động của hệ thống. 

Nhờ có logging, ta có thể tra cứu lại trạng thái của hệ thống trong quá khứ, những code nào đã được chạy, từ đó tìm ra lỗi và fix dễ dàng hơn.

Hôm nay, mình sẽ giới thiệu về ELK Stack, một trong các stack mạnh mẽ, phổ biến nhất dùng để ghi log nhé!

Rất nhiều hệ thống lớn trên thế giới (LinkedIn, Netflix, Medium) đều sử dụng stack này đấy!

Continue reading Tìm hiểu về ELK Stack – công cụ quản lý log ngầu nhất quả đất!

Lightning Talk Kì 9 – Năm ngôn ngữ lập trình đáng học năm 2018

Vlog này sẽ chia sẻ về những ngôn ngữ lập trình đáng học trong năm 2018 nhé.

Mình đăng trên Channel Youtube trước blog và fanpage khoảng vài hôm. Bạn nào muốn xem trước tiên thì subscribe channel của mình nhé: https://www.youtube.com/c/toidicodedaoblog

Hiện tại đã được gần 4000 sub, nếu lượng subscribe được 5000 mình sẽ cố gắng livestream trên Youtube thường xuyên hơn để tri ân nhe, cảm ơn mọi người 😉.

 

Trong số các ngôn ngữ lập trình này, thứ nào cũng có cái hay cái mạnh riêng nên mỗi người sẽ có cái nhìn khác nhau. Do vậy, mình sẽ cố gắng khách quan hết mức có thể!

Các ngôn ngữ được mình lựa chọn, đánh giá xếp hạng theo sức mạnh của ngôn ngữ, độ phổ biến, nhu cầu tuyển dụng, khả năng tìm việc v..v nha.

Các ngôn ngữ lập trình đuợc nhắc đến trong vlog:

  1. JavaScript
  2. Java
  3. C#
  4. Python
  5. PHP

Bài viết gốc tại blog: https://toidicodedao.com/2018/01/02/top-5-ngon-ngu-lap-trinh-dang-hoc-cho-nam-2018/

Công cụ đơn giản, bá đạo mà 69.96% sinh viên IT không biết – Phần 2 : Profiler và Command Line

Nối tiếp phần 1, mình sẽ tiếp tục giới thiệu về những công cụ đơn giản, bá đạo mà truờng không hề dạy, làm đồ án cũng không bao giờ dùng. Tuy nhiên, chúng lại đuợc áp dụng trong 96.69% dự án thực tế.

Thông qua những câu chuyện ngắn gọn, mình sẽ giới thiệu và giải thích về các công cụ này nhé. Chúng lần lượt là:

  • Phần 1: Unit Test và Logging
  • Phần 2: Profiler và Command Line

Nhắc lại một tí, hai nhân vật chính trong câu chuyện này là:

  • Tùng, một sinh viên Ép Tao Dê mới ra trường, gia nhập công ty phần mềm Ép Dê Tao với vị trí junior.
  • Sơn, một anh senior dev kì cựu cao to sáu múi.

Profiler – Code chậm thành nhanh, không còn memory leak

Chuyện thứ 3: Mấy tháng sau, Tùng đã không còn là junior developer nữa mà đã… lên chức thành developer. Anh Sơn cũng từ vị trí senior developer leo lên techinical lead.

Duyên trời run rủi, hai người lại bị điều vào chung 1 dự án. Đây là một dự án C#, công việc chính cũng là bảo trì và thêm chức năng mới.

Vì dự án đã được phát triển từ 5,6 năm trước nên code rất nhiều, cấu trúc vô cùng rắc rối và phức tạp. Hồi trước chỉ có khoảng 100-200 user nên không sao, bây giờ hệ thống đã lên tầm 50-100k user nên hệ thống bắt đầu bị chậm, lâu lâu lại crash vì thiếu RAM.

Nhận trọng trách mới, Tùng bắt tay vào optimize code để hệ thống chạy nhanh hơn, ít tốn RAM hơn. Tùng cắm đầu cắm cổ áp dụng đủ mọi kiến thức từ đổi thuật toán, thêm caching, thay ORM. Thế nhưng, sau một tuần, hiệu suất chỉ tăng mỗi … 5-10%.

Thấy tội nghiệp, anh Sơn liền ra tay, hướng dẫn Tùng cách dùng profiler.

Profiler là một công cụ cho phép ta đo đạc thời gian hoạt động, tài nguyên mà các đoạn code sử dụng, từ đó optimize cho hợp lý.

C# Profiler trong Visual Studio
Tùng lần luợt làm theo 4 bước:

  1. Chạy code cùng với profiler một thời gian
  2. Dựa theo profiler tìm, các đoạn code chạy chậm nhất, tốn tài nguyên nhất
  3. Optimize các đoạn code đó
  4. Chạy lại profiler để check kết quả

Đêm đó, hai anh em Sơn Tùng thức suốt đêm tại công ty để tình thương mến thương,… nhầm, để optimize code.

Hoá ra do mỗi lần truy cập, chương trình lại đọc thông tin từ một file text vài trăm MB trên ổ cứng, sau đó không close connection nên bị memory leak.

Anh Sơn chỉ việc load toàn bộ thông tin này lên RAM làm cache, hệ thống chạy nhanh gấp… 5 lần, hết tràn RAM chỉ nhờ 10 dòng code và profiler.

Nhờ profiler, Tùng và anh Sơn nhanh chóng optimize code và fix đuợc memory leak
Bài học rút ra: Profiler là một công cụ rất mạnh mẽ nhưng ít bạn biết vì … làm bài tập và dự án trên trường có bao giờ phải optimize code đâu.

Mỗi ngôn ngữ thường đi kèm với profiler, có khi tích hợp sẵn trong IDE luôn. Do vậy, khi cần optimize code, các bạn hãy nhớ đến profiler nhé.

Command Line – Cảnh giới “thần thánh” không cần chuột

Chuyện thứ tư: Một hôm nọ, Tùng may mắn được ngồi cạnh pair programming với anh Sơn. Tùng để ý anh rất ít khi dùng chuột mà chỉ toàn dùng bàn phím gõ gõ, trên màn hình đen thui nhấp nháy.

Thắc mắc, Tùng hỏi: Sau anh không dùng giao diện cho dễ mà gõ gõ chi vậy anh?

Anh Sơn trả lời: Hở? Em vẫn còn dùng giao điện àh? Chuyển qua dùng Terminal và Vim đi! Tăng ít nhất 50% năng suất làm việc đấy!

Bán tín bán nghi, Tùng cũng bắt đầu tập sử dụng command line và Vim trong các công việc thường ngày: Sửa file, build code, chạy code.

Sau một thời gian, Tùng nhận thấy mình bắt đầu viết code nhanh hơn, thực hiện công việc nhanh hơn, năng suất tăng còn hơn 50% mà anh Sơn đã quảng cáo.

Nhờ làm việc chung với anh Sơn, Tùng cảm thấy trình độ của mình ngày một tăng, tình cảm “chong xáng” dành cho anh cũng tăng theo.

Sự bá đạo của Command Line. Ảnh chôm của codeaholicguy
Command Line là một công cụ vô cùng mạnh mẽ mà nhiều bạn sinh viên/lập trình viên bỏ qua, do đã quá quen thuộc với Windows và IDE.

Ta có thể build code từ command line, sử dụng Git từ command line, thậm chí upload file hoặc deploy code từ command line nốt.

Command Line còn được những bạn làm về mạng hoặc sysadmin ưu dùng. Khi quản lý các server Ubuntu, bạn sẽ không thể dùng giao diện và click như Window mà phải SSH để kết nối tới server, sau đó dùng command line để quản lý.

Hoặc nếu bạn làm Front-end developer, command line càng là người bạn không thể thiếu. Hầu như các tool của mảng front-end (Babel, Webpack, npm) đều dựa trên nền NodeJS, chạy trên command line. Thành thạo command line là nền tảng để sử dụng các tool này.

Do đó, mình khuyến khích các bạn nên học và làm quen cách dùng command line nhé! Ví dụ như trong clip dưới, mình và Codeaholicguy có huớng dẫn cách dùng Git trên command line.

Bạn có thể cài Bash trên Windows 10, hoặc kiếm một con VPS Ubuntu để tập nghịch command line nhé. Ngoài ra, bạn có thể đọc cuốn này để nhập môn cách dùng command line: Learn Enough Command Line to Be Dangerous.

Nếu bạn có hứng thú thì cứ để lại comment nhé. Nếu có nhiều người quan tâm thì sau này mình sẽ có một series riêng về cách dùng command line nha!

Chuyện cuối cùng

Sau đó, anh Sơn và Tùng nhận ra tình cảm của mình dành cho nhau. Hai người sống hạnh phúc bên nhau đến cuối đời. Họ có với nhau một đứa con xinh xắn tên là Sơn Tùng MTP.

Từ đó Tùng và anh Sơn sống hạnh phúc bên nhau đến cuối đời
Các bạn có thể sẽ thắc mắc: Tại sao ngay từ đầu anh Sơn không vô giúp đỡ Tùng mẹ nó đi, chờ nó te tua rồi mới nhảy vô vậy?? Đương nhiên anh Sơn có thể làm vậy, nhưng để Tùng tự va chạm, tự trải nghiệm sẽ giúp Tùng học được nhiều hơn, nhớ lâu hơn.

Do vậy, khi gặp khó khăn, các bạn có thể hỏi người có kinh nghiệm hơn. Tuy nhiên, hãy tự mình tìm hiểu trước, vừa để cho bản thân mình, vừa tiết kiệm thời gian của người khác nhé!

Kết

Đấy, trong 2 phần của bài viết, mình đã chia sẻ về bốn công cụ đơn giản, mạnh mẽ nhưng rất hữu ích bao gồm:

  1. Unit Test
  2. Logging
  3. Profiler
  4. Command Line

Bạn còn biết công cụ nào nữa không? Hãy chia sẻ và thảo luận trong phần comment nhé ;).

Công cụ đơn giản, bá đạo mà 69.96% sinh viên IT không biết – Phần 1 : Unit Test và Logging

Bạn nghĩ rằng senior hơn junior ở những cái cao siêu như thuật toán phức tạp, viết code cực nhanh, thiết kế hệ thống cực khủng sao?

Lầm rồi! Đa phần họ hơn nhau ở kinh nghiệm làm việc, ở những trải nghiệm thực tế họ gặp phải và những công cụ họ đã sử dụng.

Nhờ kinh nghiệm, Senior dev sẽ biết cách tiếp cận vấn đề, biết lựa chọn những công cụ cần thiết để làm việc hiệu quả hơn, tạo ra phần mềm chạy nhanh hơn, ít lỗi hơn.

Trong bài viết này, mình sẽ giới thiệu về những công cụ đơn giản, bá đạo mà 69.96% sinh viên IT không hề biết.

Những thứ này truờng không hề dạy, làm đồ án cũng không bao giờ dùng. Tuy nhiên, chúng lại đuợc áp dụng trong 96.69% các dự án thực tế.

Continue reading Công cụ đơn giản, bá đạo mà 69.96% sinh viên IT không biết – Phần 1 : Unit Test và Logging