Tôi đã Xuyên Đêm xây web
Viết từ những đêm mưa · t2tDigital
“Không phải để lãng mạn hóa những đêm thức trắng.
Đây là câu chuyện về cái giá thật của việc dựng một website có hồn.”
Xuyên Đêm · t2tDigital
… 3h40 phút sáng…
🕓 … 3h40 phút sáng…
🕯 … Tôi đang viết, tối nay. Ngay bây giờ…!!!
🐓 Đã lác đác tiếng gà gáy canh khuya.
Một số người bán chợ sớm đã dậy, đi ra phố;
mà tôi vẫn còn ngồi bên ánh đèn, chưa rời bàn phím…
☕ Ly cà phê đã lạnh dưới ánh đèn vàng…
🌧️ Mưa khuya vẫn lách tách rơi ngoài hiên…
🍃 Gió còn mãi thì thầm nhẹ lay song cửa…
… khe khẽ chạm vào những suy nghĩ chưa viết nên câu.
❄️ Giữa cái lạnh của cơn bão ngoài kia…
tôi lại thấy lòng mình ấm hơn bao giờ hết.
Đây là câu chuyện xây dựng website cá nhân của t2tDigital —
một hành trình thật, viết trong những đêm mưa.
Không phải để lãng mạn hóa chuyện thức khuya.
Cũng không phải để kể rằng mình đã cực nhọc ra sao.
Có những đêm chỉ đơn giản là:
nếu dừng lại ở đó,
mình biết dự án sẽ còn dang dở một điều gì đó rất khó gọi tên.
Mắc kẹt trong sự hoàn hảo.
Có một khoảng thời gian, t2tDigital nằm yên ở ranh giới rất lạ:
đã có hình hài,
đã có vài trang đầu tiên,
đã có một niềm tin rất rõ trong lòng —
nhưng vẫn chưa thể bước ra ngoài một cách trọn vẹn.
Tôi từng nghĩ website của mình phải thật hoàn hảo ngay từ ngày đầu tiên.
Mỗi pixel phải khớp.
Mỗi đoạn chữ phải đúng nhịp.
Mỗi hiệu ứng phải vừa đủ.
Mỗi trang khi mở ra phải làm người đọc thấy được rằng:
nơi này được dựng bằng sự tử tế.
Nhưng càng muốn nó xứng đáng,
tôi lại càng chần chừ.
Cứ sửa.
Rồi chỉnh.
Rồi xem lại trên điện thoại.
Rồi quay về desktop.
Rồi thấy một khoảng cách chưa ổn,
một dòng chữ chưa đủ mềm,
một khối giao diện chưa thật sự “có hồn”.
🌫️ Tôi không bị mắc kẹt vì chưa biết làm.
Mà vì tôi đã biết quá nhiều thứ có thể làm...
nên không biết bắt đầu từ đâu.
Đó là một cái kẹt rất thật.
Không phải cái kẹt của người không biết đường.
Mà là cái kẹt của người thấy quá nhiều ngã rẽ,
quá nhiều cách làm,
quá nhiều khả năng có thể tốt hơn nữa.
Và rồi tôi nhận ra:
nếu cứ đợi đến lúc mọi thứ hoàn hảo tuyệt đối,
có lẽ website này sẽ chẳng bao giờ thật sự được sống.
Nên tôi chọn bắt đầu bằng thứ đang có:
một chút ánh đèn,
một chút mưa khuya,
một chút vụng về còn thật,
và một lời hứa với chính mình rằng —
mình sẽ không bỏ rơi dự án chỉ vì nó chưa hoàn hảo.
Người đứng sau màn hình.
Đằng sau một website nhìn có vẻ yên,
thật ra là một người rất đời.
Ban ngày, tôi vẫn còn công việc mưu sinh.
Vẫn còn cửa hàng.
Vẫn còn khách ra vào.
Vẫn còn những việc rất nhỏ nhưng phải làm cho tử tế:
sửa máy, tư vấn, lắng nghe, giải thích lại từ đầu cho người chưa quen công nghệ.
Đêm xuống, khi mọi thứ chậm lại,
tôi mới trở về với t2tDigital.
Mở laptop.
Mở lại những file đang dở.
Đọc lại từng câu.
So lại từng khoảng trắng.
Sửa lại từng đoạn CSS tưởng chừng rất nhỏ,
nhưng có thể làm cả một khối cảm xúc bị lệch đi.
Không có một ekip lớn ngồi phía sau.
Không có phòng sáng đèn như agency.
Không có bảng timeline hào nhoáng.
Chỉ có một người thật,
đang cố dựng một ngôi nhà số bằng tất cả những gì mình đã học,
đã làm,
đã sai,
đã trả giá,
và vẫn còn muốn chia sẻ lại.
Nếu muốn đi xa hơn một chút về người đứng sau những đêm đó,
bạn có thể đọc mảnh ký ức của người thanh niên 1998 —
nơi câu chuyện không bắt đầu bằng một website, mà bằng một chiếc máy cũ và rất nhiều lần tự học trong im lặng.
Còn ở trang này,
tôi chỉ muốn kể lại một đoạn đường khác:
đoạn đường mà một website bắt đầu có hình hài,
rồi dần dần có luật,
có ký ức,
có nếp làm việc,
và có một nhịp tim riêng của nó.
Những cú lú không nằm trong tài liệu.
Tôi không lú vì thiếu kiến thức.
Tôi lú vì tưởng mình biết đủ.
Có những đêm, một lỗi nhỏ làm tôi hoài nghi cả dự án.
Một khối giao diện lệch vài pixel.
Một màu chữ tưởng đã đổi nhưng ngoài frontend vẫn lì lợm không chịu chạy.
Một vùng mobile bỗng dưng tràn ngang chỉ vì đâu đó còn sót một khoảng trắng không ai thấy.
Có thứ nghe thì biết.
Đọc thì hiểu.
Nhưng làm thật mới thấy mình chưa hiểu đủ sâu.
Một cú chỉnh CSS tưởng đơn giản có thể kéo theo cả dây:
Elementor tự thêm style,
selector cũ đè selector mới,
cache giữ lại phiên bản trước,
rồi responsive mobile lại cư xử khác desktop.
Lúc ấy, kỹ thuật không còn là mấy dòng code lạnh.
Nó trở thành một bài học về kiên nhẫn.
Về sự khiêm nhường.
Về chuyện muốn làm cho đúng thì phải chịu ngồi lại đủ lâu với cái sai.
Có những thứ nghe thì biết,
đọc thì hiểu,
nhưng làm mới thấy… lú.
Và chính những cú lú đó làm tôi nhớ lâu hơn bất kỳ tài liệu nào.
Vì mỗi lần sửa được một lỗi,
mình không chỉ hiểu thêm một dòng CSS.
Mình hiểu thêm một chút về cách một hệ thống sống,
cách các lớp chồng lên nhau,
và cách một thay đổi nhỏ có thể làm người đọc hụt nhịp.
👉 Vì vậy tôi mới có câu:
“Biết qua không bằng làm qua.
Làm qua không bằng… lầm qua.”
💡 Và tôi tin rằng:
“Sai lầm… là phần mềm khởi chạy của kỹ năng!”
Nếu bạn từng ngồi hàng giờ vì một lỗi nhỏ,
từng thấy mình “biết rồi” mà vẫn làm sai,
từng mở DevTools lên rồi thở dài,
có lẽ bạn sẽ hiểu:
có những bài học không đi vào đầu bằng lý thuyết.
Nó đi vào người mình bằng một đêm dài.
Từ bản vẽ tay đến bản đồ chiến lược.
Sau những cú lú,
tôi bắt đầu hiểu rằng:
một website không thể sống lâu nếu mọi thứ chỉ nằm trong đầu người làm.
Ban đầu, nhiều thứ chỉ là ghi chú rời.
Một ý tưởng trong sổ.
Một đoạn CSS vá nhanh.
Một quyết định thiết kế tưởng nhỏ.
Một cái tên file đặt vội cho kịp đêm.
Nhưng càng đi xa,
tôi càng thấy nếu không có bản đồ,
mình sẽ phải trả giá lại nhiều lần cho cùng một kiểu lỗi.
Tụi mình không chỉ dựng một trang web.
Tụi mình đang dựng một ngôi nhà có bản đồ,
có ký ức,
và có đường quay lại.
Từ đó, t2tDigital dần có OTS cho từng trang.
Có luật viết.
Có luật template.
Có phân vai giữa nội dung và layout.
Có cách gọi tên từng selector,
từng family,
từng vùng kỹ thuật đang sống.
Không phải để làm mọi thứ phức tạp hơn.
Mà để sau này,
khi quay lại sửa một điều nhỏ,
mình không phải sợ làm vỡ cả một phần hồn của dự án.
Những cú debug ban đầu dạy tôi cách sửa một lỗi.
Nhưng những đêm sau đó dạy tôi một điều lớn hơn:
muốn đi xa,
hệ thống phải có trí nhớ.
Ánh đèn, lòng người, và cái giá của sự chỉn chu.
Có những lỗi không nằm trong tài liệu nào.
Mà nằm trong những đêm dài không ai chứng kiến —
nơi ta lú lên lú xuống chỉ vì một dấu cách,
một khoảng thở,
một dòng chữ chưa chịu đứng đúng chỗ.
t2tDigital được tạo ra từ những đêm như vậy.
Những đêm sửa giao diện.
Những lần gỡ CSS.
Những buổi test trên nhiều màn hình,
chỉ để chắc rằng khi người đọc mở trang lên,
họ không bị vấp ở một chỗ đáng lẽ phải mượt.
Có khi đó là một khoảng cách giữa heading và đoạn văn.
Có khi là caption của một bức ảnh.
Có khi là một đường link nội bộ đặt sai chỗ,
làm mạch đọc bị gãy.
Có khi chỉ là một màu nền quá gần nhau,
khiến quote quan trọng không đủ nổi để người đọc dừng lại.
Và có những đêm dài ròng rã suốt ba tháng —
từ 10/3 đến 10/6 —
chỉ để gọt từng dòng text,
chỉnh từng ngắt dòng,
đo từng khoảng trắng.
Không phải vì tụi mình muốn làm mọi thứ cầu kỳ.
Mà vì tụi mình tin:
một nền móng vững vàng sẽ giúp mọi thứ sau này nhẹ tênh mà vẫn đẹp đẽ.
Nếu bạn cảm nhận được sự chỉn chu trong từng dòng chữ,
từng cú click,
từng khoảng thở của trang —
đó không phải là chuyện ngẫu nhiên.
Đó là cái giá của những đêm không ngủ,
và của cái tâm muốn cho đi những gì thật sự có giá trị.
Khi phải cân bằng giữa cảm xúc, cấu trúc và khả năng được tìm thấy trên Google,
mình vẫn tự nhắc rằng SEO trước hết là giúp người đọc và công cụ tìm kiếm hiểu đúng nội dung.
Nếu muốn xem gốc khuyến nghị chính thức, bạn có thể đọc Cẩm nang SEO cơ bản của Google.
Một website có thể được dựng bằng code.
Nhưng để nó có hồn,
từng quyết định nhỏ phải nhớ rằng phía bên kia màn hình là một con người.
Vì vậy, có những đêm tôi không chỉ sửa giao diện.
Tôi sửa lại cách mình nghĩ về việc làm web.
Không phải đẹp hơn để khoe.
Mà rõ hơn để người đọc đỡ mệt.
Không phải nhiều hiệu ứng hơn.
Mà đúng nhịp hơn.
Không phải chuẩn kỹ thuật cho vui.
Mà để kỹ thuật không giết mất ngôn ngữ sống của dự án.
🌒 Và đêm nay, tôi lại học lại bài học cũ của thời IT:
Kiến thức có thể học nhanh. Nhưng trưởng thành thì phải trả giá bằng thời gian.
Không phải lúc nào cũng cần một kỹ sư vĩ đại ngay từ đầu.
Nhiều khi chỉ cần một người dám ngồi lại,
dám sửa,
dám học,
và dám thừa nhận mình còn lú.
✨ Dám thừa nhận mình lú,
để ngày mai bớt lú hơn hôm nay.
Sau những đêm đó, t2tDigital có gì?
Sau những đêm đó,
t2tDigital không chỉ có thêm vài trang được chỉnh đẹp hơn.
Nó có một cách làm việc rõ hơn.
Có một bộ luật để không lạc.
Có một nơi ghi lại quyết định.
Có những trang mood đủ chậm để giữ hồn,
và những bài knowledge đủ rõ để người đọc có món mang về.
Nó có một trang About để người đọc gặp người đứng sau dự án.
Có STT Đêm Khuya như một điểm lặng.
Có một không gian Xuyên Đêm như một nơi ghi lại những đoạn đường chưa thể nói bằng ngôn ngữ kỹ thuật thuần túy.
Và quan trọng hơn,
nó có một thước đo rất đơn giản:
người đọc gấp bài lại có nhẹ hơn một chút không?
Có hiểu thêm điều gì không?
Có bớt thấy mình một mình giữa thế giới số không?
Một ngôi nhà số không sống bằng số trang.
Nó sống bằng lý do khiến từng trang được viết ra.
Nếu bạn cũng đang dựng điều gì đó một mình.
Nếu bạn cũng đang dựng một điều gì đó một mình —
một website,
một kênh chia sẻ,
một kỹ năng mới,
một công việc mới,
hay chỉ là một phiên bản tốt hơn của chính mình —
có lẽ bạn sẽ hiểu cảm giác này.
Đừng chờ mọi thứ hoàn hảo rồi mới bắt đầu.
Nhưng cũng đừng làm cẩu thả chỉ để gọi là đã làm.
Hãy bắt đầu bằng điều thật nhất mình đang có.
Rồi đặt tên cho từng phần.
Cho nó một vai.
Một lý do.
Một đường quay lại.
Không cần bắt đầu bằng một hệ thống hoàn hảo.
Nhưng hãy bắt đầu bằng một điều thật —
rồi dựng từng viên gạch có tên,
có vai,
có đường quay lại.
Tôi đã xuyên đêm xây web không phải vì web là tất cả.
Mà vì trong hành trình dựng web đó,
tôi học lại cách làm một điều cho đến nơi đến chốn:
làm kỹ thuật mà vẫn giữ được lòng người,
làm nội dung mà vẫn giữ được sự thật,
và làm một dự án nhỏ mà không để nó đánh mất linh hồn.
Còn nếu bạn muốn rời căn phòng đêm này để bước sang những phần dễ áp dụng hơn,
có thể bắt đầu từ
· Khám phá cùng t2tDigital
· Giải mã Công nghệ
· Công cụ & Mẹo

