Tôi đã có (có khả năng) vấn đề tương tự nhiều năm trước, nó đã kéo dài một vài năm và tôi đã vượt qua nó. Vì vậy, có thể bạn sẽ cảm thấy thú vị khi biết tôi đã đạt được điều đó như thế nào, ngay cả khi tôi không chắc chắn cách của tôi cũng sẽ áp dụng cho bạn.
Bạn cũng nên có một cái nhìn ở đây: Bảy giai đoạn chuyên môn về Kỹ thuật phần mềm Điều đó cho thấy năng suất phần lớn là một tác dụng phụ của mức độ kỹ năng. Có thể bạn vẫn đang ở một thời điểm nào đó giữa giai đoạn 3 và giai đoạn 4 về công nghệ bạn đang sử dụng (trình độ kỹ năng phụ thuộc vào công nghệ, bạn có thể thành thạo một số công nghệ trong khi vẫn học những công nghệ khác).
Bây giờ tôi bắt đầu với lời khai tiểu sử.
Một chút bối cảnh. Tôi 47. Tôi bắt đầu lập trình lúc 12 tuổi vào những năm 80. Khi còn học trung học, tôi cũng làm việc như một lập trình viên trò chơi chuyên nghiệp bán thời gian. Về cơ bản, nó không mang lại cho tôi nhiều tiền như vậy, chỉ đủ để mua phần cứng, nhưng tôi thích nó và học được nhiều thứ. Năm 18 tuổi, tôi bắt đầu học chính thức về Khoa học Máy tính.
Kết quả là khi tôi 20 tuổi, bất cứ khi nào bắt đầu bất kỳ nhiệm vụ lập trình nào, tôi đều biết nhiều cách để giải quyết các vấn đề đã cho và rất ý thức về nhiều tham số và cạm bẫy trong tay, và những hạn chế và giới hạn của bất kỳ phương pháp nào.
Tại một số điểm (khoảng 26 tuổi), việc viết bất kỳ chương trình nào trở nên thực sự khó khăn đối với tôi. Có rất nhiều khả năng đã mở ra mà tôi không thể lựa chọn giữa chúng nữa. Trong một vài năm (làm cho nó 6) tôi thậm chí đã ngừng lập trình và trở thành một người viết tin tức kỹ thuật.
Tôi chưa bao giờ hoàn toàn ngừng cố gắng để lập trình tuy nhiên. Và đến một lúc nào đó nó trở lại. Chìa khóa đối với tôi là lập trình cực đoan, cụ thể hơn là nguyên tắc Đơn giản: "Viết điều đơn giản nhất có thể làm việc".
Về cơ bản, tôi buộc bản thân không quan tâm đến hiệu quả mã (đó là rào cản chính của tôi, tránh các thiết kế không hiệu quả), nhưng chỉ đi theo cách dễ nhất. Tôi cũng buộc tôi phải quan tâm ít hơn về các lỗi và trì hoãn việc xử lý lỗi để sau đó, sau khi viết các bài kiểm tra làm tăng lỗi (thực sự đó là TDD).
Đó là điều tôi học được khi viết. Khi tôi không biết viết gì, hoặc tôi biết những gì tôi đang viết là xấu . Cứ đi tiếp. Thực tế viết những thứ xấu. Cuối cùng tôi sẽ sửa nó sau. Hoặc nếu nó thực sự tệ đến mức xóa nó và viết lại, nhưng nó nhanh hơn để viết những thứ hai lần viết bất cứ điều gì hoàn hảo ngay lần đầu tiên.
Thực sự rất có khả năng một mã mà bạn tin là tốt ngay từ lần viết đầu tiên sẽ cần cải thiện nhiều như một mã thực sự xấu.
Nếu bạn đi theo con đường Đơn giản, bạn cũng nhận được một phần thưởng bổ sung. Bạn dễ dàng chấp nhận để loại bỏ / thay đổi thiết kế / mã hóa ban đầu. Bạn có được một tâm trí linh hoạt hơn.
Tôi cũng có thói quen đưa một nhận xét tạm thời vào mã, giải thích những gì tôi không làm bây giờ và dự định sẽ làm sau khi mã sẽ hoạt động trong trường hợp sử dụng bình thường.
Tôi cũng đã tham dự một Dojo XP, một katas mã thực hành với các lập trình viên khác để tiếp thu các thực hành XP. Nó đã giúp đỡ. Nó làm cho các phương pháp chính thức ở trên theo bản năng. Lập trình cặp cũng giúp. Làm việc với các lập trình viên trẻ mang lại một số động lực, nhưng với kinh nghiệm bạn cũng thấy những gì họ không làm. Ví dụ trong trường hợp của tôi, tôi thường thấy họ tham gia vào các thiết kế quá phức tạp và tôi biết cơn ác mộng thiết kế có thể dẫn đến. Đi theo cách đó. Đã làm điều đó. Có vấn đề.
Điểm tối quan trọng đối với tôi là giữ dòng chảy. Nhanh chóng là thực sự thành công trong việc giữ dòng chảy.
Bây giờ tôi trở lại là một lập trình viên chuyên nghiệp và tôi tin rằng tôi đều tốt hơn và nhanh hơn với sự hiểu biết sâu sắc hơn về những gì tôi đang làm. Thực hành TDD Tôi vẫn có thể chậm hơn một chút so với khi tôi còn là một con bò đực nhỏ (và chưa thử nghiệm gì), nhưng tôi cũng không sợ tái cấu trúc và chắc chắn dành ít thời gian để gỡ lỗi hơn (gần như không có thời gian, làm cho nó ít hơn 10% thời gian ).
Cuối cùng: Tôi đã vượt qua codeblock của mình bằng các phương thức nhanh (XP), đơn giản hóa sau đó tái cấu trúc và thực hành để biến điều đó thành bản năng. Nó làm việc cho tôi. Không chắc chắn nó có thể được khái quát cho bất cứ ai khác.
Về mức độ tiếp thu kỹ năng, tôi chủ yếu học cách chấp nhận rằng mỗi khi tôi thay đổi công nghệ (học ngôn ngữ mới, khuôn khổ mới, v.v.) tôi sẽ trải qua một giai đoạn khi tôi chậm lại. Điều này là bình thường và cuối cùng sẽ khắc phục điều đó. Tôi cũng có thể bù đắp cho điều đó bằng phương pháp tốt và kỹ năng lập trình mục đích chung và nó sẽ không còn là vấn đề nữa.