How to become a better programmer/developer?

Mấy hôm trước tự nhiên nhớ đến một bài viết cũng khá lâu (tầm năm 2005), trong đó có đoạn nói về "phong cách của hacker" (nguyên văn là Points For Style). Hồi đó đọc nhưng cũng chẳng nghĩ ngợi, chẳng kiểm chứng làm gì. Tuy nhiên do công việc dạo này quá căng thẳng cộng với việc hay gặp phải tình trạng mọi người kêu ca lương lậu (cả chính đáng lẫn không chính đáng) nên hôm nay quyết định ngồi viết 1 bài lảm nhảm tý big grin

Điểm qua những "cái" mà một hacker nên có (theo tác giả Eric Steven Raymond):

  • Học cách diễn đạt trôi chảy mọi thứ bằng tiếng mẹ đẻ
  • Đọc sách khoa học viễn tưởng
  • Học võ (tham gia tập thể dục thể thao)
  • Thiền định
  • Nghe nhạc
  • Làm thơ, chơi chữ

Theo mình, nên áp dụng thêm Ngũ Thường (Nhân, Nghĩa, Lễ, Trí, Tín), Cương thứ nhị trong Tam Cương (Quân, Sư, Phụ) và Tứ Tuyệt (Cầm, Kỳ, Thi, Họa) vào style của một lập trình viên big grin

Ngũ Thường & Cương thứ nhị có lẽ sẽ trình bày ở 1 bài viết khác. Hôm nay chỉ xin viết nhảm về Tứ Tuyệt tongue

- Cầm: ở đây hiểu rộng theo nghĩa âm nhạc nói chung đi. Ai cũng biết âm nhạc có tác dụng giúp con người thư giãn như thế nào. Vậy thì với 1 nghề cũng rất chi là căng thẳng áp lực như nghề lập trình này, tại sao ko áp dụng Cầm nhỉ? Ngêu ngao hát những lúc căng thẳng hay khi bị deadline thúc đít chẳng hạn laughing

- Kỳ: chơi cờ thì liên quan gì đến lập trình nhỉ? Xem nào, để chơi cờ thì đòi hỏi người chơi phải có tư duy chiến thuật, chiến lược tốt, khả năng tập trung cao... Ô, mấy cái này áp dụng vào lập trình nói riêng và quy trình làm phần mềm nói chung thì quá tuyệt ấy chứ laughing

- Thi: mục này có vẻ mình hơi "cưỡng bức hoàn cảnh" 1 tý. Tuy nhiên theo mình, để làm được thơ hay thì ít ra người làm thơ cũng phải có nền tảng về vốn từ, vốn sống... Từ đó kéo theo anh cũng phải diễn đạt được trôi trảy tiếng Mẹ đẻ => Kỹ năng giao tiếp. Cái này thì ngành nghề nào cũng quan trọng, không riêng gì với lập trình happy - Họa: mỹ thuật nói chung sẽ mang đến cho con người ta được khung nhìn tổng quát nhất khi tiếp cận 1 vấn đề. Ví dụ như trước khi vẽ 1 con vật, người ta sẽ quy về các hình khối cơ bản trước, sau đó mới đi dần đến chi tiết cụ thể. Việc này cũng như việc áp dụng phân tích thiết kế trong lập trình thì phải laughing

Xem nào, trong 4 cái tuyệt ở trên thì mình có thể làm được 2 cái (mặc dù không chuyên nghiệp) là: Kỳ (biết chơi cờ Vua laughing) và Họa (Trước đây mình cũng bập bõm tập vẽ). Vậy phải lên kế hoạch cho em Cầm và em Thi. Có lẽ 2 em này là 1 dạng soft skills thì phải big grin

Ngoài ra, việc áp dụng võ đạo nói riêng và thể thao nói chung vào lập trình cũng rất tốt. Không thể có 1 tinh thần minh mẫn trong 1 cơ thể rệu rã được. Võ thuật mang đến cho ta sức khỏe dẻo dai, bền bỉ, tính tập trung. Đạo mang đến cho ta còn nhiều hơn thế big grin May mắn mình cũng có 1 chút xíu Karate, thích bơi lội, thích chạy bộ, thích đạp xe... laughing

Mà có lẽ cần thêm yếu tố này vào nữa thì mới thành người lập trình viên giỏi được: Don't Do It For The Money. Thoạt đầu nghe vô lý quá, không vì tiền sao sống được. Nhưng theo mình thì cái này cũng là tương đối thôi, nó chuẩn cho những bạn vừa mới "vào đời", chưa có tý kinh nghiệm gì cả thì đừng vội nên đòi hỏi này nọ quá, thành ra tự đánh mất đi cơ hội của mình. Originally posted by dq_ninh:

Đồng ý tiền lương là một vấn đế chủ yếu và quan trọng, vì có "thực mới vực được đạo". Nhưng đối với một SV, đặc biệt là ngành CNTT, thì sự đam mê về nghề nghiệp, sự ham muốn học hỏi, mới là điều quan trọng nhất. Và đây mới chính là chìa khóa đưa đến thành công, vì nếu đặt đam mê nghề nghiệp lên hàng đầu (để trở thành nỗi băn khoăn chính), thì sẽ có một ngày, trở thành một người có lương cao hơn những bạn đồng nghiệp.

Và thêm yếu tố "trí tưởng tượng" trong lập trình nữa (tưởng tượng chứ không phải tưởng bở đâu nhé big grin) như anh Phạm Công Định từng nói: "Ngôn ngữ lập trình thì luôn bị hạn chế bởi trí tưởng tượng của lập trình viên". Rất tiếc ngay lúc này đây mình không thể nhớ được một số ví dụ điển hình cho việc giới hạn trí tưởng tượng khi giải quyết vấn đề cụ thể trong lập trình, những câu chuyện nghe được khi các bạn đồng nghiệp trao đổi với nhau. Để lúc nào nghĩ ra thì post tiếp vậy tongue

Vậy đấy, con đường hoàn thiện bản thân nhìn cũng ko thấy khó khăn lắm (toàn đường thẳng không à) nhưng vừa không có đèn đường, vừa dốc dựng đứng nên thành thử... hee hee