Do bài này khá bổ ích nên Karmi Phúc đã tiến hành dịch lại từ trang SitePoint để các bạn cùng tham khảo.
Source: Version Control Tutorial
Nếu bạn chưa từng sử dụng hệ thống quản lý phiên bản nào, bạn có thể đã gặp rắc rối khi lỡ thay đổi code rồi hối hận muốn “quay ngược thời gian” để có được phần code cũ. Hoặc có lẽ, cách quản lý phiên bản hiện tại của bạn chỉ là thêm 1 hậu tố sau tên file, như index_17.html
chẳng hạn.
Việc sử dụng 1 hệ thống quản lý phiên bản sẽ cho phép bạn lấy lại một phiên bản bất kì: từ cách đây vài giờ đến cách đây vài tháng. Hãy tưởng tượng 1 hệ thống quản lý thô sơ như khi bạn sử dụng Google Drive, bạn có thể phục hồi lại các phiên bản cũ của 1 file tùy ý khi file đó có các sự thay đổi.
Nếu bạn phân vân giữa các hệ thống quản lý phiên bản thì hãy xem bài tổng quan tình hình của các hệ thống thông dụng của năm 2014 tại SitePoint. Về cá nhân mình thích các hệ thống quản lý phiên bản phân tán như Git hay Mercurial hơn, và cũng 1 phần là mình thích các phần mềm nguồn mở. Bạn có thể xem thêm hướng dẫn bắt đầu với Git và cách hướng dẫn xài Git cho các dự án nguồn mở.
Nếu bạn muốn một tutorial về Git bằng tiếng Việt thì cddos.net sẽ viết sau khi serie VPS căn bản hoàn thành.
Source: Manuel’s Web Page
Phần lớn thời gian của một lập trình viên thường là ngồi trước màn hình máy tính và dòm lom lom vào 1 trình soạn thảo. Tùy vào nhu cầu và môi trường phát triển của mỗi người mà sự lựa chọn trình soạn thảo cũng khác nhau. Tuy nhiên, dù là trình soạn thảo nào đi chăng nữa, bạn cũng nên dành thời gian để học cách sử dụng nó pro hơn, cũng như học các mẹo hay cách sử dụng hay ho khác.
Nếu bạn thường làm việc trên môi trường dòng lệnh (terminal), bạn có thể làm quen với VIM hay Emacs. Nếu không thì Sublime Text hay TextMate for Mac là các lựa chọn tốt.
Một số trình soạn thảo cho phép bạn tăng cường sức mạnh với các plugins (trình cắm) và extensions (tiện ích mở rộng). Đây là danh sách các trình cắm cần thiết cho Sublime Text cho 1 lập trình viên hướng full stack.
Source: XKCD
Một ứng dụng cần lưu trữ dữ liệu sẽ cần chọn file hoặc cơ sở dữ liệu (CSDL). Các ứng dụng web thường sử dụng CSDL cho nhu cầu lưu trữ, do sử dụng nhanh và dễ dàng truy vấn hơn khi lưu file.
SQL (Structured Query Language – ngôn ngữ truy vấn có cấu trúc) là một ngôn ngữ được viết riêng cho việc truy vấn dữ liệu từ 1 CSDL. Tuy nhiên, các kiến thức cơ bản về SQL vẫn là chưa đủ để bạn có thể xây dựng những ứng dụng web phức tạp (có sử dụng nhiều bảng hơn, hay thậm chí nhiều CSDL ở nhiều server khác nhau).
Nếu bạn quan tâm SQL, tôi đề nghị bạn đọc qua quyển sách Simply SQL của Ruby Limeback. Nếu bạn vẫn gặp rắc rối với một số câu lệnh SQL nào đó, cứ đăng lên forum SitePoint và sẽ có người giúp bạn ngay.
NoSQL là viết tắt của Not Only SQL (tạm dịch: “Không chỉ là SQL”) là các hệ CSDL có cách tổ chức dữ liệu khác với dạng bảng truyền thống của các hệ CSDL SQL. Các CSDL NoSQL sẽ được xây dựng với 2 mục đích là tính khả dụng cao (khi làm việc với lượng lớn dữ liệu) và tăng trưởng theo chiều ngang (horizontal scaling). Về mặt truy vấn dữ liệu, NoSQL thường có ngôn ngữ truy vấn giống SQL.
Các CSDL NoSQL được được phân lớp theo cách mà chúng tổ chức dữ liệu. Dù một số công ty lớn như Quora không dùng NoSQL, nhưng các startup lại rất chuộng, đặc biệt khi họ cần xử lý lượng lớn dữ liệu.
Ở mức độ cao hơn nữa, bạn sẽ cần nghĩ đến việc tăng trưởng cho các CSDL thông qua việc tạo replication và sharding (hiểu nôm na là tạo các bản sao và các phân mảnh).
Có nhiều thao tác nếu sử dụng ở terminal sẽ nhanh hơn nhiều khi làm trên giao diện người dùng GUI. 1 trường hợp cụ thể như khi bạn cần tìm kiếm 1 chuỗi kí tự trên hàng ngàn file và thay thế nó bằng 1 giá trị khác chỉ trong vài giây. Ngoài ra, còn 1 số lý do khác thể hiện sức mạnh của terminal trên các hệ thống nền Unix có thể được theo dõi ở đây.
Nếu bạn thường làm việc trên các hệ thống server ở xa, bạn càng cần phải trau dồi kĩ năng làm việc trên terminal. Đồng ý là bạn có thể sử dụng giao diện GUI để làm việc tiện hơn, nhưng terminal sẽ luôn thao tác nhanh hơn. Hơn nữa, terminal cũng tiết kiệm băng thông của bạn hơn GUI, vì thật ra dữ liệu trao đổi qua lại chỉ là các chuỗi kí tự thôi.
Để làm quen với terminal, hãy thử duyệt file và thực hiện các thao tác cơ bản như sao chép, di chuyển các file. Dần dần, bạn sẽ quen thuộc và có thể thực hiện một số thao tác nâng cao nhanh hơn chỉ với vài câu lệnh, mà không cần phải click chuột 1 nùi như trên GUI nữa.
Sức mạnh thực sự của terminal là ở các câu lệnh đa dạng với hàng loạt cách sử dụng khác nhau. Như ở ví dụ trên, bạn có thể dùng sed
để thay thế kí tự trong file, grep
để tìm kiếm và awk
để thao tác file nâng cao hơn nữa. Nếu bạn là 1 Sysadmin, đây là danh sách 25 câu lệnh terminal quan trọng và thường dùng mà bạn cần biết.
Nếu bạn hoàn toàn xa lạ với Linux, cddos.net sẽ có serie hướng dẫn cách sử dụng VPS Linux cơ bản toàn tập và ở đó bạn sẽ làm quen với các Linix command line.
Bản chất công việc của 1 lập trình viên thường đòi hỏi bạn đưa code lên một server và cấu hình để nó hoạt động theo ý bạn muốn.
Khi bạn đã quen với việc sử dụng terminal, bạn nên thử thách mình bằng cách tự cấu hình và thao tác trên server.
Mặt khác, bạn có thể sử dụng 1 giải pháp trên cloud. Amazon Web Services (AWS) cung cấp 1 giải pháp nhỏ trên cloud và hoàn toàn miễn phí (bạn chỉ cần cung cấp thông tin thẻ tín dụng là đủ). Các dịch vụ khác bạn có thể thử như Microsoft Azure, Openshift RedHat hay Digital Ocean. Nếu bạn muốn xài thử AWS thì có thể làm theo bài hướng dẫn của chính Amazon tại đây. Khi đã tạo xong, bạn có thể đăng nhập vào thông qua SSH và sử dụng terminal như bình thường.
Một lưu ý khi sử dụng AWS là, Amazon nắm thông tin thẻ tín dụng của bạn. Mọi lưu lượng sử dụng vượt quá mức cho phép của giải pháp miễn phí sẽ tự động tính chi phí và trừ vào tài khoản của bạn. Do đó, hãy liên tục theo dõi lưu lượng sử dụng của mình và tắt các tính năng không cần thiết nếu bạn sợ mất tiền.
Một khía cạnh quan trọng của lập trình chính là Unit Test. Khi làm việc với 1 dự án lớn, bạn không thể cứ code hết tất cả và mong đợi vào việc “bấm phát chạy ngay“. Sẽ tốt hơn nếu bạn chia code thành từng phần chức năng nhỏ và viết test riêng cho từng phần đó.
Có nhiều phương pháp để thực hiện Unit Test, và cũng phụ thuộc vào các ngôn ngữ lập trình. Tuy nhiên, ý tưởng cốt lõi vẫn luôn là: chia code thành các phần và viết test cho chúng. Bạn có thể xem thêm:
Đừng nghĩ đây là phiền phức nhé, vì Unit Test là 1 kĩ năng rất quan trọng và hữu ích để giảm thiểu cũng như giải quyết bug. Bạn càng thực hiện test cẩn thận thì bạn càng chứng tỏ mức độ chuyên nghiệp và chất lượng sản phẩm của bạn càng cao, nhất là cho các lập trình viên freelance.
Markdown được đề cập cuối cùng vì nó không phải ảnh hưởng trực tiếp đến kĩ năng cũng như cách thức bạn code. Tuy vậy, đây là 1 kĩ năng rất tuyệt cho các lập trình viên mã nguồn mở, cho blogger hay những người thường xuyên biên tập trên web.
Markdown là 1 công cụ để chuyển từ văn bản đơn thuần sang HTML một cách nhanh chóng và dễ sử dụng. Việc định dạng hay tùy chỉnh được thực hiện ngay khi bạn viết, theo một quy tắc đơn giản đã quy định trước. Một ứng dụng phổ biến của Markdown chính là các file README trên GitHub hay BitBucket. Markdown cũng được sử dụng chính trong Ghost, một nền tảng blog mới nổi gần đây vì tính đơn giản và thiết kế trang nhã. Do đó, trong tương lai gần, nếu bạn là một blogger ưa sự tiện dụng và muốn ưu tiên nội dung hơn là định dạng lằng nhằng, hãy chuyển dần sang Markdown đi, bạn sẽ thích ngay.
Để làm quen với Markdown, hãy tập sử dụng các trình soạn thảo trực tuyến như Markable, hay StackEdit (mình thích dịch vụ này, vì đẹp hơn và có thể sync lên Google Drive tốt). Nếu bạn muốn “say byebye” với trình WordPress Editor để viết blog bằng Markdown luôn thì cài plugin WP-Markdown hoặc sử dụng Jetpack.
Còn chờ gì nữa? Markdown không khó nhưng lại rất hữu ích đấy. Học ngay và luôn tại đây nào. Nếu bạn muốn học Markdown chuẩn quốc tế thì hãy xem thêm ở đây.
Đây là danh sách những kĩ năng mà mình nghĩ có thể học nhanh trong vòng vài buổi cuối tuần. Có kĩ năng nào có thể học nhanh mà bạn nghĩ là cần thiết nữa không? Hãy cho mình biết ở phần bình luận bên dưới nhé.