Câu chuyện về PING

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

Mọi người đều yêu quý ping. Nó đơn giản và thực dụng. Và nó thực hiện chính xác như cái tên của thiết bị phát hiện tàu ngầm mà nó được truyền cảm hứng. Ping cho bạn biết liệu một máy tính ở xa có đang trả lời một network request hay không.

Câu chuyện về tiện ích PingTiện ích ping được viết bởi Mike Muuss, một nhà khoa học cao cấp tại phòng thí nghiệm & nghiên cứu của quân đội Hoa Kỳ (U.S. Army Research Laboratory). Mike cũng đã viết ra ttcp, cái mà tôi là một fan hâm mộ lớn. Tôi đã sử dụng PC port của ttcp rất nhiều lần để kiểm tra thông lượng mạng.

Đọc tiếp >>

Advertisements

Làm sao để trở nên viết giỏi mà không cần phải viết

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

Tôi cần phải thú nhận rằng: theo một nghĩa nào đó, tôi sáng lập ra trang web Stack Overflow là để đánh lừa những lập trình viên đồng nghiệp của mình.

Trước khi bạn trở nên giận dữ vì điều này, hãy để tôi giải thích thêm.

Trong 6 năm qua, tôi đã có một niềm tin sâu sắc rằng việc trở thành một lập trình viên giỏi có rất ít thứ phải làm với lập trình. Vâng, công việc này cần một chút kỹ năng kỹ thuật và sự kiên trì. Nhưng thậm chí nhiều hơn thế, nó cần các kỹ năng truyền thông đúng đắn:

Sự khác biệt giữa một lập trình viên bình thường và một lập trình viên giỏi không liên quan đến bao nhiêu ngôn ngữ lập trình mà họ biết, và nó cũng không phải việc họ thích Python hay Java. Mà đó là liệu họ có thể truyền đạt ý tưởng của mình hay không. Bằng cách thuyết phục những người khác, họ có được lực đòn bẩy. Bằng cách viết ra những comment và đặc tả kỹ thuật, họ làm cho các lập trình viên khác hiểu được code của họ, có nghĩa là các lập trình viên khác có thể sử dụng và làm việc với code của họ thay vì phải viết lại nó. Thiếu mất điều này, code của họ là vô giá trị.

Kỹ năng viết lách là rất quan trọng đối với một lập trình viên.Kỹ năng viết lách là rất quan trọng đối với một lập trình viên.

Đọc tiếp >>

Lập trình viên Ferengi

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

Có một chút ồn ào gần đây về một số bình luận của Joel Spolsky trên podcast của chúng tôi:

Tuần trước, tôi có nghe một podcast trên trang web Hanselminutes, trong đó Robert Martin nói về các nguyên tắc SOLID trong phát triển phần mềm. (Nó là một thuật ngữ rất dễ tìm kiếm trên Google!) Đó là về thiết kế hướng đối tượng và họ gọi là thiết kế agile, nhưng thực ra không phải là như vậy. Đó là các nguyên tắc để làm thế nào thiết kế các class của bạn, và các class đó sẽ làm việc như thế nào. Khi tôi lắng nghe họ, thẳng thắn mà nói, tôi có cảm giác rằng tất cả họ đều có vẻ như có lối suy nghĩ về lập trình cực kỳ quan liêu xuất phát từ tâm trí của những người chưa từng viết thật nhiều code.

Bạn có phải là một lập trình viên Ferengi?Bạn có phải là một lập trình viên Ferengi?

Đọc tiếp >>

Liệu tồi hơn có thực sự tốt hơn?

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

Ngày nay bạn có thể nghĩ rằng Steve Martin là một danh hài bẩm sinh– nhân vật trung tâm của những bộ phim tuyệt vời như ParenthoodFather of the Bride. Nhưng không phải lúc nào cũng như vậy. Sự nghiệp của Steve đã tiến những bước dài vào đầu những năm 80. Tại thời điểm đó, tôi không nghĩ có bất kỳ danh hài nào khám phá ra những góc cạnh hài hước theo cách giống như Steve Martin đã làm. Tôi mãi mãi sẽ nhớ về cuốn sách Cruel Shoes như một xúc cảm tuổi niên thiếu. Đó là một bộ sưu tập các truyện ngắn rất kỳ lạ. Ở tuổi non trẻ đó, tôi chắc chắn chưa từng bao giờ đọc bất cứ điều gì giống như nó. Thật khó để giải thích. Bạn hãy tự đọc và cảm nhận. Dưới đây là nội dung đầy đủ một truyện ngắn cùng tên Cruel Shoes (tạm dịch là đôi giày ác nghiệt):

Trong lập trình phần mềm: liệu tồi hơn có phải là tốt hơn?Trong lập trình phần mềm: liệu tồi hơn có phải là tốt hơn?

Đọ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 >>

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 >>

Đây là điều xảy ra khi bạn để cho các lập trình viên tạo giao diện người dùng

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

Sâu thẳm bên trong mỗi nhà phát triển phần mềm, có một nhà thiết kế đồ họa vừa chớm nở chờ đợi để có cơ hội được bộc lộ ra ngoài. Và nếu bạn để cho điều đó xảy ra, bạn sẽ gặp thảm họa. Hoặc ít nhất là người dùng của bạn sẽ gặp rắc rối to:

Giao diện một hộp thoại 'đơn giản' do lập trình viên tạo ra!Giao diện một hộp thoại ‘đơn giản’ do lập trình viên tạo ra!

Đọc tiếp >>