Được bỏ lỡ thời hạn phổ biến trong công việc lập trình? [đóng cửa]


18

Đó là công việc tự do của tôi tại oDesk. Tôi đã thực hiện một số công việc sớm hơn trong thời gian nhất định, nhưng là lần đầu tiên tôi bỏ lỡ thời hạn. Đó là một công việc rất dài và tôi đã cố gắng hết sức nhưng tôi vẫn bỏ lỡ thời hạn. Bây giờ, tôi rất sợ. Bởi vì đó là lỗi của tôi mà tôi đã bỏ lỡ thời hạn.

Câu hỏi của tôi là: Đây có phải là một mối quan tâm lớn hoặc bị bỏ lỡ thời hạn phổ biến trong các công việc lập trình, vì vậy tôi không nên lo lắng quá nhiều về điều này?


1
Hoàn toàn phụ thuộc vào môi trường. Ví dụ, công việc cuối cùng của tôi là tại một cơ quan kỹ thuật số tính phí khách hàng dựa trên ước tính. Nếu bạn bỏ lỡ thời hạn ở đó, doanh nghiệp bị mất tiền. Công việc hiện tại của tôi rất năng động đến nỗi không có thời hạn thực sự nào cả .. nếu tôi cần sự chú ý ở nơi khác, tôi sẽ dành thời gian thích hợp để dành cho nó. Có lẽ bao gồm điều này trong câu hỏi của bạn sẽ giúp với câu trả lời.
Simon Whitehead


3
thời hạn bị bỏ lỡ là phổ biến trong tất cả các công việc
Steven A. Lowe

2
Tôi thực sự hy vọng bạn đã liên lạc với khách hàng về thời hạn bị bỏ lỡ. Thiếu thời hạn xảy ra, nhưng không nên bất ngờ khi nó xảy ra - bạn sẽ có thể thấy nó đến và truyền đạt về nó. Nó thường làm cho nó dễ dàng hơn là chỉ đi "Không, chưa sẵn sàng."
Bobson

6
Làm nhanh, làm rẻ, làm tốt: chọn hai.
Phản ứng

Câu trả lời:


45

Đúng. Thời hạn bỏ lỡ là phổ biến trong phát triển phần mềm.

Nhiều người làm việc tự do đáp ứng thời hạn bằng cách phát sinh nợ kỹ thuật hoặc giấu bụi bẩn dưới tấm thảm.

Diễn giải Tháng của Người đàn ông huyền thoại của Frederick Brooks :

Frederick Brooks, tác giả của Tháng huyền thoại

  • Thời hạn thường bị bỏ lỡ vì các nhà lãnh đạo dự án tiếp tục ước tính các nhiệm vụ phần mềm giống như cách họ thực hiện các nhiệm vụ kỹ thuật dân dụng, đó là một cách tiếp cận thiếu sót vì phần mềm là một ngành công nghiệp thủ công mới, không có quy tắc rõ ràng. Điều này đúng đến mức bạn không thể thu hồi "giấy phép" của lập trình viên để mã hóa lỗi, cũng như bạn không thể kiện ai đó để lập trình mà không có tiêu đề.

  • Phát triển phần mềm có sự phức tạp vốn có mà các ngành khác thiếu. Một chương trình lớn có thể có nhiều thành phần hơn xe hơi và những thành phần này có thể tương tác theo nhiều cách khác nhau.

  • Phần mềm khó hình dung, vì vậy các loại sơ đồ khác nhau được sử dụng để xem các khía cạnh khác nhau của dự án và các khía cạnh này có thể không trực giao. Mặt khác, kỹ thuật dân dụng, có các bản thiết kế cho phép bạn nhìn thấy hệ thống ống nước, hệ thống dây điện, vv tất cả trong cùng một biểu đồ (hoặc các lớp) theo cách trực giao.

  • Nó không phổ biến, sau khi một cây cầu hoặc tòa nhà được xây dựng một nửa, để khách hàng thay đổi hoàn toàn phạm vi của dự án. Đây thường là trường hợp trong các dự án phần mềm.

  • Tình trạng của nghệ thuật phát triển phần mềm chưa đạt đến mức các dự án phần mềm có thể lặp lại và gần như không có rủi ro. Ngay cả các công ty phần mềm lớn nhất như Microsoft cũng có thể bỏ lỡ thời hạn theo tháng hoặc năm.

  • Hầu hết các phần mềm hơi không là gì ngoài các dự án phần mềm đã bị cắt vì những vấn đề này.

Tóm lại là:

Ước tính xấu và đánh giá thấp sự phức tạp, do tính chất thủ công của quy trình phát triển phần mềm, có nghĩa là nó vẫn là một môn học chưa trưởng thành.


11
+ Câu trả lời tốt, nhưng đã có một số tiếp xúc với kỹ thuật cơ khí và dân dụng, thật thú vị khi các lập trình viên so sánh trực tiếp với việc xây dựng cây cầu và những thứ khác, khi họ không biết những thứ đó được xây dựng như thế nào.
Mike Dunlavey

3
Tôi sẽ đăng ký ý tưởng rằng phần mềm là kế hoạch (về mặt kế hoạch trong kỹ thuật - mô tả từng chi tiết của dự án). Trong trường hợp kỹ thuật, thời gian xây dựng vật lý chiếm ưu thế rất lớn trong kế hoạch không có vai trò gì. Tuy nhiên, vì phần mềm chỉ bao gồm kế hoạch ... "Trạng thái phát triển phần mềm chưa đạt đến mức khi các dự án phần mềm có thể lặp lại và gần như không có rủi ro" - trong những trường hợp đó tại sao lại làm dự án? Nếu một cái gì đó lặp đi lặp lại và có thể được tự động thì nó không cần phải được thực hiện nhiều lần nhưng có thể được thực hiện một lần và sao chép.
Maciej Piechotka

2
@ user61852: Bạn hiểu lầm tôi. 'Kế hoạch' cho kỹ thuật là 'nguồn' cho khoa học máy tính - tức là mô tả chi tiết về mọi thành phần - nhưng một khi chúng ta có nó, chúng ta có thể xây dựng nó (nhập makehoặc bất cứ thứ gì). 'Kế hoạch' trong khoa học máy tính sẽ là 'kế hoạch' của kế hoạch 'trong việc tham gia. Sự khác biệt là maketrong khoa học máy tính mất ít nhất vài giờ trong khi viết mã nguồn (bao gồm kiểm tra và tích hợp) mất nhiều tháng trong khi trong kỹ thuật, việc lập kế hoạch có thể mất nhiều tháng (bao gồm cả tính toán cấu trúc) trong khi việc xây dựng mất nhiều năm. về sau
Maciej Piechotka

1
@ user61852: Liên quan đến tính lặp lại - một điều mà máy tính rất giỏi là tự động hóa. Giả sử bạn cần xây dựng một blog đơn giản - tại thời điểm bạn có 'ước tính' chính xác, bạn sẽ có một wordpress (hoặc bất kỳ hệ thống blog nào khác) để bạn không cần phải thực hiện bất kỳ điều gì (trong trường hợp cầu nối bạn vẫn có môi trường khác nhau nên bạn cần thích nghi cẩn thận hơn vì đá có thể khác hoặc có thể có môi trường sống của chim hoặc nó có thể phá hủy tầm nhìn) - các lập trình viên có thể có trách nhiệm hơn trong việc tạo ra các công cụ (mô hình cầu tiêu chuẩn).
Maciej Piechotka

2
Tiền thưởng cho trích dẫn Tháng người đàn ông huyền thoại; Frederick Brooks giữ vững sau tất cả những năm này vì ông tập trung vào những người không phải là công nghệ.
Michael Storesin

3

Hạn chót bỏ lỡ không nên trở thành thông lệ nếu bạn muốn tiếp tục kiếm việc làm.

Như đã nói, bạn thường muốn để lại cho mình một số phòng "ngọ nguậy" trong các ước tính của bạn trong trường hợp có chuyện xảy ra (và nó luôn luôn như vậy). Bạn không cần phải tiết lộ rằng bạn đã thêm thời gian, chỉ cần đừng làm cho nó không hợp lý. Có thể từ 5 - 10% tổng thời gian? Cách duy nhất bạn sẽ tìm ra là làm điều đó một vài lần.

Để có được ước tính thực sự tốt, bạn phải biết mất bao lâu để mã hóa một loại tiện ích nhất định ... ví dụ: giả sử bạn phải tạo tiện ích cuộn vô hạn cho máy khách X. Nếu bạn mất một tuần để triển khai nó vào sản xuất mà không có lỗi, bạn có thể sử dụng nó làm cơ sở cho các ước tính cuộn vô hạn của mình.


2
Tôi luôn cho 20% phòng khi làm dự toán. 5-10% là quá ít. Tôi đoán nó phụ thuộc vào mức độ bạn bị phân tâm. Nhà phát triển solo có thể không bị phân tâm chút nào
BЈовић

Tôi là một nhà phát triển solo và tôi thường lấy 10% cho các dự án của mình.
Konsole

Hmmm ... xem Hofstadter's_law
Philip

1
So với 5-20%, tôi nghĩ tỷ lệ ký quỹ 100% là tốt hơn. Nghiêm túc. Nó cho phép bạn khám phá các lựa chọn của bạn tốt hơn nhiều. Và trả lời nhiều câu hỏi hơn về Stack Exchange.
Acumenus

Ồ vâng, đó là lỗi của nhà phát triển khi người quản lý dự án kỳ cựu 15 năm gây áp lực cho một kỹ sư phần mềm tân binh 1,5 năm để đưa ra ước tính sau đó điều chỉnh nó thậm chí còn hung hăng hơn và hành động như nhà phát triển bị trì hoãn khi dự án bị hủy bỏ . Tôi chưa bao giờ làm việc cho một người quản lý hoặc PM có thể viết phần mềm và bạn đang nói với tôi rằng thời hạn bị bỏ lỡ không nên trở thành thông lệ nếu bạn muốn tiếp tục nhận việc? Hạn chót bị bỏ lỡ là đặc hữu bởi vì hầu hết các PM không thực sự bất tài trong công việc của họ. Người quản lý tốt nhất của tôi vẫn không phải là một kỹ sư phần mềm, chỉ biết giới hạn của anh ta.
giảm

3

Thiếu thời hạn không phải là hiếm trong phát triển phần mềm. Hầu như không thể ước tính chính xác một dự án phần mềm sẽ mất bao lâu.

Sự chuyên nghiệp được thể hiện trong cách bạn đối phó với nó. Khi bạn biết bạn sẽ bỏ lỡ thời hạn, hãy thông báo cho khách hàng của bạn càng sớm càng tốt về nó để họ có thể lên kế hoạch phù hợp.


2

Nó khá phổ biến, nhưng bạn có thể cải thiện nó tốt hơn. Bạn có thể muốn xem xét việc ước tính bằng cách sử dụng một cái gì đó trừu tượng như các điểm câu chuyện và theo dõi vận tốc của bạn để tính toán các ước tính thực tế của bạn. Những khái niệm này thường được liên kết với scrum, nhưng có thể được sử dụng ngay cả khi bạn không làm scrum.

Điều đáng kinh ngạc về vận tốc là nó bao gồm tất cả những thứ vô hình như sự gián đoạn và sự phức tạp bất ngờ mà các nhà phát triển gặp khó khăn khi tính toán trong các ước tính của họ. Tất cả các xác suất trung bình ra theo thời gian. Tính trung bình trong hơn 10 tuần, ước tính vận tốc của chúng tôi đã chính xác trong khoảng 5%. Tuy nhiên, khi chúng tôi ước tính các nhiệm vụ tương tự trong vài giờ, cùng một nhóm chính xác luôn đánh giá thấp 30-50%.


1

Lý thuyết của tôi (chưa được chứng minh) là con người đã tiến hóa để đánh giá thấp các công việc phức tạp bằng hai hoặc ba đến một. Bất cứ khi nào Quốc hội yêu cầu NASA một cái gì đó như: chi phí để xây dựng tàu con thoi hoặc du hành lên mặt trăng họ sẽ quay lại trong vòng một tuần với một con số. Sau khi họ hết tất cả các chi phí dự kiến, họ phát hiện ra nó sẽ tốn gấp ba lần.

Chúng tôi đã có một trò đùa vào những năm 1970: lấy bất kỳ ước tính lập trình viên nào, nhân đôi số lượng, sau đó chuyển nó sang đơn vị thời gian tiếp theo. Do đó, nếu một lập trình viên nói rằng nó có thể được thực hiện trong hai tuần, anh ta sẽ hoàn thành nó trong bốn tháng.

Nếu bất cứ ai đã sửa sang lại một nhà bếp, họ thường nghĩ rằng 'Tôi sẽ hoàn thành việc này trong hai tuần'. Họ hoàn thành nó khoảng sáu tuần sau đó.


1
NASA phải làm gì với câu hỏi của tôi?

1
Hơn nữa, sự tiến hóa của loài người có liên quan gì đến câu hỏi của bạn? NASA là một ví dụ được ghi chép rõ ràng trong hồ sơ công khai của những người được đào tạo và có kinh nghiệm đánh giá thấp các dự án lớn. Nói tóm lại, trải nghiệm của bạn là 'tự nhiên'.
Meredith Nghèo

Mặc dù tôi đồng ý rằng hầu hết các ước tính của mọi người đều giảm ít nhất gấp đôi, nhưng đơn vị thời gian tiếp theo ... hmmmm. Dù sao, NASA rất giỏi trong việc ước tính các nhiệm vụ mà họ đã biết cách thực hiện. Vấn đề là mọi người không giỏi trong việc ước tính các nhiệm vụ khi họ không biết những gì họ không biết. Do NASA làm rất nhiều công việc tiên phong thực sự, không có gì lạ khi người ta không biết nhiều về những gì họ đang làm cho đến khi họ bắt đầu thực hiện nó. Vì vậy, lý do cho sự đánh giá thấp ban đầu. Ngoài ra, một số người có xu hướng lạc quan và những người khác bi quan. Không chắc chắn tiến hóa có liên quan.
Dunk
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.