Xin chào, và xin tự giới thiệu mình là Yang,là một kẻ ngoại đạo vừa bước chân vào ngành công nghiệp phần mềm.
Ngay khi vừa bước vào, Yang đã phát hiện mình có một lỗ hỗng tư duy rất lớn. Nó lớn đến nỗi mà Yang biết là, mình sẽ không thể nào tiến xa hơn được, với cái tư duy hiện tại của mình. Yang mong muốn thông qua cuốn sách The Code Complete 2 của Steve McConnell sẽ thay đổi được điều đấy.
Nào, hãy bắt đầu chuyến hành trình cùng Yang nào.  Hi vọng các bạn sẽ thích. Chúc các bạn may mắn. 

Chapter 1. Welcome to Software Construction
Bạn biết đấy, khi mà chúng ta dùng từ "xây dựng"- construction- có nghĩa là từ đó sử dụng ở ngoài ngành phát triển phần mềm. 
"Xây dựng" là công việc khi các công nhân xây dựng làm khi họ xây một cái nhà, một cái trường, hay một tòa nhà chọc trời. Khi bạn còn nhỏ, bạn thậm chí còn làm ra những thứ còn không có trong bản vẽ kỹ thuật. Theo lề thoái thường, "xây dựng" còn đồng nghĩa với quá trình xây lên một cái gì đó. Việc "xây dựng" còn bao gồm một số khía cạnh của quy hoạch, thiết kế, kiểm tra tiến độ, nhưng xây dựng chủ yếu ám chỉ công việc bằng tay xây lên cái gì đó, đúng không nào.

What is Software Construction?
Phát triển phần mềm vi tính có thể là quá trình phức tạp.
Trong 25 năm gần đây, các nhà nghiên cứu đã xác định được có nhiều hoạt động khác nhau khi đi vào phát triển phần mềm. Những hoạt động đó bao gồm :
+ Định nghĩa vấn đề
+Những yêu cầu cho việc phát triển 
+Lên kế hoạch để xây dựng
+Kiến trúc phần mềm hoặc thiết kế ở mức cao hơn
+Thiết kế chi tiết
+Lập trình và chữa lỗi
+Kiểm thử cấp đơn vị 
+Kiểm thử tích hợp 
+Tích hợp
+Kiểm thử hệ thống
+Bảo trì hiệu chỉnh
Nếu bạn làm trong các dự án không chuyên, bạn sẽ nghĩ danh sách trên có vẻ nhiều hình thức.

Nếu các bạn đang làm việc trong các dự án chuyên nghiệp, bạn biết rằng danh sách trên quá hình thức.
Phải nói là, rất là khó để đạt được sự cân bằng giữa việc quá ít hoặc quá nhiều hình thức, và chúng ta sẽ thảo luận điều này ở phần sau của cuốn sách.
Nếu bạn tự học lập trình hoặc hoạt động chủ yếu trong các dự án không chuyên, bạn sẽ không  tạo ra nhiều khác biệt giữa các hoạt động trong quá trình tạo ra các sản phẩm phần mềm. Trên tinh thần là, bạn sẽ gộp chung chúng lại và gọi là đang "lập trình".
Nếu bạn làm việc trong các dự án chuyên nghiệp hơn, các hoạt động chính mà bạn nghĩ về việc tạo ra phần mềm - chắc chắn là hoạt động mà các nhà nghiên cứu coi là "xây dựng".
Khái niệm "xây dựng" này khá là chính xác, nhưng nó bị thiếu ý. 
Việc đặt khái niệm "xây dựng" (trong ngữ cảnh của nó) với các hoạt động khác; giúp việc bạn tập trung vào các hoạt động nhiệm vụ chính trong "xây dựng" và nhấn mạnh,một cách thích hợp, các hoạt động khác.
đây là hình ví dụ các hoạt động "xây dựng" và các hoạt động khác.
Hình 1.1 : Các hoạt động xây dựng nằm trong vòng tròn màu vàng.  
Như hình 1.1 biểu thị, "xây dựng" thì chủ yếu là lập trình và chữa lỗi, nhưng nó cũng liên quan tới thiết kế chi tiết , lên kế hoạch, kiểm thử đơn vị, tích hợp, kiểm thử tích hợp, và các hoạt động khác. 
Nếu đây là một cuốn sách về tất cả khía cạnh của phát triển phần mềm, nó sẽ có những cuộc thảo luận tuyệt vời về tất cả các hoạt động trong quá trình. 
Nhưng vì đây là cuốn sổ tay của các kỹ thuật trong "xây dựng",nên nó chỉ đặt trọng tâm về "xây dựng" và các vấn đề liên quan.  
Nếu cuốn sách này là một chú cún, nó sẽ cực kỳ phấn khích khi nhắc đến từ "xây dựng", quẩy đuôi khi đụng tới phần thiết kế và kiểm thử, và sủa gâu gâu quanh các hoạt động về phát triển phần mềm khác.
"Xây dựng" một vài lúc còn được hiểu là "gõ code" và "lập trình". "Gõ code" không thực sự là từ tốt nhất, bởi vì nó chỉ hàm ý việc chuyển đổi máy móc từ ý tưởng có sẵn sang ngôn ngữ máy.
Xuyên suốt cuốn sách, tác giả sử dụng "lập trình" thay thế cho từ "xây dựng".
Ngược với Hình 1.1 ta có góc nhìn của các nhà nghiên cứu nghĩ về quá trình phát triển phần mềm thì Hình 1.2 sẽ cho ta thấy góc nhìn của tác giả cuốn sách muốn tập trung những hoạt động trong quá trình.

Hình 1.2 : Cuốn sách này tập trung vào quá trình lập trình và sửa lỗi, thiết kế chi tiết, lên kế hoạch xây dựng, kiểm thử đơn vị, tích hợp, kiểm thử  tích hợp và các hoạt động khác quanh vòng tròn.
Hình 1.1 và hình 1.2 cho ta những góc nhìn cấp độ cao hơn của hoạt động "xây dựng" phần mềm, nhưng còn cụ thể thì sao ? Sau đây là một vài công việc cụ thể liên quan trong " xây dựng" : 
. Xác minh rằng các công việc "nền" đã được đặt để có thể tiến hành công việc "xây dựng" thành công
.Quyết định code sẽ được kiểm thử như thế nào
.Thiết kế và viết các lớp và hàm
.Khởi tạo và đặt tên các biến, hằng số 
.Lựa chọn các cấu trúc điều khiển và tổ chức các khối câu lệnh
.Kiểm thử đơn vị, kiểm thử tích hợp, và chữa lỗi code của chính bạn
.Xem xét và đánh giá code của thành viên khác,yếu hơn trong đội, code cho họ và để họ xem xét đánh giá lại phần code đó
.Làm code tao nhã lên bằng cách định dạng và chú thích lại nó
.Tích hợp các thành phần của phần mềm lại, vì chúng vốn được tạo ra tách biệt
.Chỉnh code, làm nó nhanh hơn và sử dụng ít tài nguyên hơn. 
Để có danh sách đầy đủ các hoạt động trong "xây dựng", hãy xem qua các tiêu đề chương trong mục lục.
Với rất nhiều hoạt động trong "xây dựng" như vậy, giờ bạn có thể hỏi, "Ok, Jack,vậy những hoạt động nào là không trong "xây dựng" ? ". 
Ok, đó là một câu hỏi công bằng. 
Những hoạt động quan trọng nhưng không trong "xây dựng"(theo định nghĩa của tác giả) bao gồm : quản lý, các yêu cầu phát triển, kiến trúc phần mềm (rõ ràng, kiến trúc hệ thống phải được quyết định rồi mới code được chứ) , thiết kế giao diện phần mềm, kiểm thử hệ thống, và bảo trì...
(Quan điểm của tác giả muốn tập trung phần code và muốn định nghĩa phần"xây dựng" là quay quanh nó.)
Mỗi hoạt động này đều ảnh hưởng đến thành công cuối cùng của dự án nhiều như các hoạt động "xây dựng" - hoặc ít nhất là thành công của một dự án bất kỳ nào cũng đòi hỏi nhiều hơn một hoặc hai người và kéo dài hơn một vài tuần.

Bạn có thể tìm thấy những cuốn sách hay của từng hoạt động được liệt kê trong phần "Tài nguyên bổ sung" trong cuốn sách và  ở chương 35, nằm cuối sách. 
Hết phần 1.
(Yang sẽ đăng phần 3 sau Tết Nguyên Đán, đang cuối năm hơi bận rộn hihi.)

Các bạn vào đây chút ha
( The Code Complete 2, Steve McConnell - Go to)