Thúc đẩy bản thân thực sự viết mã sau khi bạn đã thiết kế một cái gì đó [đóng]


27

Nó chỉ xảy ra với tôi hay điều này cũng quen thuộc với bạn?

Nó giống như thế này: Bạn phải tạo ra một cái gì đó; một mô-đun, một tính năng, toàn bộ ứng dụng ... bất cứ điều gì. Đó là một điều thú vị mà bạn chưa bao giờ làm trước đây, nó là thách thức.

Vì vậy, bạn bắt đầu nghĩ làm thế nào bạn sẽ làm điều đó. Bạn vẽ một số bản phác thảo. Bạn viết một số nguyên mẫu để kiểm tra ý tưởng của bạn. Bạn đang đặt các mảnh khác nhau với nhau để có được cái nhìn hoàn chỉnh.

Cuối cùng bạn kết thúc với một thiết kế mà bạn thích, một cái gì đó đơn giản, rõ ràng cho mọi người, dễ bảo trì ... bạn đặt tên cho nó. Bạn bao quát mọi cơ sở, bạn nghĩ về mọi thứ. Bạn biết rằng bạn sẽ có lớp này và tệp đó và lược đồ cơ sở dữ liệu đó. Cấu hình cái này ở đây, điều chỉnh cái khác này ở đó, v.v.

Nhưng bây giờ, sau khi mọi thứ đã ổn định, bạn phải ngồi xuống và thực sự viết mã cho nó. Và không còn thách thức nữa .... Đã ở đó, làm điều đó! Viết mã bây giờ chỉ là "thủ tục" và làm cho nó giống như lặp lại những gì bạn vừa hoàn thành.

Ở công việc trước đây của tôi, đôi khi tôi đã bỏ qua nó vì một người khác đã mã hóa dựa trên thông số kỹ thuật của tôi, nhưng tại buổi biểu diễn mới của tôi, tôi phụ trách toàn bộ quá trình nên tôi cũng phải làm điều này (vì tôi được trả tiền để làm nó).

Nhưng tôi có một dự án thú cưng tôi đang làm ở nhà, sau giờ làm việc và chỉ có tôi và không ai trả tiền cho tôi để làm điều đó. Tôi thực hiện công việc sáng tạo và sau đó khi đến lúc viết nó xuống, tôi không cảm thấy như vậy (hãy duyệt web một chút, xem những gì mới trên P.SE , trên SO, v.v.).

Tôi chỉ muốn chuyển sang điều thách thức tiếp theo, rồi tiếp theo, và tiếp theo ...

Điều này cũng xảy ra với bạn? Làm thế nào để bạn đối phó với nó?

Làm thế nào để bạn thuyết phục bản thân đi vào và viết mã kỳ dị?

Tôi sẽ có bất kỳ câu trả lời.


Ước tính của bạn về quy mô của dự án của bạn là gì? Mục tiêu của bạn là gì? Ai sẽ được hưởng lợi từ dự án nếu nó trở nên thành công? Những loại lợi ích?
rwong

2
@rwong: Mục tiêu chính của tôi là mở rộng kiến ​​thức. Tôi thử nghiệm dự án cá nhân của mình với các ý tưởng, kỹ thuật, libs khác nhau, vv với mục đích tự cải thiện. Nhưng tôi thực sự muốn xây dựng một cái gì đó với một kịch bản trường hợp sử dụng thực sự và không chỉ là một loạt các nguyên mẫu không liên quan.

1
Nếu bạn chỉ thiết kế và không bao giờ viết mã, làm sao bạn biết nếu bạn thiết kế sẽ hoạt động? Mã hoặc xác nhận hoặc từ chối tính khả thi của một "thiết kế". Nói cách khác, thật dễ dàng để "thiết kế" bằng cách vẫy tay mơ hồ, nhưng thực tế việc thực hiện thường là một khối lượng công việc khổng lồ. Nó đôi khi bực bội, đôi khi tẻ nhạt, nhưng cuối cùng, đối với tôi ít nhất, hoàn thành.
Kevin

Tôi đã trả lời điều này hơn 3 năm trước, nhưng khi tôi đọc lại câu hỏi của bạn, tôi tự hỏi liệu đây có phải là dấu hiệu của ADHD (mà tôi tình cờ có). Tôi cũng đấu tranh với những gì câu hỏi của bạn mô tả, và mặc dù những gì tôi trả lời giúp tôi một chút, nhưng nó vẫn cực kỳ khó khăn. Russell Barkley giải thích lý do tại sao khá tốt: youtu.be/LyDliT0GZpE
Mark Freedman

Câu trả lời:


6

Nếu thử thách dành cho bạn là thiết kế và không triển khai, có thể bạn cần một yếu tố thúc đẩy khác:

Nếu đó là một dự án thú cưng (không phải cho công việc), tôi thực sự mong muốn được thấy nó trở nên sống động, vì vậy thiết kế nó không đủ cho tôi. Khi bạn đưa ra các dự án thú cưng của riêng bạn, mục tiêu là gì? Có phải cho một cái gì đó bạn cần sử dụng? Nếu vậy, bạn có thể sử dụng đó như là động lực để thực hiện nó. Để xem nó hoạt động. Để cung cấp các chức năng bạn đang tìm kiếm để thoát khỏi nó.

Bạn có kế hoạch làm cho nó có sẵn cho người khác? Một yếu tố thúc đẩy có thể được nhìn thấy họ được hưởng lợi từ sản phẩm cuối cùng. Họ sẽ không lấy tiện ích ra khỏi nó nếu nó chỉ ở chế độ thiết kế. Và nếu bạn có kế hoạch tiếp thị nó, hãy sử dụng thực tế là không ai sẽ trả tiền cho dự án thú cưng của bạn trong khi nó bị kẹt trong chế độ thiết kế, như một yếu tố thúc đẩy.

Khi tôi làm việc theo cách riêng của mình, tôi có một cách tiếp cận lặp đi lặp lại nhiều hơn tôi có thể làm việc - tôi không lo lắng về tất cả các chi tiết trước khi tạo ra một cái gì đó. Có thể mất nhiều thời gian hơn, nhưng 1) vì nó chỉ dành cho tôi (hoặc cho một người thậm chí không biết nó tồn tại dưới bất kỳ hình thức nào), sau đó tôi có thể linh hoạt thử nghiệm và dành thời gian cho mình. 2) Tôi dành một loạt các chu kỳ tái cấu trúc và học cách làm tốt hơn. Trên xu của riêng tôi, nói theo nghĩa bóng.

Cuối cùng, mặc dù, không phải là sự hài lòng thực sự khi nhìn thấy một cái gì đó sống dậy từ không khí mỏng? Đó là những gì nó làm cho tôi. Nếu điều đó không làm điều đó cho bạn, trừ khi động lực của bạn là sản phẩm cuối cùng, thì tôi không chắc tôi hiểu lý do tại sao bạn muốn làm việc trong dự án thú cưng. Nếu thiết kế là thứ làm bạn phấn khích và bạn làm điều đó trong công việc, dường như bạn đã nhận được sự hài lòng mà bạn đang tìm kiếm.


6

Bạn cần tạo mẫu nhanh, ở nhà.

Khi bạn áp dụng cùng một mức độ nghiêm ngặt chuyên nghiệp vào một dự án cá nhân, nó sẽ dễ dẫn đến tình trạng quá kỹ thuật.

Hoàn toàn có thể chấp nhận được khi đặt tiêu chuẩn cao cho dự án cá nhân, nhưng bạn phải hiểu rằng bạn có thể không có đủ tài nguyên (giờ mã hóa, ngoài 8 giờ làm việc hàng ngày của bạn) để đạt được tiến độ cho dự án.

Mục tiêu thiết yếu nhất trong dự án thú cưng của bạn là gì? Để chứng minh sự hữu ích của một trong những hiểu biết của bạn? Nếu đây là trường hợp, sau đó cắt giảm dự án cho đến khi nó trở thành một dự án bằng chứng khái niệm . Sau đó, sử dụng tạo mẫu nhanh để bạn có thể thực hiện được nhiều hơn với thời gian mã hóa ít hơn.


5

Tôi đoán đó chỉ là tôi, nhưng tôi có vấn đề ngược lại. Tôi thường gặp khó khăn khi nghĩ về tất cả các chi tiết trước khi tôi bắt đầu viết mã và thực sự gặp phải các vấn đề liên quan. Thực tế, tôi thường chỉ có một thiết kế mơ hồ trong đầu khi tôi bắt đầu viết mã gì đó. Thử thách lớn của tôi là khiến bản thân nghĩ ra tất cả các chi tiết và có một thiết kế trước.


5
Tại sao điều này đã được bình chọn rất cao, nó không thực sự trả lời câu hỏi chính "Làm thế nào để bạn thuyết phục bản thân đi vào và viết mã kỳ dị?"?
dan_waterworth

1
@dan_waterworth: Tôi nghĩ bởi vì rất nhiều người có thể liên quan đến câu trả lời. Khi tôi còn là một học sinh cấp ba, tôi cũng đã làm điều tương tự, đầu tiên nhảy vào lập trình mà không có kế hoạch trước. Kể từ đó tôi đã học (một cách khó khăn) tốt hơn là thực sự ngồi xuống và suy nghĩ trước khi đi đến giai đoạn đánh máy.

2

Tôi chắc chắn có thể liên quan đến điều đó. Tôi thích tham gia thử thách những điều tôi chưa gặp phải, nhưng tôi có một thời gian khó khăn để bắt đầu làm bất cứ điều gì mà tôi đã giải quyết. Điều lớn nhất tôi làm chỉ là ép bản thân ngồi xuống với mục tiêu hoàn thành X và hoạt động. Thông thường một khi tôi đi, cuối cùng tôi sẽ vui vẻ và làm được nhiều việc hơn là tôi đã đặt ra ngay từ đầu, nhưng nếu tôi không ép buộc mục tiêu, tôi sẽ chỉ mất hàng giờ.

Tôi cũng với bạn rằng điều này xảy ra ở nhà nhiều hơn ở công việc phụ hơn là ở văn phòng. Tôi không biết nếu nó mất tập trung hơn, bị đốt cháy từ công việc hay ...


2

Tôi chắc chắn hiểu sự thất vọng của bạn khi tôi đã trải qua điều đó trước đây.

Mặc dù sợ một số ngọn lửa từ cộng đồng vì tôi biết đây không phải là một cách tiếp cận tuyệt vời, tôi sẽ chia sẻ cách tiếp cận của tôi cho các dự án phụ với bạn. Xin lưu ý rằng phương pháp này hiệu quả với tôi và tôi sử dụng nó cho các dự án trung / dài hạn, tôi sẽ không làm điều đó cho một việc nhỏ (vì tôi thường có động lực để hoàn thành nó trong một lần).

Lấy toàn bộ dự án và chia nó thành 'các gói', mỗi gói bao gồm các phần sẽ tương tác với nhau thường xuyên. Sau đó chia mỗi gói thành các phần nhỏ (nghĩ tối đa vài giờ) mà bạn có thể thiết kế và viết mã.

Lý tưởng nhất là bạn có thể hoàn thành từng phần trong bất kỳ thời gian nào bạn phân bổ cho dự án phụ của bạn trong một ngày nhưng điều đó không bắt buộc (tùy thuộc vào từng người).

Cá nhân, tôi không thiết lập cho mình một khung thời gian ước tính cho mỗi tác phẩm vì tôi chỉ bị thất vọng và mất điều kiện một khi tôi thất bại trong ước tính đó, do đó, tôi không khuyến nghị điều đó. Hãy dành thời gian của bạn nhưng cũng không mất quá nhiều thời gian.

Bây giờ mỗi phần nhỏ có tất cả các giai đoạn trong quy trình phát triển bình thường của bạn, thiết kế, thử nghiệm, thực hiện và bất cứ điều gì khác bạn cần làm. Ý tưởng là để cung cấp cho mỗi mảnh một khởi đầu tốt nhưng chưa phải là một kết thúc hoàn thiện thổi, chưa.

Điều này giúp tôi duy trì động lực vì tôi biết rằng sau một vài giờ công việc nhàm chán mã hóa thực tế tôi sẽ có nhiều thiết kế hơn để làm (ngon). Đừng để bản thân đi lạc khỏi mục tiêu của bạn, hãy tiếp tục thực hiện nhiệm vụ khủng khiếp đó và nó sẽ sớm kết thúc và hoàn thành.

Sau khi bạn đã trải qua tất cả các mảnh, nhìn vào gói. Xem cách nó hoạt động, những gì nó làm, xem lại toàn bộ gói. Tôi chắc chắn sẽ có những thay đổi và điều chỉnh, hãy thực hiện chúng ngay bây giờ. Giữ thông tin quan trọng nhất trong tâm trí của bạn vì bạn sẽ cần nó khi làm việc trên tất cả các gói khác. Giữ ghi chú quá, họ giúp rất nhiều.

Đi qua từng gói và tiếp tục ghi nhớ tất cả những gói khác bạn đã làm trước đây, mã mới mà bạn đang viết sẽ tương tác với những thứ bạn đã viết cách đây một tuần như thế nào? Đừng ngại tìm kiếm những thứ bạn đã viết và có thể quên.

Cuối cùng, khi bạn hết gói, tôi thường để nó đi trong vài ngày, cho mình nghỉ ngơi và tập trung vào thứ khác.

Thông thường tôi rất muốn quay lại và bắt đầu đan xen các gói và thực hiện một số thử nghiệm vui nhộn, không có nhiều mã để viết và mục tiêu đã gần kề, đó là động lực đủ cho tôi khi đó.

Hy vọng điều này sẽ giúp bạn với những nỗ lực của bạn.


2

Tôi luôn thấy rằng các giả định ban đầu không giữ hoàn toàn và ít nhiều thiết kế ban đầu phải được thay đổi dựa trên kinh nghiệm thu thập được trong khi thực hiện thực tế.

Nếu bạn coi thiết kế của mình là hoàn toàn không thể sai lầm và hoàn hảo sau khi vẽ một số hộp, nhưng trước khi thực sự dùng thử, tôi sẽ coi bạn là một ứng cử viên hoàn hảo cho một số triển khai dự án.

Vận chuyển là một tính năng. Nếu bạn không đi cả quãng đường, bạn chỉ là một kiến ​​trúc sư.


1
+1 Nói chung là tốt, một kiến ​​trúc sư quan tâm có vị trí của họ, "chỉ là một kiến ​​trúc sư" nghe có vẻ hơi hạ thấp, tất nhiên là không chủ ý.
Orble

@ Tổ chức: Thorbjørn đã kiềm chế ( toàn bộ nhiều hơn nữa ) phi hành gia kiến ​​trúc.
rwong

@ Tổ chức, cũng có thể được. Làm thế nào bạn có thể diễn đạt thực tế rằng bạn không thể làm cho mình những gì bạn nói với người khác để làm gì?

1

Tôi nghĩ vấn đề là trong mục tiêu không chính xác. Có vẻ như bạn đặt mục tiêu "hệ thống thiết kế". Và sau đó bạn làm điều đó tốt, và mục tiêu đã đạt được. Vì vậy, một đề xuất là đặt mục tiêu khác là "triển khai hệ thống", nhưng sau đó nó liên quan nhiều hơn đến động lực và cách bạn thực hiện nó.

Có một cách khác cũng hiệu quả với tôi: đặt mục tiêu ban đầu là "phân phối hệ thống cho người dùng cụ thể" thay vì "hệ thống thiết kế" hoặc "tạo hệ thống". Bằng cách này, bạn sẽ không hài lòng, cho đến khi người dùng nhận được thứ gì đó có giá trị. Và bạn làm điều đó tốt ngay từ đầu (bao gồm cả thử nghiệm và những thứ ưa thích hiện đại khác).


1

Ngoài việc thực sự là một vấn đề của động lực, tôi nghĩ rằng một phần của giải pháp có thể được tìm thấy trong việc kết hợp thiết kế và quy trình mã hóa. Đó là cách tôi làm điều đó chủ yếu. Về cơ bản, nó đi xuống để thực hiện những điều cơ bản trong thiết kế của bạn khi bạn nghĩ về điều đó, và sau đó chuyển sang bước tiếp theo.

Ví dụ: Nếu tôi đã thiết kế các lớp cơ bản của mình, tôi viết chúng ra và chạy một số bài kiểm tra về nó. Sau đó, tôi đã thiết kế một cơ sở dữ liệu cơ bản, tôi thiết lập nó và kiểm tra nó. Tiếp theo tôi có các phương thức và chức năng tôi cần để lấy mọi thứ vào / ra khỏi cơ sở dữ liệu, tôi tiếp tục. Việc kiểm tra được thực hiện dễ dàng hơn vì tôi đã sẵn sàng các lớp cơ bản. Và cuối cùng khi tôi đến để thiết kế giao diện người dùng, tôi đã có sẵn một bộ mã sẵn sàng để chơi xung quanh.

Bây giờ điều này giả sử bạn cũng thiết kế trong các khối được liên kết thông qua các giao diện. Tôi không biết từ đắt tiền cho nó, vì tôi không phải là một lập trình viên bởi giáo dục, nhưng bạn biết ý tôi là gì.

Hi vọng điêu nay co ich.


1

Sau đó, chỉ cần viết ra các ý tưởng thiết kế của bạn, xuất bản nó (trong một blog), cố gắng hết sức để giải thích vấn đề và giải pháp bạn đưa ra cho người khác.

Một mẹo: viết lời giải thích của bạn về thiết kế như một chương trình biết chữ! :) Sau đó, bạn chiếm lĩnh phần thú vị (ý tưởng thiết kế của bạn), nhưng thực sự biện minh cho họ bằng mã thực mà bạn cung cấp cùng với.

Và đăng chương trình biết chữ như một bài trình bày ý tưởng mới của bạn cho người khác!


1

Điều này sẽ nghe có vẻ nghiêm trọng, nhưng chỉ cần bắt đầu. Bạn có thể sẽ cần phải mở môi trường phát triển của bạn, vì vậy hãy làm điều đó. Bạn có thể sẽ cần xác định từng lớp trong thiết kế của bạn và viết ra chữ ký phương thức của chúng, vì vậy hãy làm điều đó. Bạn sẽ cần bắt đầu thực hiện các phương pháp quan trọng nhất, vì vậy hãy thực hiện nó.

Thông thường vào khoảng thời gian này, tôi đã quên rằng tôi gặp khó khăn khi bắt đầu và tôi đang ở trong khu vực.

Hoạt động khoảng 80% thời gian. Đối với phần còn lại, có Tetris.


0

Đó chắc chắn không chỉ là bạn! Tôi đang thực sự đặt một dự án ngay bây giờ.

Không ai có thể thúc đẩy bạn mà là chính bạn.

Tạo một dòng thời gian thực tế và thử thách bản thân để hoàn thành từng phần đúng thời gian. Bạn không có gì để hiển thị cho các dự án nếu chúng không bao giờ vượt qua giai đoạn thiết kế.


0

Đánh giá bằng câu hỏi của bạn, vấn đề của bạn là dường như bạn đang phát minh lại bánh xe. Nếu bạn đã làm tất cả những điều này rồi, tại sao bạn cần phải làm lại? Không có khuôn khổ để làm điều đó cho bạn? Nếu không (mặc dù điều này khá không thể), tại sao không viết một?

Một nhiệm vụ quan trọng trong lập trình không phảilàm lại những thứ nhàm chán , mà là thực hiện nó một lần, thực hiện đúng cách và sau đó sử dụng lại nó. Hoặc thậm chí tốt hơn: tìm một người đã làm điều đó một lần và đúng cách.


0

Tôi hoàn toàn hiểu bạn đến từ đâu. Đó là vấn đề khiến bạn quan tâm và một khi bạn tìm ra nó, việc thực hiện chỉ là công việc.

Tại sao bạn không chỉ là kiến ​​trúc sư cho giải pháp và để người khác thực hiện?


-1

Những việc tôi làm:

  • Đặt một bộ đếm thời gian lớn trước mặt tôi (có thể ở chế độ đảo ngược, trong khối 1 giờ)
  • Buộc tôi phải thức cho đến khi đạt được mục tiêu nào đó (đôi khi với một cốc bia, tôi đã thấy rằng một chút rượu giúp)

Không phải lúc nào cũng làm việc

Tái bút Tôi làm việc tại nhà

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.