Khi David Heinemeier Hansson nhảy vào buồng lái của chiếc xe Le Mans Prototype 2 đen hồng và tăng tốc lên 120 dặm/giờ, đội đua đã ở vị trí thứ 3. Một đám tay đua đang đua nhau ở phía sau anh ta. Chiếc xe dẫn đầu đã bỏ xa đoàn đua - vượt xa đối thủ một vòng đua đầy kịch tính.
Đây là 6 Hours of Silverstone, một cuộc đua kéo dài sáu giờ được tổ chức hàng năm tại Northamptonshire, Vương quốc Anh, là một phần của Giải Vô địch Sức bền Thế giới. Đội đua của Heinemeier Hansson, Oak Racing, hy vọng sẽ đạt được kết quả tốt ở đây để duy trì sự cạnh tranh trong bảng xếp hạng cho cuộc đua 24 Giờ Le Mans sắp tới, một sự kiện lớn trong làng đua xe ô tô.
Đội đua đang ở vị trí thứ 3 khi David Heinemeier Hansson nhảy vào buồng lái của chiếc xe Le Mans Prototype 2 đen hồng và tăng tốc lên 120 dặm/giờ. Mười hai tay đua đang cạnh tranh với nhau ở phía sau anh ta. Chiếc xe dẫn đầu đã bỏ xa đoàn đua - vượt xa đối thủ một vòng đua đầy kịch tính.
Đây là 6 Hours of Silverstone, một cuộc đua kéo dài sáu giờ được tổ chức hàng năm tại Northamptonshire, Vương quốc Anh, là một phần của Giải Vô địch Sức bền Thế giới. Đội đua của Heinemeier Hansson, Oak Racing, hy vọng sẽ có được kết quả tốt ở đây để duy trì sự cạnh tranh trong bảng xếp hạng cho cuộc đua 24 Giờ Le Mans sắp tới, một sự kiện lớn trong làng đua xe ô tô.
Heinemeier Hansson là tay đua ít kinh nghiệm nhất trong số đồng đội của mình, nhưng đội Oak đã giao phần ba quan trọng của cuộc đua này vào tay anh.
Heinemeier Hansson, dù là tay đua ít kinh nghiệm nhất trong đội, nhưng đội Oak vẫn tin tưởng giao cho anh một phần quan trọng trong cuộc đua này.
Quyết tâm rút ngắn khoảng cách với đồng đội, Heinemeier Hansson đạp ga hết cỡ, ôm sát những khúc cua trên đường đua dài 3,7 dặm mà anh sẽ tập trung trong 2 giờ tới. Nhưng khi ba lực g tác động vào cơ thể, anh bắt đầu trượt quanh buồng lái mở. Trái, sau đó là phải, rồi lại trái. Có điều gì đó không ổn với ghế ngồi của anh.
Trong đua xe chịu lực, một chiếc xe đầu bảng có thể giành chiến thắng trong một cuộc đua kéo dài sáu hoặc mười hai giờ với khoảng cách năm giây hoặc ít hơn. Chiến thắng phụ thuộc vào hai yếu tố: trang bị và tay đua. Tuy nhiên, các quy định được thiết lập để đảm bảo rằng mỗi chiếc xe có sự cân đối tương đối, điều này có nghĩa là kết quả gần như hoàn toàn được xác định bởi khả năng tập trung và tối ưu hóa hàng nghìn quyết định nhỏ của tay đua.
Trong đua xe chịu lực, một chiếc xe đầu bảng có thể giành chiến thắng trong một cuộc đua kéo dài sáu hoặc mười hai giờ với khoảng cách năm giây hoặc ít hơn. Chiến thắng phụ thuộc vào hai yếu tố: trang bị và tay đua. Tuy nhiên, các quy định được thiết lập để đảm bảo rằng mỗi chiếc xe có sự cân đối tương đối, điều này có nghĩa là kết quả gần như hoàn toàn được xác định bởi khả năng tập trung và tối ưu hóa hàng nghìn quyết định nhỏ của tay đua.
Trong đua sức bền, chiếc xe về đích đầu tiên có thể giành chiến thắng trong cuộc đua kéo dài 6 hoặc 12 giờ với khoảng cách 5 giây hoặc ít hơn. Chiến thắng phụ thuộc vào hai yếu tố: trang bị và tay lái. Tuy nhiên, các quy định được thiết lập để đảm bảo rằng mọi chiếc xe đều tương đối cân đối, điều này có nghĩa là kết quả được xác định gần như tuyệt đối bởi khả năng tập trung và tối ưu hóa hàng nghìn quyết định nhỏ của tay lái.
Chuyển sự chú ý từ con đường sang, ví dụ, một chiếc ghế lái không được điều chỉnh đúng cách chỉ trong một giây cũng có thể tạo ra cơ hội cho một chiếc xe khác vượt qua. Nhưng ở tốc độ 120 dặm mỗi giờ, một sai lầm có thể mang ý nghĩa tồi tệ hơn việc mất cúp. Như Heinemeier Hansson đã nói, 'Hoặc bạn tập trung vào nhiệm vụ hiện tại hoặc bạn sẽ chết.'
Lần lượt, anh ta chiến đấu với lực ly tâm, cố gắng không bị tụt ra ngoài trong khi tiến dần đến gần chiếc xe ADR-Delta phía trước.
Lần lượt, anh ta đấu tranh với lực ly tâm, cố gắng không bị tụt ra ngoài trong khi tiến dần đến gần chiếc xe ADR-Delta phía trước.
Một cái nhìn nhanh chóng qua cửa sổ có thể gây ra hậu quả tàn khốc khi lái xe ở tốc độ 120 dặm mỗi giờ. Đó là lý do tại sao Heinemeier Hansson nhấn mạnh, 'Hoặc bạn tập trung vào nhiệm vụ hiện tại hoặc bạn sẽ chết.'
Và rồi trời bắt đầu mưa...
Khi Heinemeier Hansson bước vào giới đua xe ở tuổi đầu 30, anh ta là một người hoàn toàn xa lạ, già hơn và ít kinh nghiệm hơn hầu hết mọi người trong các giải đấu. Là người gốc Đan Mạch, anh ta cao lớn, có quai hàm rõ ràng và mái tóc đen đặc trưng. Vào thời điểm anh tham gia 6 Hours of Silverstone, đã gần 5 năm kể từ khi anh lần đầu tiên cầm lái chiếc xe nào cả.
Điều đó khiến anh trở thành một trong những tay đua nhanh nhất trong làng đua đấu vòng.
Khi Heinemeier Hansson bước vào giới đua xe vào đầu những năm 30, anh là một ẩn số hoàn toàn, già hơn và ít kinh nghiệm hơn hầu hết mọi người trong các giải đua. Là người gốc Đan Mạch, anh cao lớn, có quai hàm rõ ràng và mái tóc đen đặc trưng. Khi anh tham gia 6 Hours of Silverstone, đã gần 5 năm kể từ lần đầu tiên anh cầm lái bất kỳ chiếc xe nào.
Điều đó khiến anh trở thành một trong những tay đua nhanh nhất trong làng đua đấu vòng.
Và điều này đã khiến anh trở thành một trong những tay đua triển vọng trong cuộc đua chức vô định.
Mặc dù vậy, Heinemeier Hansson được biết đến nhiều hơn trong số các lập trình viên máy tính — nơi anh được biết đến với biệt danh DHH — hơn là trong cộng đồng đam mê xe hơi. Mặc dù hầu hết đồng nghiệp đua xe của anh không biết, nhưng anh là người gián tiếp đứng sau sự phát triển của Twitter. Và Hulu và Airbnb. Và một loạt các công nghệ biến đổi khác mà anh không nhận được bất kỳ tiền thù lao nào. Công việc của anh đã đóng góp vào các cuộc cách mạng, và giảm bớt rào cản cho hàng nghìn công ty công nghệ trong việc tung ra các sản phẩm.
Tất cả chỉ vì David Heinemeier Hansson ghét làm công việc mà anh không cần làm.
Tất cả chỉ vì David Heinemeier Hansson không thích làm công việc mà anh không cần phải làm.
Mặc dù vậy, Heinemeier Hansson nổi tiếng hơn trong cộng đồng lập trình máy tính — nơi anh được biết đến dưới biệt danh DHH — hơn là trong giới đam mê xe hơi. Mặc dù hầu hết các đối thủ đua xe của anh không biết điều này, nhưng anh đã gián tiếp góp phần vào sự phát triển của Twitter. Và Hulu và Airbnb. Và một loạt các công nghệ biến đổi khác mà anh không nhận được bất kỳ tiền thù lao nào. Công việc của anh đã đóng góp vào các cuộc cách mạng, và giảm bớt rào cản cho hàng nghìn công ty công nghệ trong việc ra mắt các sản phẩm.
DHH áp dụng một triết lý giúp anh ta làm nhiều hơn trong thời gian và công sức của mình. Điều này đã giúp anh ta vượt qua những khó khăn trong đua xe và lập trình, và có thể mang lại chiến thắng cho anh ấy tại đường đua Silverstone.
Để hiểu được chiến lược của DHH, chúng ta cần hiểu một chút về cách máy tính hoạt động.
Hãy tưởng tượng một đoạn cỏ biến thành một con đường. Ban đầu, đoạn cỏ này gập ghềnh và khó đi qua. Một nhóm người đến và làm phẳng bề mặt, làm cho việc điều khiển dễ dàng hơn. Sau đó, có người rải cát. Sau đó là nhựa đường. Rồi một lớp nhựa đường. Một máy cày phẳng nó; có người vẽ đường. Bề mặt cuối cùng là một cái gì đó mà một ô tô có thể di chuyển nhanh chóng. Cát làm ổn định, nhựa đường làm đặc, nhựa đường gia cường, và giờ đây chúng ta không cần phải xây ô tô của chúng ta để đi qua cỏ gập ghềnh. Và chúng ta có thể đến từ Philadelphia đến Chicago trong một ngày.
Để hiểu được phương pháp của DHH, chúng ta phải hiểu một chút về cách máy tính hoạt động.
Hãy tưởng tượng cách một miếng đất trở thành một con đường. Ban đầu, miếng đất này gập ghềnh và khó đi qua. Một nhóm người đến và làm phẳng bề mặt, làm cho việc di chuyển dễ dàng hơn. Sau đó, có người rải cát. Sau đó là nhựa đường. Rồi một lớp nhựa đường. Một máy cày phẳng nó; có người vẽ đường. Bề mặt cuối cùng là một cái gì đó mà một ô tô có thể di chuyển nhanh chóng. Cát làm ổn định, nhựa đường làm đặc, nhựa đường gia cường, và giờ đây chúng ta không cần phải xây ô tô của chúng ta để đi qua miếng đất gập ghềnh. Và chúng ta có thể đến từ Philadelphia đến Chicago trong một ngày.
Hãy tưởng tượng cách một dải cỏ trở thành một con đường. Ban đầu, đoạn đường gập ghềnh và khó điều khiển. Một nhóm người đến và làm phẳng bề mặt, giúp điều hướng dễ dàng hơn. Sau đó, có người rải sỏi. Và sau đó, là hắc ín. Rồi là một lớp nhựa đường. Một máy hơi nước làm mịn nó; một người vẽ đường kẻ. Bề mặt cuối cùng là điều mà ô tô có thể di chuyển qua nhanh chóng. Sỏi làm ổn định, nhựa cứng rắn lại, nhựa đường gia cố và giờ đây chúng ta không cần phải chế tạo ô tô để lái trên cỏ gập ghềnh. Và chúng ta có thể đi từ Philadelphia đến Chicago trong một ngày.
Đó là cách lập trình máy tính hoạt động. Giống như một con đường, máy tính là các lớp mã ngày càng dễ sử dụng. Các nhà khoa học máy tính gọi đây là sự trừu tượng hóa.
Một vi mạch - bộ não của máy tính, nếu bạn muốn - được tạo ra từ hàng triệu bóng bán dẫn nhỏ, mỗi bóng bán dẫn có công việc là bật hoặc tắt, cho phép dòng điện chạy qua hoặc không. Giống như các công tắc đèn nhỏ, một loạt các bóng bán dẫn trong máy tính có thể kết hợp để nói, “thêm hai số này” hoặc “làm cho phần này của màn hình phát sáng”.
Hãy tưởng tượng cách một miếng đất trở thành một con đường. Ban đầu, đoạn đường gập ghềnh và khó điều khiển. Một nhóm người đến và làm phẳng bề mặt, giúp điều hướng dễ dàng hơn. Sau đó, có người rải sỏi. Và sau đó, là hắc ín. Rồi là một lớp nhựa đường. Một máy hơi nước làm mịn nó; một người vẽ đường kẻ. Bề mặt cuối cùng là điều mà ô tô có thể di chuyển qua nhanh chóng. Sỏi làm ổn định, nhựa cứng rắn lại, nhựa đường gia cố và giờ đây chúng ta không cần phải chế tạo ô tô để lái trên đoạn đất gập ghềnh. Và chúng ta có thể đi từ Philadelphia đến Chicago trong một ngày.
Một vi mạch - bộ não của máy tính, nếu bạn muốn - được tạo ra từ hàng triệu bóng bán dẫn nhỏ, mỗi bóng bán dẫn có công việc là bật hoặc tắt, cho phép dòng điện chạy qua hoặc không. Giống như các công tắc đèn nhỏ, một loạt các bóng bán dẫn trong máy tính có thể kết hợp để nói, “thêm hai số này” hoặc “làm cho phần này của màn hình phát sáng”.
Trong những ngày đầu tiên, các nhà khoa học đã xây dựng những bảng bóng bán dẫn khổng lồ và thủ công bật tắt chúng khi họ thử nghiệm để làm cho máy tính thực hiện những điều thú vị. Điều này làm cho công việc trở nên khó khăn (và một trong những lý do khiến máy tính ban đầu rất to lớn).
Cuối cùng, các nhà khoa học đã cảm thấy chán ngấy khi phải bật tắt công tắc và đổ một lớp sỏi ảo để họ có thể điều khiển các bóng bán dẫn bằng cách gõ vào 1 và 0. 1 có nghĩa là “bật” và 0 có nghĩa là “tắt”. Điều này làm cho các nhà khoa học trừu tượng hóa khỏi các công tắc vật lý. Họ gọi điều này là ngôn ngữ máy 1 và 0.
Cuối cùng, các nhà khoa học đã chán ngấy với việc bật tắt các công tắc và đổ một lớp sỏi ảo để họ có thể điều khiển các bóng bán dẫn bằng cách gõ 1 và 0. 1 có nghĩa là “bật” và 0 có nghĩa là “tắt”. Điều này trừu tượng hóa các nhà khoa học khỏi các công tắc vật lý. Họ gọi điều này là ngôn ngữ máy 1 và 0.
Tuy nhiên, công việc vẫn là một cảm giác đau đớn. Đó làm cho việc cần nhiều 1 và 0 để làm bất cứ điều gì. Và chuỗi các số thực sự khó nhìn trong nhiều giờ. Vì vậy, các nhà khoa học đã tạo ra một lớp trừu tượng khác, một lớp có thể dịch các hướng dẫn có thể hiểu được hơn thành nhiều 1 và 0.
Tuy nhiên, công việc vẫn là một cảm giác đau đớn. Đó làm cho cần rất nhiều 1 và 0 để thực hiện bất cứ điều gì. Và chuỗi số thực sự là thứ rất khó chịu nếu phải nhìn vào suốt vài giờ. Vì vậy, các nhà khoa học đã tạo ra một lớp trừu tượng khác, một lớp có thể dịch các hướng dẫn dễ hiểu hơn thành nhiều 1 và 0.
Tuy nhiên, công việc vẫn còn rất khó khăn. Cần phải sử dụng rất nhiều số 1 và 0 để thực hiện bất kỳ công việc nào. Và chuỗi các số thực sự là điều rất khó chịu nếu phải nhìn vào trong nhiều giờ. Vì vậy, các nhà khoa học đã tạo ra một lớp trừu tượng khác, một lớp có thể dịch các hướng dẫn dễ hiểu hơn thành nhiều số 1 và 0.
Điều này được gọi là ngôn ngữ hợp ngữ và nó làm cho việc tạo ra một lệnh ngôn ngữ máy như sau trở nên có thể:
Nó được gọi là ngôn ngữ hợp ngữ và điều này có thể tạo ra một lệnh ngôn ngữ máy giống như thế này:
10110000 01100001
có thể được viết dễ hiểu hơn như thế này:
có thể được viết dễ hiểu hơn như thế này:
MOV AL, 61h
mà trông ít cứng nhắc hơn một chút. Các nhà khoa học có thể viết mã này một cách dễ dàng hơn.
Tuy nếu bạn giống như tôi, nó vẫn không trông thú vị. Sớm thôi, các nhà khoa học đã phát triển thêm nhiều lớp, bao gồm một ngôn ngữ phổ biến được gọi là C, trên ngôn ngữ hợp ngữ, để họ có thể nhập các hướng dẫn như thế này:
Tuy nếu bạn giống như tôi, nó vẫn không trông thú vị. Sớm thôi, các nhà khoa học đã phát triển thêm nhiều lớp, bao gồm một ngôn ngữ phổ biến được gọi là C, trên ngôn ngữ hợp ngữ, để họ có thể nhập các hướng dẫn như thế này:
Tuy nếu bạn giống như tôi, thì vẫn không thấy vui. Không mất nhiều thời gian, các nhà khoa học đã xây dựng thêm nhiều lớp, bao gồm một ngôn ngữ phổ biến được gọi là C, trên ngôn ngữ hợp ngữ, để họ có thể nhập các hướng dẫn như sau:
printf(“Xin chào thế giới”);
Ngôn ngữ C dịch điều đó thành ngôn ngữ hợp ngữ, dịch thành các số 1 và 0, dịch thành các bóng bán dẫn nhỏ mở và đóng, cuối cùng sẽ bật các điểm nhỏ trên màn hình máy tính để hiển thị dòng chữ, “Xin chào thế giới”.
Ngôn ngữ C dịch điều đó sang ngôn ngữ hợp ngữ, dịch thành 1s và 0s, dịch thành các bóng bán dẫn nhỏ mở và đóng, cuối cùng sẽ bật các điểm nhỏ trên màn hình máy tính để hiển thị từ, “Xin chào thế giới”.
Với sự trừu tượng, các nhà khoa học đã xây dựng các lớp đường giúp máy tính di chuyển nhanh hơn. Nó làm cho việc sử dụng máy tính trở nên nhanh hơn. Và các thế hệ mới của các lập trình viên máy tính không cần phải là các nhà khoa học thực sự. Họ có thể sử dụng ngôn ngữ cấp cao để làm cho máy tính thực hiện những điều thú vị.
Với việc trừu tượng hóa, các nhà khoa học đã xây dựng các lớp đường giúp máy tính di chuyển nhanh hơn. Điều này làm cho việc sử dụng máy tính nhanh hơn. Và các thế hệ mới của các lập trình viên máy tính không cần phải là những nhà khoa học thực thụ. Họ có thể sử dụng ngôn ngữ cấp cao để làm cho máy tính thực hiện những điều thú vị.
Khi bạn bật máy tính, mở trình duyệt web và mua một bản sao của cuốn sách của tôi trực tuyến cho một người bạn (xin hãy làm điều đó!), bạn đang làm việc trong một chương trình, một lớp chuyển đổi hành động của bạn thành mã mà một lớp khác, gọi là hệ điều hành (như Windows hoặc Linux hoặc MacOS), có thể hiểu được. Hệ điều hành đó có thể được xây dựng trên một hạng mục giống như C, dịch sang Assembly, dịch thành ngôn ngữ máy (1s và 0s), bật và tắt một loạt các bóng bán dẫn.
Vậy, tại sao tôi kể cho bạn nghe điều này? Tương tự như cách lái xe trên bề mặt đường làm cho chuyến đi nhanh hơn, và các lớp mã cho phép bạn làm việc trên máy tính nhanh hơn, những tin tặc như DHH tìm và xây dựng các lớp trừu tượng trong kinh doanh và cuộc sống, cho phép họ nhân bội nỗ lực của mình.
Vậy, tại sao tôi nói điều này với bạn? Tương tự như cách lái xe trên bề mặt đường giúp chuyến đi nhanh hơn, và các lớp mã cho phép bạn làm việc trên máy tính nhanh hơn, các tin tặc như DHH tìm ra và xây dựng các lớp trừu tượng trong kinh doanh và cuộc sống, cho phép họ nhân bội nỗ lực của mình.
Vậy, tại sao tôi nói về điều này? Tương tự như cách lái xe trên bề mặt đường giúp chuyến đi nhanh hơn và các lớp mã cho phép bạn làm việc trên máy tính nhanh hơn, các hacker như DHH tìm và xây dựng các lớp trừu tượng trong kinh doanh và cuộc sống, giúp họ nhân bội nỗ lực của mình.
Tôi gọi những tầng này là các nền tảng.
Trong thời gian học đại học vào những năm đầu 2000, DHH cảm thấy chán chường. Không phải là anh ta không đủ trí tuệ để xử lý trường học. Anh ta chỉ đơn giản không thấy nó có ích lắm.
Anh ấy thực hành nghệ thuật lười biếng lựa chọn. “Một số điểm tụi tôi tự hào nhất là những điểm thấp nhất của tôi,” anh ấy nói với tôi.
Tại trường đại học vào những năm đầu, DHH cảm thấy buồn chán. Không phải vì anh ấy không thể đối phó với học vấn. Anh ấy chỉ đơn giản là không thấy nó quá hữu ích.
Anh ấy thực hành nghệ thuật lười biếng lựa chọn. “Một số trong những điểm tự hào nhất của tôi là những điểm thấp nhất,” anh ấy nói với tôi.
Anh ấy đã rèn luyện nghệ thuật chọn lọc. “Một số trong những điểm tự hào nhất của tôi là những điểm thấp nhất,” anh ấy nói.
Chúng ta đều biết những người ở trường và công việc có khả năng duy trì hiện trạng một cách thành thạo, nhưng có sự khác biệt giữa việc giữ nguyên trạng thái và tìm kiếm cách học một cách không lãng phí nhất hoặc nâng cao trình độ một cách có phương pháp, đó là những gì DHH đã làm.
“Vấn đề của tôi là, nếu tôi chỉ cần bỏ ra 5% nỗ lực so với người nào đó đạt điểm A, và tôi có thể đạt điểm C, đó thật sự là điều tuyệt vời,” anh ta giải thích. “Điều đó chắc chắn là đủ tốt, phải không? [Rồi] Tôi có thể dành phần còn lại của thời gian, 95%, để đầu tư vào điều gì đó thực sự quan trọng với tôi.”
“Vấn đề chính của tôi là, nếu tôi chỉ cần bỏ ra 5% nỗ lực so với người đạt điểm A, và tôi chỉ đạt được điểm C, điều đó thật sự tuyệt vời,” anh giải thích. “Nó chắc chắn là đủ tốt, phải không? [Sau đó] Tôi có thể dành phần còn lại của thời gian, 95%, để đầu tư vào điều mà tôi thực sự quan trọng.”
“Vấn đề của tôi là, nếu tôi có thể dành 5% nỗ lực so với ai đó đạt điểm A, và tôi có thể đạt được điểm C, điều đó thật tuyệt vời,” anh giải thích. “Điều đó chắc chắn là đủ tốt, phải không? [Rồi] Tôi có thể dành phần còn lại của thời gian, 95%, để đầu tư vào điều mà tôi thực sự quan tâm.”
DHH áp dụng khái niệm này để dễ dàng vượt qua những lớp học làm anh ta cảm thấy chán nản, để anh ta có thể gấp đôi nỗ lực vào những điều quan trọng với anh ta, như học xây dựng trang web. Với thời gian tiết kiệm được, anh ấy viết mã bên cạnh.
Một ngày nọ, một cơ quan thiết kế web nhỏ tại Mỹ có tên là 37signals yêu cầu DHH xây dựng một công cụ quản lý dự án để giúp tổ chức công việc của họ. Mong muốn tiết kiệm thời gian cho dự án mới này, anh quyết định thử một ngôn ngữ lập trình tương đối mới gọi là Ruby, được phát triển bởi một người đàn ông ở Nhật Bản, người ưa sự đơn giản. DHH bắt đầu viết mã một cách nghiêm túc.
Mặc dù có nhiều lớp trừu tượng, Ruby (và tất cả các ngôn ngữ mã khác) vẫn buộc các lập trình viên phải đưa ra vô số quyết định không quan trọng. Bạn sẽ đặt tên cho cơ sở dữ liệu của mình là gì? Bạn muốn cấu hình máy chủ của mình như thế nào? Những điều nhỏ nhặt này tích tụ lại. Và nhiều chương trình yêu cầu viết mã lặp lại của các thành phần cơ bản giống nhau mỗi lần.
Mặc dù có nhiều lớp trừu tượng, Ruby (và tất cả các ngôn ngữ mã khác) vẫn buộc các lập trình viên phải đưa ra vô số quyết định không quan trọng. Bạn sẽ đặt tên cho cơ sở dữ liệu của mình là gì? Bạn muốn cấu hình máy chủ của mình như thế nào? Những điều nhỏ nhặt này tích tụ lại. Và nhiều chương trình yêu cầu viết mã lặp lại của các thành phần cơ bản giống nhau mỗi lần.
Mặc dù có nhiều lớp trừu tượng, Ruby (và tất cả các ngôn ngữ mã khác) vẫn buộc các lập trình viên phải đưa ra vô số quyết định không quan trọng. Bạn sẽ đặt tên cho cơ sở dữ liệu của mình là gì? Bạn muốn cấu hình máy chủ của mình như thế nào? Những điều nhỏ nhặt này tích tụ lại. Và nhiều chương trình yêu cầu viết mã lặp lại của các thành phần cơ bản giống nhau mỗi lần.
Mặc dù có một số lớp trừu tượng, Ruby (và tất cả các ngôn ngữ mã khác) bắt lập trình viên phải đưa ra vô số quyết định không quan trọng. Bạn đặt tên cho cơ sở dữ liệu của mình là gì? Bạn muốn định cấu hình máy chủ của mình như thế nào? Những điều nhỏ nhặt đó tích tụ lại. Và nhiều chương trình yêu cầu mã hóa lặp đi lặp lại các thành phần cơ bản giống nhau.
Điều đó không phù hợp với thói quen lười biếng có chọn lọc của DHH. 'Tôi ghét lặp lại chính mình.' Anh ấy gần như nhảy lên mặt tôi khi nói điều đó.
Tuy nhiên, các lập trình viên truyền thống coi việc lặp lại như vậy là một nghi lễ, một rào cản đối với những người mới chưa trả phí lập trình. 'Nhiều lập trình viên tự hào về đạo đức làm việc của Tin lành, như là phải khó mới đúng,' DHH nói.
Nhưng các lập trình viên thông thường coi việc lặp lại như vậy là một nghi lễ, một rào cản gia nhập đối với những người mới chưa trả phí lập trình. DHH nói: 'Nhiều lập trình viên tự hào về đạo đức làm việc của đạo Tin lành, giống như nó phải rất vất vả nếu không thì không đúng.
Tuy nhiên, các lập trình viên truyền thống coi việc lặp lại như vậy là một nghi lễ, một rào cản đối với những người mới chưa trả phí lập trình. 'Nhiều lập trình viên tự hào về đạo đức làm việc của Tin lành, như là phải khó mới đúng,' DHH nói.
Anh ấy nghĩ điều đó là ngu ngốc. “Tôi có thể làm nhiều điều thú vị khác trong cuộc đời của mình,” anh quyết định. “Vì vậy nếu lập trình là điều đó, nó phải thật tuyệt vời.”
Anh ấy nghĩ điều đó là ngu ngốc. “Tôi có thể làm nhiều điều thú vị khác trong cuộc đời của mình,” anh quyết định. “Vì vậy nếu lập trình là điều đó, nó phải thật tuyệt vời.”
Vậy nên, DHH đã xây dựng một lớp trên cùng của Ruby để tự động hóa tất cả các nhiệm vụ lặp lại và các quyết định tùy ý mà anh không muốn mất thời gian. (Không quan trọng anh đặt tên cơ sở dữ liệu như thế nào.) Lớp mới của anh trên vỉa hè lập trình trở thành một tập hợp các đường ray giúp tạo ứng dụng Ruby nhanh hơn. Anh gọi nó là Ruby on Rails.
Vì vậy, DHH đã xây dựng một lớp bên trên Ruby để tự động hóa tất cả các tác vụ lặp đi lặp lại và các quyết định tùy ý mà anh ta không muốn chiếm thời gian của mình. (Điều đó không quan trọng anh ấy đặt tên cơ sở dữ liệu như thế nào.) Lớp mới của anh ấy trên vỉa hè lập trình đã trở thành một tập hợp các đường ray giúp việc tạo ứng dụng Ruby nhanh hơn. Anh gọi nó là Ruby on Rails.
Rails giúp DHH xây dựng dự án của mình—mà 37signals đặt tên là Basecamp—nhanh hơn so với anh có thể nếu không có Rails. Nhưng anh không sẵn lòng cho những gì xảy ra tiếp theo.
Rails đã giúp DHH xây dựng dự án của mình - mà 37signals đặt tên là Basecamp - nhanh hơn những gì anh ấy có thể làm. Nhưng anh ấy không chuẩn bị cho những gì sẽ xảy ra tiếp theo.
Khi anh ấy chia sẻ Ruby on Rails trên Internet, các lập trình viên đã mê mẩn nó. Rails dễ sử dụng hơn so với lập trình thông thường, nhưng cũng mạnh mẽ không kém, vì vậy hàng nghìn người tự học đã tải xuống nó. Các lập trình viên kỳ cựu thì thầm về “lập trình thực”, nhưng nhiều người đã chuyển sang vì Rails cho phép họ xây dựng các dự án của mình nhanh hơn.
Tâm lý đằng sau Rails đã bắt đầu lan truyền. Mọi người bắt đầu xây dựng các tiện ích bổ sung để người khác không phải phát minh lại quy trình viết mã của những thứ phổ biến như biểu mẫu đăng ký trang web hoặc công cụ tìm kiếm. Họ gọi chúng là “gems” và chia sẻ chúng. Mỗi đóng góp đã giúp tiết kiệm công việc cho lập trình viên tiếp theo.
Tâm lý đằng sau Rails đã bắt đầu. Mọi người bắt đầu xây dựng các tiện ích bổ sung để những người khác không phải phát minh lại quy trình viết mã của những thứ phổ biến như biểu mẫu đăng ký trang web hoặc công cụ tìm kiếm. Họ gọi những viên đá quý này và chia sẻ chúng. Mỗi đóng góp đã giúp tiết kiệm công việc cho lập trình viên tiếp theo.
Khi anh ấy chia sẻ Ruby on Rails trên Internet, các lập trình viên đã mê mẩn nó. Rails dễ sử dụng hơn so với lập trình thông thường, nhưng cũng mạnh mẽ không kém, vì vậy hàng nghìn người tự học đã tải xuống nó. Các lập trình viên kỳ cựu thì thầm về “lập trình thực”, nhưng nhiều người đã chuyển sang vì Rails cho phép họ xây dựng các dự án của mình nhanh hơn.
Bất ngờ, mọi người đang sử dụng Ruby on Rails để giải quyết mọi loại vấn đề mà trước đây họ chưa từng giải quyết bằng lập trình. Một công ty vệ sinh ở Minnesota đã cải tiến hệ thống kế toán của họ bằng Rails. Một cặp vợ chồng ở New Jersey đã xây dựng một mạng xã hội cho những người đam mê sợi. Rails quá tốt đẹp khiến nhiều người trở thành lập trình viên.
Năm 2006, một vài chàng trai tại một startup podcast có ý tưởng cho một dự án phụ. Với Rails, họ có thể xây dựng nó trong vài ngày — như một thử nghiệm — trong khi điều hành công việc kinh doanh của họ. Họ tung ra nó để xem điều gì sẽ xảy ra. Vào mùa xuân 2007, ứng dụng này đã trở nên phổ biến đến nỗi đội đã bán bớt công ty cũ để theo đuổi dự án phụ toàn thời gian. Đó là Twitter.
Một công ty phần mềm truyền thống có thể đã xây dựng Twitter trên một tầng dưới như C và mất tháng hoặc năm để hoàn thiện nó trước khi biết liệu người dùng có sử dụng nó không. Twitter — và nhiều công ty thành công khác — đã sử dụng nền tảng Rails để ra mắt và xác minh ý tưởng kinh doanh trong vài ngày. Rails dịch những gì mà lập trình viên của Twitter muốn nói với tất cả những con bóng bán dẫn máy tính đó làm — với nỗ lực tương đối ít. Điều đó cho phép họ xây dựng công ty nhanh chóng. Trong thế giới công nghệ cao — giống như trong đua xe — một lợi thế nhỏ về thời gian có thể là sự khác biệt giữa chiến thắng và thua cuộc.
Bất ngờ, mọi người đang sử dụng Ruby on Rails để giải quyết mọi loại vấn đề mà trước đây họ chưa từng giải quyết bằng lập trình. Một công ty vệ sinh ở Minnesota đã cải tiến hệ thống kế toán của họ bằng Rails. Một cặp vợ chồng ở New Jersey đã xây dựng một mạng xã hội cho những người đam mê sợi. Rails quá tốt đẹp khiến nhiều người trở thành lập trình viên.
Năm 2006, một vài chàng trai tại một startup podcast có ý tưởng cho một dự án phụ. Với Rails, họ có thể xây dựng nó trong vài ngày — như một thử nghiệm — trong khi điều hành công việc kinh doanh của họ. Họ tung ra nó để xem điều gì sẽ xảy ra. Vào mùa xuân 2007, ứng dụng này đã trở nên phổ biến đến nỗi đội đã bán bớt công ty cũ để theo đuổi dự án phụ toàn thời gian. Đó là Twitter.
Một công ty phần mềm cổ điển có thể đã xây dựng Twitter trên một nền tảng thấp hơn như C và mất hàng tháng hoặc nhiều năm để hoàn thiện nó trước khi biết mọi người có sử dụng hay không. Twitter — và nhiều công ty thành công khác — đã sử dụng nền tảng Rails để triển khai và xác minh một ý tưởng kinh doanh trong vài ngày. Rails đã dịch những gì mà các lập trình viên của Twitter muốn các bóng bán dẫn máy tính thực hiện — với ít công sức. Điều đó cho phép họ xây dựng công ty nhanh chóng. Trong thế giới công nghệ cao - giống như trong đua xe - một lợi thế thời gian nhỏ có thể tạo ra sự khác biệt giữa chiến thắng và thất bại.
Isaac Newton ghi công thành công của mình là một nhà khoa học vào việc “đứng trên vai của những người khổng lồ” - dựa trên công việc của các nhà tư tưởng vĩ đại trước ông.
Nền tảng là công cụ và môi trường cho phép chúng tôi thực hiện điều đó. Rõ ràng là việc sử dụng nền tảng áp dụng trong lập trình máy tính, nhưng nếu chúng ta muốn áp dụng tư duy nền tảng vào một lĩnh vực ngoài các công ty khởi nghiệp công nghệ thì sao?
Nền tảng là những công cụ và môi trường cho phép chúng tôi làm điều đó. Rõ ràng là cách sử dụng nền tảng áp dụng trong lập trình máy tính, nhưng nếu chúng ta muốn áp dụng tư duy nền tảng cho một thứ gì đó bên ngoài các công ty khởi nghiệp công nghệ thì sao?
Một công ty phần mềm cổ điển có thể đã xây dựng Twitter trên một nền tảng thấp hơn như C và mất hàng tháng hoặc nhiều năm để hoàn thiện trước khi biết mọi người có sử dụng hay không. Twitter — và nhiều công ty thành công khác — đã sử dụng nền tảng Rails để triển khai và xác minh một ý tưởng kinh doanh trong vài ngày. Rails đã dịch những gì mà các lập trình viên của Twitter muốn các bóng bán dẫn máy tính thực hiện — với ít công sức. Và điều đó cho phép họ xây dựng công ty nhanh chóng. Trong thế giới công nghệ cao - giống như trong đua xe - một lợi thế thời gian nhỏ có thể tạo ra sự khác biệt giữa chiến thắng và thất bại.
Nói đi, lái xe đua á?
Nói đi, đua xe hơi á?
David Heinemeier Hansson đang ở trong một cái hố sâu. Giữa chặng đường của mình, cơn mưa phùn đã trở thành một trận mưa lớn. Qua từng khúc cua, anh ta bắt đầu trượt ở tốc độ cao, vẫn giữ vị trí thứ ba, với đám đối thủ đang đuổi sát ở phía sau.
David Heinemeier Hansson bắt đầu rơi vào một hố sâu. Ở giữa quãng thời gian đua của mình, mưa nhỏ đã biến thành mưa rào. Vòng sau vòng, anh ta trượt ở tốc độ cao, vẫn giữ vị trí thứ ba, với đám đối thủ đói đuổi ở phía sau.
Các loại xe LMP chạy trên lốp trơn — không có rãnh — để đạt được tốc độ. Diện tích bề mặt lớn nhất của lốp đang bám đường vào bất kỳ thời điểm nào. Nhưng có một lý do mà các phương tiện đường phố có rãnh. Nước trên đường sẽ khiến lốp trơn trượt, vì cao su trơn không thể đào rãnh nó đi. Lốp có rãnh đẩy nước vào giữa rãnh, tạo độ bám cho cao su và ngăn ngừa việc trượt trên nước. Càng trơn trượt lốp — và càng nhanh — càng có khả năng một chút nước sẽ khiến xe trượt.
Đó chính xác là tình hình đang diễn ra với các tay đua LMP. Khi mưa trở nên nặng hơn, DHH thấy mình trượt quanh bên trong một chiếc xe đang trượt trên khắp đường đua. Gần đó, một tay đua mất trót, va vào tường.
Xe ô tô vụt tới những hố ở bên lề đường đua, để đội của họ có thể xé lốp trơn và gắn lốp mưa vào. Lốp mưa an toàn hơn, nhưng chạy chậm hơn. Và mất 13 giây quý báu để lắp đặt. Khi chiếc xe đã đi vào hố, dừng lại, thay lốp và bắt đầu di chuyển lại, có thể mất hơn một phút.
Đó chính xác là những gì đang xảy ra với các tay đua LMP. Khi cơn mưa lớn hơn, DHH thấy mình trượt quanh bên trong một chiếc xe đang trượt trên khắp đường đua. Gần đó, một người mất lái, tông vào tường.
Xe LMP chạy bằng lốp trơn - không có gai - để tăng tốc. Diện tích bề mặt tối đa của lốp có thể bám vào đường bất cứ lúc nào. Nhưng có một lý do khiến các phương tiện giao thông đường phố có rãnh. Nước trên đường sẽ làm trôi lốp trơn vì lớp cao su trơn không thể thoát ra ngoài. Lốp có rãnh giúp đẩy nước giữa mặt lốp, tạo độ bám cao su và ngăn chặn quá trình thủy hóa. Lốp xe càng trơn - và tốc độ càng nhanh - thì càng có nhiều khả năng khiến xe bị trôi.
Xe đua chạy về phía hố ở bên cạnh đường đua, để các đội có thể tháo lốp trơn và gắn lốp mưa. Lốp mưa an toàn hơn, nhưng chạy chậm hơn. Và việc lắp đặt mất 13 giây quý báu. Khi xe đã vào hố, dừng lại, thay lốp và bắt đầu di chuyển lại, có thể mất hơn một phút.
DHH la hét vào radio với kỹ sư của mình, Tôi có nên vào hố để đổi lốp mới không?
DHH hét vào radio với kỹ sư của mình, Tôi có nên vào hố để đổi lốp mới không?
Như tôi đã nói, DHH không phải là tay đua giàu kinh nghiệm nhất. Anh ấy đã tham gia cuộc đua này vì anh ấy có kỹ năng hack đỉnh cao. Vài năm sau thành công của 37signals, và khi Rails tự tạo ra cuộc sống của riêng mình, Hansson đã bắt đầu đua GT4 — về cơ bản là những chiếc xe đường phố đã được cải tiến — trong thời gian rảnh rỗi.
Ban đầu, anh ấy kết thúc ở giữa nhóm với những người mới vào. Nhưng sau khi xem video của những tay lái kỳ cựu, anh ấy bắt đầu đạt thành tích cao hơn. Đủ cao để sau sáu cuộc đua, anh ấy được phép tham gia vào các cuộc đua GT3 (cấp độ tiếp theo), mặc dù không giành chiến thắng ở vị trí đầu tiên nào. Trong GT3, anh ấy đua thêm sáu lần nữa, giành được hạng nhất một lần, hạng ba một lần khác. Anh ấy ngay lập tức leo lên GTE (chữ “E” là cho “endurance”). Trong khi các tay đua khác tranh nhau theo cách truyền thống, dành một năm trong mỗi liên đoàn, và chỉ tiến lên sau khi trở thành nhà vô địch liên đoàn, DHH “sẽ dành đúng thời gian ngắn nhất có thể trong bất kỳ loạt đua cụ thể nào trước khi đủ tốt để chuyển lên cái tiếp theo.”
Ban đầu, anh ấy kết thúc ở giữa nhóm với những người mới vào. Nhưng sau khi xem video của những tay lái kỳ cựu, anh ấy bắt đầu đạt thành tích cao hơn. Đủ cao để sau sáu cuộc đua, anh ấy được phép tham gia vào các cuộc đua GT3 (cấp độ tiếp theo), mặc dù không giành chiến thắng ở vị trí đầu tiên nào. Trong GT3, anh ấy đua thêm sáu lần nữa, giành được hạng nhất một lần, hạng ba một lần khác. Anh ấy ngay lập tức leo lên GTE (chữ “E” là cho “endurance”). Trong khi các tay đua khác tranh nhau theo cách truyền thống, dành một năm trong mỗi liên đoàn, và chỉ tiến lên sau khi trở thành nhà vô địch liên đoàn, DHH “sẽ dành đúng thời gian ngắn nhất có thể trong bất kỳ loạt đua cụ thể nào trước khi đủ tốt để chuyển lên cái tiếp theo.”
Ban đầu, anh ta hoàn thành ở giữa cuộc đua với những người mới khác. Nhưng sau khi xem các video về các tay lái chuyên nghiệp, anh ấy quyết định đặt mục tiêu cao hơn. Đủ cao để sau sáu cuộc đua, anh ta được tham gia các cuộc đua GT3 (cấp độ tiếp theo), mặc dù không giành được vị trí đầu tiên. Trong GT3, anh ta đã tham gia sáu lần nữa, giành chiến thắng một lần và về nhì một lần khác. Ngay sau đó, anh ấy chuyển sang GTE (viết tắt của 'độ bền'). Trái với cách các tay đua khác làm, dành một năm trong mỗi giải đấu và chỉ thăng tiến sau khi trở thành nhà vô địch giải đấu, DHH nói rằng, “Tôi sẽ dành ít thời gian nhất có thể trong bất kỳ loạt đua nào trước khi đủ tốt để tiến lên cấp độ tiếp theo.”
Không có quy định nào nói rằng bạn phải vô địch giải để chuyển từ GT4 lên GT3. Cũng không có quy định nào nói rằng bạn phải dành một năm tại một hạng mục cụ thể trước khi tiến lên. Đó chỉ là cách mọi người thường làm. Thay vào đó, DHH nén những gì thông thường mất từ 5 đến 7 năm làm việc chăm chỉ thành 18 tháng làm việc thông minh. “Khi bạn ngừng nghĩ rằng bạn phải tuân theo con đường đã được định sẵn,” anh ấy nói, “bạn có thể tăng tốc độ một cách đáng kể.”
Trên đường đua Silverstone đầy mưa, việc đánh cược không còn giúp ích, và việc lười biếng không phải là lựa chọn. DHH phải lái xe càng nhanh càng an toàn, và mỗi micro giây đều quan trọng. Trong một cuộc cạnh tranh khốc liệt như vậy, lợi thế duy nhất mà một tay đua có được là kỹ năng lái xe tinh thông.
Ban đầu, anh ta hoàn thành ở giữa cuộc đua với những người mới khác. Nhưng sau khi xem các video về các tay lái chuyên nghiệp, anh ấy quyết định đặt mục tiêu cao hơn. Đủ cao để sau sáu cuộc đua, anh ta được tham gia các cuộc đua GT3 (cấp độ tiếp theo), mặc dù không giành được vị trí đầu tiên. Trong GT3, anh ta đã tham gia sáu lần nữa, giành chiến thắng một lần và về nhì một lần khác. Ngay sau đó, anh ấy chuyển sang GTE (viết tắt của 'độ bền'). Trái với cách các tay đua khác làm, dành một năm trong mỗi giải đấu và chỉ thăng tiến sau khi trở thành nhà vô địch giải đấu, DHH nói rằng, “Tôi sẽ dành ít thời gian nhất có thể trong bất kỳ loạt đua nào trước khi đủ tốt để tiến lên cấp độ tiếp theo.”
Trên đường đua Silverstone đầy mưa, việc đánh cược không còn giúp ích, và việc lười biếng không phải là lựa chọn. DHH phải lái xe càng nhanh càng an toàn, và mỗi micro giây đều quan trọng. Trong một cuộc cạnh tranh khốc liệt như vậy, lợi thế duy nhất mà một tay đua có được là kỹ năng lái xe tinh thông.
Hoặc, như thế nào cũng được, một nền tảng tốt hơn.
Hay, như đã dự đoán, một nền tảng tốt hơn.
TÔI NÊN ĐI VÀO GARA KHÔNG? Người đàn ông ghét phải lặp lại chính mình lại nói qua radio. Cuối cùng tôi sẽ kết thúc đâm vào tường!
Kỹ sư của anh ta bảo anh phải kiên nhẫn. Mưa sắp tan.
Kỹ sư của anh ấy bảo anh ấy phải kiên nhẫn. Trời sắp sửa sáng lên.
Kỹ sư của anh ta bảo anh ta phải vượt qua. Mưa sắp dừng lại.
Lực G đập vào cơ thể, DHH cẩn thận ôm sát các đường cong trong một vòng nữa, và đúng như dự đoán, cơn mưa bắt đầu dịu đi. Sau hai vòng, đường đua đã khô ráo. Lốp trơn của Heinemeier Hansson bám sát vào đường đua với ma sát hơn so với lốp mưa mới của đối thủ, và anh ấy nhanh chóng vượt lên phía trước. Các tay đua khác phải vào gara để đổi lốp trơn, làm chậm lại gần hai phút mà DHH hoàn toàn tránh được.
Sau khi hoàn thành chặng tiếp sức, DHH nhảy ra khỏi xe, hủy diệt sự cạnh tranh.
Khi kết thúc chặng đua của mình, DHH nhảy ra khỏi xe, phá hủy đối thủ.
Khi kết thúc chặng chạy tiếp sức của mình, DHH nhảy ra khỏi xe, phá hủy cuộc đua.
Lốp trơn mang lại ưu thế nền tảng cho DHH, nâng cao khả năng lái xe nhanh hơn với cùng một cố gắng đạp ga. Và mặc dù lái xe trơn trên đường mưa có nguy hiểm, nhưng kỹ năng học hỏi từ các tay đua xuất sắc đã giúp anh ta sống sót.
Nhìn lại quá trình tiến bộ nhanh chóng trong đua xe của mình, DHH nói, “Bạn có thể tăng tốc quá trình đào tạo nếu bạn biết cách đào tạo đúng cách, nhưng bạn vẫn không cần phải đặc biệt. Tôi không nghĩ mình đặc biệt như một lập trình viên hoặc một doanh nhân hoặc một tay đua xe. Tôi chỉ biết cách luyện tập.”
DHH đã chứng minh anh ta có kỹ năng để đua xe. Video của các tay đua xuất sắc đã giúp anh ta học nhanh chóng. Ưu thế về lốp xe đã giúp anh ta vượt qua những tay đua có kỹ năng tương đương và đẩy anh ta lên tầm cao mới. Và các liên đoàn đua xe tiên tiến chính là nền tảng đã buộc anh ta phải nắm vững các kiến thức cơ bản—và nhanh chóng hơn—so với việc anh ta sẽ làm ở một cấp độ thấp hơn.
Cân nhắc về sự tiến bộ nhanh chóng trong môn đua của mình, DHH nói, “Bạn có thể tăng tốc quá trình đào tạo của mình nếu bạn biết cách đào tạo đúng cách, nhưng bạn vẫn không cần phải đặc biệt. Tôi không nghĩ mình đặc biệt như một lập trình viên hoặc một doanh nhân hoặc một tay đua xe. Tôi chỉ biết cách rèn luyện.”
DHH đã chứng minh anh ta có kỹ năng để đua xe. Video của các tay đua xuất sắc đã giúp anh ta học nhanh chóng. Ưu thế về lốp xe đã giúp anh ta vượt qua những tay đua có kỹ năng tương đương và đẩy anh ta lên tầm cao mới. Và các liên đoàn đua xe tiên tiến chính là nền tảng đã buộc anh ta phải nắm vững các kiến thức cơ bản—và nhanh chóng hơn—so với việc anh ta sẽ làm ở một cấp độ thấp hơn.
DHH đã chứng minh rằng anh ấy có khả năng đua xe. Các video về các tay lái xuất sắc đã giúp anh ấy học nhanh chóng. Lợi thế về lốp xe đã giúp anh ấy vượt qua những tay lái có kỹ năng tương đương và đẩy anh ấy tiến lên một tầm cao mới. Và các giải đua hàng đầu đã trở thành nền tảng buộc anh ấy phải nắm vững các kiến thức cơ bản — và nhanh hơn — so với những gì anh ấy đã có ở cấp độ thấp hơn.
Khi DHH trở lại thăm trường đua quê nhà ở Chicago, cùng một nhóm tay đua vẫn thống trị các giải đua thấp hơn.
Anh ấy trở lại và một cách dễ dàng đánh bại họ.
Khi DHH quay trở lại thăm trường đua quê nhà ở Chicago, cùng một nhóm tay đua vẫn thống trị các giải đua thấp hơn.
Anh ấy quay trở lại và một cách dễ dàng đánh bại họ.
Nỗ lực chỉ vì nỗ lực cũng là một truyền thống ngớ ngẩn như việc phải trả phí. Làm việc chăm chỉ sẽ tốt hơn bao nhiêu khi được tăng cường bởi một đòn bẩy? Công nghệ dạy chúng ta những kỹ năng và cho phép chúng ta tập trung vào việc trở nên xuất sắc, thay vì phải tạo ra lại bánh xe hoặc lặp lại chính mình.
“Bạn có thể xây dựng trên rất nhiều thứ tồn tại trong thế giới này,” David Heinemeier Hansson nói với tôi. “Ai đó đi vào và làm công việc khoa học cơ bản, khó khăn đó…”
David Heinemeier Hansson nói với tôi: “Bạn có thể xây dựng dựa trên rất nhiều thứ tồn tại trên thế giới này. “Ai đó đi vào và làm công việc dựa trên khoa học cơ bản, khó khăn đó…”
“Và sau đó,” anh ấy mỉm cười, “bạn xây dựng nghệ thuật lên trên điều đó.”
“Và sau đó,” anh ấy mỉm cười, “bạn xây dựng nghệ thuật lên trên điều đó.”
“Và trên tất cả,” anh cười, “bạn đã tạo ra một tác phẩm tuyệt vời.”