Đầu xuân năm mới ngồi tổng hợp lại 77 49 bài viết đặc sắc nhất của Minh Monmen để anh em cùng gạch đá. Chủ yếu là mình đã học được những gì, nên đọc theo thứ tự nào, bài viết tại sao lại dài thế,...
First things first
Đôi điều về tác giả là mình - Minh Monmen thì năm nay đã tiệm cận mốc 30 (nếu không muốn nói là 30 rồi theo tuổi âm) và mới có 5 năm trong nghề viết lách chém gió. Thật ra thì quãng thời gian này chưa phải là dài với người viết chuyên nghiệp, nhưng cũng không phải là ngắn với những blogger nghiệp dư như mình. Và đi được một chặng đường như vậy với nghề viết dạo (không kiếm cơm) thì với mình cũng là một thành công rồi.
Tại sao lại có bài viết này? Bởi vì mình cảm thấy hơi tự ti khi nhìn vào những tác giả khác, những người có thể viết bài hàng tuần thậm chí hàng ngày luôn. Thế nên mình mới phải làm một bài tổng hợp xem mình đã viết những gì, chủ đề ra sao, nội dung thế nào,... để tự nhìn lại bản thân và có thêm động lực để tiếp tục đi trên con đường này.
Trong bài viết này mình sẽ:
- Tổng hợp lại chủ đề những bài viết của mình (và gợi ý đọc theo thứ tự)
- Lan man đôi chút về động lực khiến mình viết, style viết của mình
- Vài sự tích liên quan tới những bài viết đặc biệt
Okay? Relax, bài viết này không có yếu tố kỹ thuật gì mấy đọc chơi thui.
Một vài con số
Viết đến đây thì mình chợt nhận ra là từ đầu tới giờ mình mới viết được tổng cộng là... 49 bài. =))) Vậy là để tổng hợp 49 bài viết hay nhất của mình thì chỉ cần... bê nguyên tên 49 bài mình đã viết vào thôi =))). Giật tít hơi ghê tí các bạn thông cảm.
Vậy là kể từ năm 2018 khi bút danh Minh Monmen lần đầu xuất hiện trên Kipalog thì mình đã viết được:
- 49 bài viết (tính cả bài tổng hợp này là 50)
- Hơn 16 vạn (160K) từ
- Hơn 1 triệu chữ cái
Ồ, vậy là mấy cái bàn phím của mình cũng đã chịu được cả triệu lần bấm rồi đó chứ (mà mới là tính riêng chuyện mình viết bài). Mặc dù số bài viết khá khiêm tốn (chỉ 49), tức là mỗi năm mình viết được khoảng 10 bài, mỗi tháng mới được chưa tới 1 bài. Bởi vậy nên mình mới cảm thấy phục những bạn khác vừa có thể đi làm bình thường mà vẫn vừa viết bài với tần suất hàng tuần hay hàng ngày thật đáng nể. Niềm tự hào nhỏ bé duy nhất an ủi mình là dù mình viết ít nhưng được cái là mỗi bài viết lại tương đối dài, do vậy anh em đọc cũng không bị hụt hẫng (kiểu đang đọc truyện tranh cuốn thì hết chap chẳng hạn).
Bài viết đầu tiên về định hướng nghề nghiệp
Mình viết bài trên Viblo cũng từ 2018, tuy nhiên rất tiếc bài viết đầu tiên của mình lại không có trên Viblo. Đó là một bài viết về những cảm nghĩ trong định hướng nghề nghiệp của một cậu trai làm backend mới vừa rời công ty đầu tiên. Các bạn có thể đọc bài viết (hơi ngô nghê) này của mình trên Kipalog:
2018 là thời điểm mà DevOps còn là một khái niệm tương đối xa lạ tại Việt Nam, tuy nhiên khi đó khá may mắn là mình đã kịp nhận ra DevOps (hay nói rộng hơn là những vị trí cần kiến thức tổng hợp như Business Analyst, Data Analyst, Data Engineer,...) sẽ là những vị trí chỉ có thiếu chứ không có thừa. Đây cũng là bước ngoặt quan trọng trong sự nghiệp của mình khi mình chọn lựa đi theo con đường hiểu biết rộng thay vì trở thành một backend chuyên sâu. Quyết định này của mình được hình thành sau khi mình rải CV ở mấy chục công ty và đi phỏng vấn cũng phải 2 chục chỗ.
~> Chỉ có trải nghiệm thực sự các cuộc phỏng vấn ở các công ty mới giúp bạn có một cái nhìn sâu sắc về con đường sự nghiệp của mình mà thôi. Còn đâu cứ xem trên mạng hay nghe ai đó kể lại chỉ giúp bạn mường tượng chứ không ăn thua đâu. Phỏng vấn là quá trình trưởng thành rất nhanh, và đây là quá trình mà bạn sẽ nhận thấy rõ ràng sự tiến bộ của bản thân thậm chí là qua từng cuộc phỏng vấn một luôn.
Như mình sau khi hẹn 4 công ty phỏng vấn trong cùng 1 ngày, mỗi công ty phỏng vấn đều ngồi nói chuyện tới gần 2h đồng hồ thì mình gần như là thuộc lòng hết cả tiểu sử, kinh nghiệm làm việc cũng như trả lời trôi chảy rất nhiều câu hỏi về kiến thức, tính cách cũng như định hướng công việc của bản thân luôn. Đây thật sự còn là một quá trình giúp mình tự tìm hiểu xem bản thân mình thích điều gì, không thích điều gì, ưa môi trường nào, ghét công việc nào,... nữa.
Vậy nên các bạn sinh viên, fresher hay junior cứ đừng ngại đi phỏng vấn mà hãy mạnh dạn rải CV rồi đăng CV của mình tá lả các nơi và kêu gọi chiếm lấy em đi nhé.
Động lực khiến mình viết và style viết của mình
Thật sự là nếu bạn chỉ đọc 1 bài viết nào đó trong 49 bài viết của mình thì sẽ chưa thể biết style viết của mình là gì đâu. Bởi vì mình... không có style gì cả =))).
Tất nhiên là do cùng một người viết thì sẽ có điểm chung, thế nhưng điểm chung mình thấy duy nhất lại là... dài. Tại sao mình lại viết dài, tại sao lại lan man chuyện đông chuyện tây từ mình gặp vấn đề gì, mình tìm hiểu nó ra sao, gặp những khó khăn nào,... mà không phải như muôn vàn bài viết mỳ ăn liền khác trên mạng là đi đúng trọng tâm, chia sẻ kết quả xịn xò và hướng dẫn các bạn làm theo luôn?
Vấn đề này cũng xuất phát từ chính cách học và cách ghi nhớ của mình. Mình chỉ có thể nhớ được điều gì đó (và nhớ rất lâu) nếu mình được trải nghiệm ngọn nguồn của nó. Tức là mình phải gặp vấn đề, phải đau đầu đi google, phải làm rồi sai be bét, phải thử cách lọ mó cách chai cơ thì mình mới nhớ được, còn nếu bụp phát người ta bảo mình làm theo vì người ta đã làm xịn trước rồi thì mình không thể nhớ hay biến nó thành kiến thức của mình được. Chính vì thế mà mình muốn khi truyền đạt lại 1 kinh nghiệm nào đó của mình thì các bạn cũng sẽ được trải nghiệm đúng những gì mình trải qua, được suy nghĩ giống mình, được làm sai giống mình, rồi đến cuối cùng tìm được một giải pháp khả dĩ nào đó nhờ sự hy sinh 1 yếu tố quan trọng (tính kinh tế). Mình muốn các bạn chìm đắm vào câu chuyện đủ lâu để có thể biến câu chuyện của mình thành câu chuyện của chính các bạn. Có như vậy thì kiến thức mới ở lại với các bạn được.
Tất nhiên là mình sẽ cố gắng dù viết dài nhưng sẽ ít nhàm chán nhờ những lần hóa thân vào đủ loại nhân vật như Sherlock Holmes, Tòa án, người đưa thư, phụ hồ xếp gạch,... để các bạn có thể coi những bài viết này là những mẩu chuyện giải trí tương đối nhẹ nhàng.
Còn động lực viết của mình thì tất nhiên là có nhiều yếu tố. Trong đó có việc lưu lại kiến thức của chính mình này (mình rất hay quên), được anh em bạn bè biết đến này, được bạn đọc ủng hộ này,... Một điều tương đối đặc biệt là động lực viết lách của mình có liên quan mật thiết đến động lực đi làm. Mình đã từng nói là:
- Mình sẽ chỉ ở lại 1 công ty nếu như công việc của mình đủ hay ho để ít nhất mỗi tháng mình có 1 ý tưởng viết bài mới.
Đôi khi công việc hay ho sẽ tạo động lực để mình viết ra bài viết hay ho, và bài viết hay ho sẽ là động lực để mình tiếp tục công việc ở công ty (dù tất nhiên là phần lớn sẽ lặp đi lặp lại).
Những chủ đề nổi bật
Ok lan man thế thôi, còn giờ hãy xem anh em đã đọc những gì và yêu thích những gì từ mình nhé:
- Bài viết nhiều view nhất - 10.7K view - Caching đại pháp 1: Nấc thang lên level của developer. Đây là bài viết mở đầu series Caching đại pháp chứa đựng những concept về caching cũng như những level cache mà mình từng áp dụng trong quá khứ.
- Bài viết nhiều upvote nhất - 277 upvote - Performance Optimization 101: Những câu hỏi cơ bản. Đây là bài viết mở đầu series Performance Optimization Guideline chứa binh pháp tôn tử về tối ưu hệ thống, từ việc tìm bottleneck cho tới tối ưu bằng cách nào.
- Bài viết được lưu lại nhiều nhất - 140 bookmark - vẫn là bài viết trên =)))
- Bài viết "xôm nhất" - 24 comment - Tôi và hành trình trốn chạy khỏi... Java kể về 1 chàng thanh niên đã dành cả thanh xuân để lẩn tránh 1 trong những ngôn ngữ phổ biến và lâu đời nhất thế giới: Java
Okay, vậy là có vẻ chủ đề về tối ưu, performance của mình là được các bạn quan tâm nhiều nhất. Vậy còn những chủ đề khác thì sao? Nếu bạn là 1 newbie thì bạn sẽ bắt đầu từ đâu? Dưới đây là những chủ đề bài viết được mình sắp xếp từ dễ tới khó, từ chung chung cho tới chuyên sâu.
Những bài viết về định hướng nghề nghiệp, kinh nghiệm phỏng vấn, kỹ năng làm việc,...
Đây là các bài viết không yêu cầu kiến thức gì để đọc mà chủ yếu là định hướng nghề nghiệp, chuyện học hành, làm CV, quy trình,...
- Học IT thì làm gì hot? nói về nghề nào sẽ kiếm ngàn đô trong ngành IT
- Chuyện học ngôn ngữ của chàng trai 28 tuổi thông thạo 10 thứ tiếng: đây là những ngôn ngữ lập trình mình đã học và quan trọng hơn là tại sao mình lại học ngôn ngữ ấy.
- Chiếc CV đầu tiên của một sinh viên kinh tế chuyển ngành nói về tấm CV xin việc đầu tiên của mình khi trong tay gần như chưa có kinh nghiệm gì cả
- Fresher developer và những cuộc phỏng vấn ối dồi ôi phần 1 nói về những lỗi cần tránh khi phỏng vấn fresher từ góc nhìn của nhà tuyển dụng
- Phòng tránh merge conflict khi làm việc cùng team nói về quy trình setup quy chuẩn làm việc với Git để tránh conflict khi làm việc nhóm
- Thế nào mới là 1 DevOps thật sự nói về quy trình và công việc của một real DevOps trong công ty
Docker cơ bản cho môi trường phát triển cho tới triển khai production
Đây là một số bài viết khá cơ bản về Docker của mình, các bạn gần như chỉ cần 1 ít kiến thức về docker là có thể đọc và áp dụng vào quy trình dev cũng như triển khai của mình. Riêng với bài Zero-downtime cuối cùng sẽ hơi chuyên sâu về triển khai ứng dụng trên Kubernetes thì tất nhiên là sẽ cần thêm 1 ít kiến thức về K8S nữa.
- Series Developer hiện đại với docker: setup môi trường dev local với docker
- Series Từ phát triển tới triển khai: đóng gói ứng dụng và triển khai container lên production
- Container-native: developer 2019 có cần phải biết?: những tiêu chí để ứng dụng phù hợp với việc triển khai bằng container
- Docker image in production - câu chuyện 1GB hay 100MB: tối ưu docker image cả về thời gian build và dung lượng để triển khai trên production
- Zero-downtime với Kubernetes P1: Truly stateless application: kinh nghiệm triển khai ứng dụng lên Kubernetes đạt zero-downtime của mình
Sự nghiệp Data và những kinh nghiệm của mình khi là Data Engineer
Phần này chủ yếu là kiến trúc những hệ thống data mình đã làm, mình tổ chức data ra sao, process thế nào, dùng những kiểu dữ liệu gì. Đến cuối mới có 1 phần cần thêm kiến thức monitoring thôi nên khá dễ tiếp cận kể cả với những người chưa từng làm data muốn bắt đầu.
- Hệ thống analytic "sương sương" từ dữ liệu 30 triệu người dùng là kinh nghiệm xây dựng từng bước hệ thống Business Intelligence từ thuở sơ khai cho tới khi thành tài của một trong những công ty phát hành game lớn nhất VN.
- Hồi ức của một Data Engineer (nửa mùa) là trải nghiệm cá nhân của mình trên con đường học tập và trở thành một Data Engineer (nửa mùa) - vốn là một con đường đầy gian khổ và cần sự cần cù vượt bậc để học thật nhiều loại kiến thức khác nhau.
- Analytic cho người nông dân: Bài toán đếm số giới thiệu những kiểu dữ liệu được mình sử dụng cho tác vụ đếm - vốn là tác vụ quan trọng và có lượng dữ liệu lớn nhất của các hệ thống làm data.
- 1 ngày làm analytic: Đo lường CCU theo thời gian thực: đây là 1 trải nghiệm kết hợp giữa data engineer và devops để xây dựng hệ thống monitoring CCU cho mạng xã hội lai chim xem bóng mà ai cũng biết đó
Kiến trúc và những bản vẽ của một Solution Architect
Đây là chủ đề tương đối khó và rộng khi mình đề cập đến kiến trúc cũng như kiến thức về khá nhiều thành phần trong hệ thống, từ xử lý ảnh, chat realtime, notification, background job,... Các bài viết này chứa rất nhiều kinh nghiệm của mình khi làm qua các hệ thống tuy nhiên mình nghĩ là tương đối dễ đọc khi các bài viết đều có hướng tiếp cận từ cơ bản đến nâng cao, từ yêu cầu bài toán cho đến đưa ra giải pháp dần dần.
- Software Architect: Bad practices: những vết xe đổ nên tránh khi bước chân vào con đường vẽ vời hệ thống mà mình đã rất may mắn được trải nghiệm qua
- Series Authentication Story: những kiến thức cơ bản về thành phần quan trọng bậc nhất của mọi hệ thống phần mềm hiện đại - authentication.\
- Series Nghệ thuật xử lý background job: kỹ thuật xử lý tác vụ nặng từ cơ bản tới nâng cao qua 4 bài viết giúp "lên trình" các hệ thống theo những cách hiệu quả bất ngờ.
- Event driven programming và câu chuyện người đưa thư: Thiết kế hệ thống không chờ đợi và giao tiếp theo hướng event-driven từ nội bộ process bằng eventbus cho tới giữa các micro-services bằng kafka
- Chat chit và bức tranh về realtime communication là một bức tranh tổng thể về những gì mà các ông lớn đang làm cũng như thứ mà mình sẽ làm khi xây dựng một hệ thống giao tiếp thời gian thực như ứng dụng chat
- Series Chuyện anh thợ xây và write-heavy application: Đây là câu chuyện về việc xây dựng hệ thống write-heavy và cách thiết kế các thành phần service để dư sức handle lượng request write rất lớn (vốn là thứ thường bị anh em bỏ quên khi chỉ tập trung vào read request)
- Distributed monolith và pha cứu thua ngoạn mục của team DevOps là một trong những kinh nghiệm đáng nhớ nhất của mình để biến không thành có: tối ưu cái cùi bắp hiện tại mà không phải đu trend micro-services và lỗi tè le.
- Bí thuật xử lý ngữ pháp notification như Facebook: Cách xây dựng hệ thống notification xịn như Facebook và có thể cắm vào mọi hệ thống chỉ bằng việc quy định một quy chuẩn ngữ pháp đơn giản.
- Xử lý thumbnail trong các ứng dụng hiện đại: kinh nghiệm xây dựng hệ thống lưu trữ và xử lý hình ảnh, thumbnail cho mạng xã hội.
- Tự động generate thumbnail cool ngầu khi share website lên facebook: hệ thống tạo ảnh preview on-demand khi chia sẻ url lên facebook cực kỳ xịn xò.
Tối ưu performance và công việc của một performance engineer
Đây có lẽ là chủ đề mà phần lớn bài viết của mình đều có đề cập tới dù ít hay nhiều: performance. Ngoài ra thì đây cũng là những bài viết nâng cao nhất, đòi hỏi nhiều kiến thức nhất khi đọc (do đó mình đã để dưới cuối nè). Tất nhiên ở đây mọi công nghệ, mọi thủ đoạn à thủ thuật ở đây đều có thể dễ dàng áp dụng và cực kỳ thực tế chứ không phải chỉ mang tính chất khoe hàng như blog của mấy ông lớn. Tuy nhiên các bạn cũng nên chuẩn bị 1 chút tâm lý và kiến thức vì trong đây chứa đựng khá nhiều keyword và kiến thức (từ sách hẳn hoi) trước khi đọc để có hiệu quả cao nhất.
- Series Performance Optimization Guideline: đây là series kỳ công nhất, chứa nhiều chất xám nhất của mình dù mới chỉ hoàn thành 1 nửa. Hy vọng sẽ là cuốn bí kíp gối đầu giường của các Performance Engineer nói riêng cũng như mọi anh em dev nói chung với 6 bài viết chuyên sâu về những cách tiếp cận tối ưu, những điều nên tránh, tìm bottleneck, đo lường performance,... Đây cũng là công trình duy nhất mình (là 1 người rất ít đọc sách) phải ngồi nghiên cứu thêm cả mấy quyển sách dày cộp để tự học thêm kiến thức trước khi viết bài nên khá là tốn não mới load hết đó nhé.
- Series Caching đại pháp: đây là series hoàn chỉnh nhất với 4 bài viết về mọi khía cạnh mà mình có thể nghĩ ra của tối ưu read performance bằng caching, từ caching là gì, có những level nào, cache ở đâu, như thế nào và những vấn đề gặp phải với từng phương pháp,... Wào, MUST READ nhé.
- Bài toán "Super fast API" với Golang và Mongodb: caching in-memory và cách mình vận dụng vào một hệ thống có traffic read lớn hàng đầu của mạng xã hội
- Kỳ án tốc độ: Nỗi oan của chàng Redis: câu chuyện về tối ưu cho bài toán blacklist dữ liệu lớn và minh oan cho công nghệ distributed caching nổi tiếng nhất hiện nay: Redis
- Tôi, NuxtJS và trang livestream vạn CCU: tối ưu frontend cho một trang livestream với target hàng vạn CCU dù bản thân mình không phải là frontend developer chính hiệu.
- API NodeJS của tôi đã handle peak traffic như thế nào?: tối ưu luôn backend cho trang livestream phía trên với sự kết hợp của nhiều giải pháp caching. Đọc và bạn sẽ nhận ra việc tối ưu không chỉ đơn giản là tăng RPS (request per second) mà còn là các bài toán về băng thông hay CPU nữa.
Vài chủ đề khác
Một vài bài viết về chủ đề bảo mật hay tối ưu database đọc chơi chơi như:
- Zalo đã mã hóa Web API của họ như thế nào?: Thuần túy về nghịch ngợm 1 trong những ông lớn về chat tại Việt Nam khi giải thích cho nhiều anh em làm tool về cách mà Zalo bảo vệ API của họ.
- Sherlock Mon và vụ án 25 website wordpress bị hack là câu chuyện mình phải điều tra lỗ hổng khi 1 hệ thống vệ tinh của công ty bị hack
- Nghệ thuật index mongodb: 5 kế sách có thể các hạ chưa biết: những chiến lược index ít người biết tới nhưng lại cực kỳ hiệu quả với mongodb
Tổng kết
Nhìn lại những bài viết đã qua mới biết 5 năm với mình là một chặng đường dài. Có những thứ đến giờ mình ngồi đọc lại cũng không hiểu tại sao lúc đó có thể kiên nhẫn ngồi viết ra bao nhiêu thứ đến vậy. Được cái khá may mắn là những kiến thức trong các bài viết của mình tới giờ có vẻ vẫn chưa lỗi thời và vẫn có giá trị với nhiều bạn đọc. Nếu ai chưa đọc hết thì cố gắng đọc hết 50 bài viết của mình nhé. Hy vọng những bài viết này dù không giúp các bạn vươn tới đỉnh cao nghề nghiệp thì cũng giúp được các bạn tiến thêm một bước trên con đường học tập không ngừng của mình.
Nhân đây mình xin chúc các bạn một năm mới vui vẻ, mạnh khỏe và nhiều thành công.