Con dao của quân đội Thụy Sĩ hay chuyên gia tổng quát

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

Trong bài viết “Liệu việc viết code có quan trọng?”, tôi đã đề nghị các lập trình viên dành ít thời gian hơn với các công việc kỹ thuật, vì đó là thứ mà họ đã tương đối giỏi, và dành nhiều thời gian hơn để trau dồi các kỹ năng phi kỹ thuật khác mà các lập trình viên có xu hướng thiếu hụt. Một độc giả đã đặt vấn đề với cách tiếp cận như sau:

Tôi không đồng ý với quan điểm về việc nên cải thiện những điểm yếu. Tôi thích quan điểm về việc phát triển tài năng và nhận thức được những điểm yếu của mình. “Biết rõ bản thân mình” không có nghĩa là đi học tất cả mọi thứ và trở thành một Con dao của quân đội Thụy Sĩ (Swiss Army Knife).

Rất dễ để biến đề nghị khiêm tốn của tôi trở thành một ý kiến cực kỳ ngớ ngẩn: hoặc là bạn ngồi viết code suốt ngày, hoặc bạn trở thành một người hoàn toàn không có kỹ năng về kỹ thuật và không bao giờ chạm vào một trình biên dịch nữa. Hoặc có thể bạn dành quá nhiều thời gian để theo đuổi những thú vui liên quan để bạn trở thành một người cái gì cũng biết một tí, nhưng chẳng tinh thông món nào cả. Hay nói cách khác, sẽ trở thành một Con dao của quân đội Thụy Sĩ (Swiss Army Knife).

Hãy trở thành một chuyên gia tổng quát chứ đừng là một Swiss Army Knife.

Đọc tiếp >>

Advertisements

Phương pháp lập trình tốt nhất hiện nay

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

Một trong nhiều bình luận phổ biến cho bài viết Lập trình viên Ferengi như sau:

Từ những gì tôi có thể thấy, vấn đề “lập trình viên quá ràng buộc vào các quy tắc” là hầu như không quan trọng bằng vấn đề “nhiều lập trình viên thực sự không có một manh mối gì trong việc phát triển phần mềm cả.” Đa số các lập trình viên không tiếp xúc quá nhiều với các design pattern, SOLID, hoặc agile, hay waterfall… Họ thường dùng giải pháp mì ăn liền như những tay cao bồi trong một môi trường hoàn toàn hoang dã, sử dụng kiểu kéo thả đơn giản, hướng dữ liệu (data driven), các kỹ thuật kiểu lập trình VB.

Phương pháp lập trình tốt nhất hiện nay là gì?Phương pháp lập trình tốt nhất hiện nay là gì?

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

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

Làm thế nào để không viết một cuốn sách lập trình

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

Nếu tôi yêu cầu bạn lựa chọn giữa 2 cuốn sách lập trình, một cuốn được viết bởi tác giả chuyên viết về lập trình Windows nổi tiếng Charles Petzold, và cuốn kia được viết bởi một gã mà có thể bạn chưa bao giờ nghe tên, bạn sẽ chọn cuốn nào?

Tôi sẽ chọn cuốn sách lập trình nào đây?Tôi sẽ chọn cuốn sách lập trình nào đây?

Đọc tiếp >>

Bạn đang đọc blog lập trình nguy hiểm nhất thế giới

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

Bạn đã bao giờ nhận thấy rằng các blog chứa đầy rẫy những thông tin sai lạc và dối trá? Đặc biệt, tôi đang đề cập đến chính blog này. Cái blog mà bạn đang ngồi đọc vào lúc này đây. Ví dụ, bài viết ngày hôm qua có nội dung cực tồi, và đó chính là bằng chứng thuyết phục nhất cho thấy tôi đã trở thành một gã cực đoan.

Hãy cẩn thận vì bạn đang đọc blog lập trình nguy hiểm nhất thế giới!Hãy cẩn thận vì bạn đang đọc blog lập trình nguy hiểm nhất thế giới!

Đọc tiếp >>

Mort, Elvis, Einstein, và Bạn

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

Đầu tuần vừa rồi tôi có viết bài “Có hai kiểu lập trình viên”. Dựa vào số lượng lớn các bình luận mà độc giả để lại, tôi dường như muốn đứt một dây thần kinh. Hoặc hai dây cũng nên. Điều này làm tôi khá ngạc nhiên, bởi vì nội dung bài viết không bao giờ có ý nghĩa công kích và khiêu khích hoặc chỉ trích như nhiều người đã hiểu lầm. Nội dung nó đã là như vậy khi ra khỏi tay tác giả gốc của bài viết mà tôi đã trích dẫn lại là Ben Collins-Sussman, tôi chỉ hướng bài viết của mình với mục đích làm sáng tỏ thêm bài viết ban đầu của ông ta.

Bạn là kiểu lập trình viên Mort, Elvis hay Einstein?Bạn là kiểu lập trình viên Mort, Elvis hay Einstein?

Đọc tiếp >>

Vấn đề của trò game dang dở

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

Bài viết của ngày hôm nay là một câu hỏi đơn giản.

Nếu theo giả thiết, bạn gặp một ai đó nói với bạn rằng họ có hai đứa con, và một trong số chúng là con gái. Tỷ lệ cược là bao nhiêu để người đó có một con trai một con gái?

Tỷ lệ con trai và con gái
Đọc tiếp >>

Học tập, hay, Học cách làm thế nào để học

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

Một trong những kinh nghiệm đầu tiên của tôi là một tour đi tham quan các nhà máy sản xuất tại địa phương khi tôi còn đang học trung học. Một trong những người hướng dẫn tour là một kỹ sư được đào tạo tại trường đại học MIT đã đi kèm chúng tôi, giải thích về cách mọi thứ làm việc như thế nào. Tại cuối của tour đó, anh ta đưa cho mỗi đứa chúng tôi một bức hình của một con nhện mà anh ta đã chụp dưới cái kính hiển vi điện tử mà họ có tại nơi làm việc. Anh gọi nó là “Boris the Spider” theo tên một bài hát. Tôi đã giữ bức hình đó trong ngăn tủ của mình trong nhiều tháng trời.

Con nhện chụp dưới kính hiển vi điện tử.Con nhện chụp dưới kính hiển vi điện tử.

Đọc tiếp >>

Mọi thứ bạn biết sẽ bị lỗi thời trong vòng 5 năm

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

Lời bàn của Vinacode:

Chắc bạn vẫn còn nhớ trong bài viết “Nghề lập trình: trước 40 tuổi bạn nên có phương án B” đăng trên blog Vinacode có phần thống kê của cục điều tra NSF về so sánh tuổi thọ của nghề lập trình viên và nghề xây dựng ở Hoa Kỳ:

“Sáu năm sau khi tốt nghiệp đại học, 57% sinh viên tốt nghiệp ngành khoa học máy tính làm việc như là một lập trình viên; sau 15 năm ra trường thì con số này giảm xuống còn 34%, và sau 20 năm ra trường — khi mà hầu hết mọi người đều chớm bước sang tuổi 40 — thì tỉ lệ này rớt xuống còn 19%. Trái ngược hẳn, con số này tương ứng cho kỹ sư xây dựng là 61%, 52% và 52%.”

Sau khi xem kết quả so sánh trên thì chắc hẳn bạn cũng đã tự đưa ra được lý do rồi nhỉ? Mình có đọc được ở đâu đó rằng ngành xây dựng khoảng 50 năm mới đổi mới hoàn toàn một lần, trong khi đó ngành phần mềm thì chỉ 10 năm; điều đó đồng nghĩa với việc một kỹ sư xây dựng với kiến thức thu được ở trường thì có thể ung dung ngồi rung đùi làm việc trong nhiều năm, trong khi một kỹ sư phần mềm thì hầu như phải học tập kiến thức mới mỗi ngày.

Ngành phát triển phần mềm cũng tuân theo định luật Moore?

Ngành phát triển phần mềm cũng tuân theo định luật Moore?

Ngành phát triển phần mềm cũng tuân theo định luật Moore?Theo “định luật Moore” do nhà đồng sáng lập Intel là Gorden Moore tiên đoán thì cứ sau 18 tháng tốc độ xử lý của con chip máy tính sẽ được tăng lên gấp đôi, và điều đó đồng nghĩa rằng ngành phát triển phần mềm cũng sẽ phát triển theo tốc độ đó? Cứ vài tuần bạn lại nghe thấy một ngôn ngữ lập trình, hay một framework hoặc một công nghệ mới nào đó xuất hiện… và bạn lại phải lao đầu vào nghiên cứu, nhưng đến một lúc nào đó bạn sẽ tự hỏi rằng liệu trong nghề phần mềm thì cái gì là không hoặc ít thay đổi nhất để mình bám vào nó? Bạn hãy dành một phút suy ngẫm trước khi tìm thấy câu trả lời sẽ có trong bài viết này nhé!

“Chỉ có hai điều là vô hạn: vũ trụ và sự ngu xuẩn của con người, và tôi không chắc lắm về điều đầu tiên.” ~ Albert Einstein

Là một lập trình viên, tôi luôn phải cập nhật kiến thức mới mỗi ngày.Là một lập trình viên, tôi luôn phải cập nhật kiến thức mới mỗi ngày.

Đọc tiếp >>