Phần cứng rất rẻ, lập trình viên rất đắt

Bài viết được dịch từ blog Coding Horror

Với sự phát triển nhanh chóng của công nghệ phần cứng theo Định luật Moore, khi nào thì ta nên ném phần cứng vào một vấn đề lập trình? Như một quy tắc chung, tôi muốn nói gần như là luôn luôn.

Hãy xem xét mức lương trung bình của lập trình viên tại Mỹ:

Mức lương cho lập trình viên ở Mỹ luôn rất caoMức lương cho lập trình viên ở Mỹ luôn rất cao

Đọc tiếp >>

Phát minh vĩ đại nhất trong ngành khoa học máy tính

Bài viết được dịch từ blog Coding Horror

Theo bạn thì phát minh vĩ đại nhất trong ngành khoa học máy tính là gì? Ý tôi là ngoài bản thân máy tính ra.

Trước khi đọc tiếp, bạn hãy tạm dừng một lúc và ngồi suy nghĩ nghiêm túc về câu hỏi đó.

Phát minh vĩ đại nhất trong ngành khoa học máy tínhPhát minh vĩ đại nhất trong ngành khoa học máy tính là gì?

Đọc tiếp >>

Vì bạn muốn trở thành một nhà phát triển game

Bài viết được dịch từ blog Coding Horror

Tôi thường nói rằng phát triển game là dạng phát triển phần mềm khó nhất. Nó có xu hướng lập trình ở cấp độ rất thấp, trên những nền tảng phần cứng khác thường, và bạn phải liên tục tối ưu hóa hiệu suất và “niềm vui” — hay bất cứ điều gì mà bạn có thể. Hãy xem xét sự phức tạp của một khía cạnh nhỏ trong phát triển game, AI (trí tuệ nhân tạo): làm thế nào để bạn mô phỏng các đối thủ một cách hiệu quả? Nếu đem so sánh với việc phát triển game thì các ứng dụng doanh nghiệp nhỏ của tôi đang làm cũng giống như chỉ là cuộc đi dạo trong công viên vậy.

Bạn muốn trở thành một lập trình viên trong ngành công nghiệp game?Bạn muốn trở thành một lập trình viên trong ngành công nghiệp game?

Đọc tiếp >>

Phát triển phần mềm: Đó là một tôn giáo

Bài viết được dịch từ blog Coding Horror

Đó là ngày Thứ Hai và Steve Yegge vẫn ghét phương pháp phát triển phần mềm Agile. Ông ta ghét nó khoảng bao nhiêu? Trị giá khoảng 11.000 từ. Dưới đây là những nội dung chính trong bài viết mới nhất của Steve:

  • Steve không có ý định ủng hộ quy trình phát triển phần mềm của Google như là Một Phương Pháp Đích Thực về phát triển phần mềm. Nó chỉ là một ví dụ về một giải pháp có thể thay thế cho phương pháp Agile.
  • Phương pháp phát triển phần mềm Agile hay bất kỳ phương pháp phát triển phần mềm nào khác sẽ hiệu quả nếu bạn có trong tay những kỹ sư tài năng và họ đều quyết tâm làm theo phương pháp đó.
  • Không có cách khoa học thực nghiệm để chứng minh rằng Agile là tốt hơn so với bất kỳ phương pháp phát triển phần mềm nào khác. Vì vậy, việc thúc đẩy Agile là một sự mê tín.
Phát triển phần mềm có phải là một tôn giáo?Phát triển phần mềm có phải là một tôn giáo?

Đọc tiếp >>

Lập trình viên giỏi cần có “năng khiếu toán học”?

Bài viết được dịch từ blog Coding Horror

Một trong những trích dẫn nổi tiếng của nhà khoa máy tính Edsger Dijkstra là từ bài giảng nhận giải thưởng Turing vào năm 1972 của ông, Làm thế nào để chúng ta nói ra sự thật mà có thể làm tổn thương?

Bên cạnh một năng khiếu toán học, thì việc đặc biệt thông thạo tiếng mẹ đẻ là tài sản quan trọng nhất của một lập trình viên giỏi.

Lưu ý rằng ông chính xác nói là tiếng mẹ đẻ, không phải tiếng Anh. Điều này khiến tôi tự hỏi tại sao tất cả các công trình nghiên cứu quan trọng nhất của Dijkstra lại bằng tiếng Anh, chứ không phải tiếng Hà Lan quê hương ông.

Lập trình viên có cần phải giỏi toán học?Lập trình viên có cần phải giỏi toán học?

Đọc tiếp >>

Có một thứ mà các lập trình viên và nhạc sĩ có cùng điểm chung

Bài viết được dịch từ blog Coding Horror

Trong bài viết trước đây của tôi, một độc giả đã đặt ra câu hỏi này:

Tôi đã từng gặp rất nhiều người rất giỏi trong lĩnh vực máy tính và họ có một tình yêu lớn dành cho âm nhạc. Liệu phải làm gì để có khả năng nhìn thấy cái đẹp ở trong các hệ thống số phức tạp?

Tôi yêu thích âm nhạc. Tôi có một bộ sưu tập âm nhạc rất lớn, tôi thích nghe nhạc và khám phá các ban nhạc mới cũng như các thể loại mà tôi chưa từng được nghe. Nhưng tôi không có một chút khả năng nào về âm nhạc cả. Vì vậy, sẽ không thực sự thích hợp để tôi bình luận về điều này. Tôi đã đọc về những ý kiến so sánh ở nhiều nơi khác nhau. Đủ để tôi tự hỏi liệu có một mối quan hệ nào giữa việc trở thành một nhạc sĩ và trở thành một lập trình viên không nhỉ?

Lập trình viên và mấy tay nhạc sĩ có điểm gì giống nhau?Lập trình viên và mấy tay nhạc sĩ có điểm gì giống nhau?

Đọc tiếp >>

Họp rút kinh nghiệm khi kết thúc dự án phát triển game

Bài viết được dịch từ blog Coding Horror

Trước đây tôi đã có bài viết nói về giá trị của cuộc họp rút kinh nghiệm khi kết thúc dự án. Tuy nhiên, việc tổ chức một buổi họp kết thúc dự án (hoặc, bạn có thể thích gọi nó bằng một thuật ngữ hấp dẫn hơn, một cái nhìn lại dự án) có thể là một công việc khá tẻ nhạt. Bài viết về các tiêu chí của một buổi họp kết thúc dự án trên tờ tạp chí Game Developer Magazine đã đưa ra một khuôn mẫu rất hữu ích để hướng dẫn bạn có thể thiết lập cho mình một cuộc họp như vậy:

Cuộc họp rút kinh nghiệm khi kết thúc dự án game là rất cần thiết.Cuộc họp rút kinh nghiệm khi kết thúc dự án game là rất cần thiết.

Đọc tiếp >>

Thuyết vị lai trong lập trình.. năm 1994

Bài viết được dịch từ blog Coding Horror

Paul Heberli và Bruce Karsh đã đề xuất một cái gì đó mà họ gọi là lập trình vị lai vào năm 1994:

Chúng tôi tin rằng có một cơ hội tuyệt vời cho các nguyên tắc vị lai sẽ được áp dụng vào khoa học của lập trình máy tính. Chúng tôi phản ứng chống lại bầu không khí tôn giáo nặng nề bao trùm mọi khía cạnh của lập trình máy tính. Chúng tôi tin rằng đây là lúc để giải phóng khỏi những ràng buộc của quá khứ, và ăn mừng một sự phục hưng trong nghệ thuật lập trình máy tính.

Chúng tôi thấy nhiều hệ thống máy tính hiện nay là vô cùng lãng phí và không hiệu quả. Phần cứng máy tính đã tăng tốc độ thực thi hơn 200 lần trong 20 vừa năm qua, trong khi việc thiết kế phần mềm có rất ít tiến bộ được tạo ra kể từ sự phát minh ra chương trình con. Chúng tôi muốn nhìn thấy khoa học của lập trình phát triển một cách nhanh chóng như các lĩnh vực công nghệ khác.

Chúng tôi tin rằng giáo dục đại học đang dành quá nhiều thời gian để truyền đạt những giáo điều, thay vì nên dạy về lý thuyết của việc thiết kế phần mềm để giúp các lập trình viên tạo ra những chương trình tốt. Các trường đại học nên cung cấp cho sinh viên ít giáo lý hơn, và thêm nhiều kinh nghiệm thực tế trong việc tạo ra và phân tích các chương trình nhỏ, nhanh, hữu ích và hiệu quả.

Liệu tôi có nên theo trường phái lập trình vị lai?Liệu tôi có nên theo trường phái lập trình vị lai?

Đọc tiếp >>

Những nguyên tắc thiết kế cơ bản dành cho lập trình viên

Bài viết được dịch từ blog Coding Horror

Trong một bài viết trước đây của mình, tôi kêu gọi các lập trình viên nên tìm hiểu về một chương trình chỉnh sửa đồ họa phổ biến nào đó. Đây hoàn toàn là một kỹ năng kỹ thuật, do đó, nó có vẻ hợp lý để các lập trình viên quan tâm và vọc thử. Nếu chúng ta có thể học được về những môi trường phát triển cực kỳ phức tạp, trình biên dịch, và cơ sở dữ liệu, thì tại sao lại không học về một trình biên tập đồ họa? Tuy nhiên, như một số bạn đọc đã chỉ ra rằng, năng lực trong một trình chỉnh sửa đồ họa là không đủ; bạn cũng phải tìm hiểu một số nguyên tắc thiết kế cơ bản để sử dụng công cụ đó một cách hiệu quả. Chúng ta hãy thử đảo ngược vấn đề: liệu có là hợp lý khi mong đợi các nhà thiết kế (designer) học về môi trường phát triển IDE yêu thích của chúng ta, đơn thuần như một công cụ, mà không có bất kỳ hướng dẫn về cách làm thế nào để viết code?

Chắc chắn là không. Đó là lý do tại sao tôi cảm thấy rất vui khi Graham Stewart nhắc tôi đề cập đến cuốn sách The Non-Designer’s Design Book.

Nguyên tắc thiết kế cơ bản cho lập trình viênNguyên tắc thiết kế cơ bản cho lập trình viên

Đọc tiếp >>