Haruskah Anda menagih klien selama berjam-jam di jalur yang salah? [Tutup]

17

Saya menerima tantangan CSS kecil untuk diselesaikan untuk klien dan saya akan dibayar dengan tarif per jam. Saya akhirnya menyelesaikannya, butuh 5 jam tapi saya menghabiskan sekitar 25% dari waktu di jalur yang salah, mencoba solusi CSS3 yang hanya bekerja di browser terbaru dan akhirnya menemukan bahwa tidak ada fallback yang dimungkinkan melalui JS (seperti yang saya pikir sebelumnya). Haruskah saya menagih klien yang 25%?

Lebih detail: Saya tidak memberikan perkiraan, saya menyukai tantangan itu sendiri, jadi saya mulai mengerjakannya sebelum memberikan perkiraan (tapi saya telah bekerja dengannya sebelumnya, jadi saya tahu dia bukan salah satu dari orang-orang yang memiliki harapan yang tidak realistis. ). Paling buruk saya akan menghabiskan 5 jam tidak dibayar untuk tantangan CSS yang menarik. Dan saya akan memberikan perkiraan yang seadil mungkin bagi kita berdua, karena saya sudah melakukan pekerjaan itu. :)

Sunting: Terima kasih semua, saya berharap saya dapat menerima lebih dari satu jawaban! Saya akhirnya tidak menagihnya selama berjam-jam tambahan (saya menagihnya selama 3 setengah), tetapi saya menyebutkannya, sehingga dia tahu saya bekerja lebih banyak daripada membayarnya. Mungkin itu sebabnya dia langsung menerima "taksiran" (yang dalam kasus itu bukan taksiran, karenanya kutip).

Lea Verou
sumber
Perkiraan awal apa yang Anda berikan kepada klien Anda?
JK
2
Apakah Anda berharap lebih banyak pekerjaan dari klien? Hubungan seperti apa yang ingin Anda jalin?
Steve Jackson
@ Jonathan: Lihat hasil edit saya
Lea Verou
1
Kemungkinan rangkap: programmers.stackexchange.com/questions/38415/…
Steve Jackson
1
Ini bukan duplikat, saya membaca utas itu sebelum saya memposting pertanyaan saya. Dia berbicara tentang mempelajari hal-hal baru, bukan mengerjakan solusi yang salah.
Lea Verou

Jawaban:

24

Saya sering mengalami situasi seperti itu ketika saya menghabiskan beberapa jam melakukan sesuatu, kemudian memperhatikan bahwa ada solusi satu-line yang lebih mudah, atau bahwa ide pertama saya terlalu buruk, dll.

Secara umum, dalam kasus-kasus itu, saya membuat perbedaan antara tiga situasi:

  • Solusi yang baru ditemukan tidak jelas dan / atau pengembang rata-rata mungkin akan berada di jalur yang salah juga dan / atau jalur yang salah adalah prasyarat untuk menemukan solusi akhir. Dalam hal ini, saya menagih pelanggan untuk waktu yang dihabiskan di jalur yang salah.

  • Solusi yang baru ditemukan tidak begitu jelas, tetapi mungkin banyak pengembang rata-rata akan langsung seperti ini. Dengan kata lain, jika saya berpikir lebih baik sebelum mulai menulis kode, saya mungkin dapat menemukan solusi akhir secara langsung, atau mungkin tidak. Dalam hal ini, saya menagih pelanggan, tetapi mengurangi harga hingga setengah atau persentase yang tampaknya paling memadai.

  • Jelas, saya terlalu bodoh, terlalu mengantuk, atau tidak berpikir sama sekali sebelum saya mulai menulis kode, karena solusi terakhir sangat mudah ditemukan. Dalam hal ini, bahkan jika saya menghabiskan dua hari di jalur yang salah, itu adalah tanggung jawab saya sendiri dan pelanggan tidak perlu membayar untuk itu.

Arseni Mourzenko
sumber
Saya tidak berpikir pengembang "rata-rata" akan menyelesaikannya sama sekali. Tetapi untuk orang-orang dengan pengalaman CSS lebih dari rata-rata, itu mungkin yang kedua.
Lea Verou
1
@Lea Verou: ketika saya berbicara tentang "pengembang rata-rata", ini sangat subyektif. Ini juga tergantung pada level Anda dan apa yang pelanggan pikirkan tentang level Anda. Jika pelanggan Anda tahu Anda yang terbaik dari yang terbaik dan membayar Anda ribuan dolar per hari, "rata-rata" subyektif akan jauh lebih tinggi daripada jika pelanggan Anda berpikir Anda adalah seorang monyet kode.
Arseni Mourzenko
Yah, saya berbicara di konferensi besar tentang CSS, dan dia tahu itu :) Tapi saya jelas tidak menghasilkan ribuan dolar per hari: p (apakah ada pengembang web yang melakukannya?)
Lea Verou
4
Saya juga akan memperhitungkan berapa nilai Anda. Jika tingkat Anda sangat tinggi maka Anda diharapkan lebih baik daripada rata-rata sehingga jelas dapat berarti lebih banyak hal. Jika nilai Anda sangat rendah maka Anda TIDAK diharapkan berada di atas rata-rata, hal-hal yang kurang jelas.
Martin York
untuk menyalin-menempel komentar yang saya buat di tempat lain: waktu yang dihabiskan untuk bekerja / berpikir / meneliti / mengoptimalkan masalah adalah waktu mengerjakan masalah. TAPI bagaimana dengan seseorang yang menghabiskan waktu untuk yang seharusnya tahu (sesuai tugas yang disewa) dan / atau sudah diselesaikan (dan apa yang diminta). Dengan kata lain tidak ada alasan untuk kurangnya pengetahuan atau hanya pekerjaan profesional yang buruk. Perhatikan , bahwa seorang profesional sejati dapat (dan seharusnya) memang membuat kasus yang meyakinkan untuk berapa banyak waktu yang dihabiskan dan mengapa
Nikos M.
33

Saya tidak berpikir Anda berada di jalur yang salah. Anda memberi kode solusi, menguji solusi (pujian) dan menemukan itu tidak berfungsi seperti yang Anda harapkan. Anda men-debug solusi dan kemudian memperbaiki Anda dengan pergi ke arah yang berbeda.

IMHO, itu bukan jalur yang salah. Itu pengembangan perangkat lunak biasa.

Jika saya jadi Anda, saya akan menagih selama 4 jam penuh.

Tyanna
sumber
1
Saya suka cara Anda berpikir: p :)
Lea Verou
2
Saya setuju, pada dasarnya, penelitian / desain adalah area di mana kesalahan yang salah pun penting. Menunjukkan bahwa sesuatu tidak berfungsi (dan meninggalkan jejak) membuat pemeliharaan lebih mudah karena orang berikutnya tidak akan mencobanya.
Matthieu M.
1
Begitulah cara semua profesi lain lakukan. Hanya pemrogram yang "mulia" (atau, luruskan, naif) untuk berpikir tentang tidak menagih selama berjam-jam bekerja pada masalah klien.
quant_dev
8

Sebagian besar program yang kami tulis, kami menulis karena solusinya tidak segera, mudah tersedia. Hampir semua yang kami lakukan melibatkan mempelajari sesuatu yang baru. Klien tidak membayar Anda untuk produk tersebut. Dia membayar Anda untuk belajar bagaimana membangun produk dan memberi Anda hasilnya (dan jika dia menyebutnya "tantangan" sendiri, dia mengharapkan Anda untuk belajar sesuatu). Lihat "Waltzing with Bears" oleh Tom de Marco dan Timothy Lister - "Jika sebuah proyek tidak memiliki risiko, jangan lakukan itu".

Jika Anda ingin membayar kembali klien dengan benar, kirimkan kepadanya solusi Anda bersama dengan detail solusi yang tidak berfungsi, sehingga ia dapat meneruskannya ke staf lain yang ia sewa dan membantu mereka untuk mengambil waktu lebih sedikit juga.

Terserah Anda untuk bernegosiasi jika dia pikir dia membayar terlalu banyak. Tentu saja, saya berharap dia membayar untuk setiap pembelajaran yang tidak mudah digunakan di tempat lain.

Lunivore
sumber
Dia sendiri tidak menyebutnya sebagai tantangan, dia tidak tahu itu adalah tantangan. (walaupun ia mungkin merasa sulit untuk memutuskan untuk melakukan outsourcing)
Lea Verou
Akankah para downvoter mengomentari mengapa ini sedang downvoting?
Lunivore
5

Kadang-kadang menyelesaikan masalah melibatkan menghilangkan solusi suboptimal dari serangkaian opsi yang masuk akal. Proses eliminasi adalah salah satu alat pemecahan masalah Anda; klien membayar Anda untuk sebuah solusi, dan seharusnya mengharapkan Anda untuk menggunakan alat apa pun yang Anda inginkan.

Ini akan menjadi klien yang tidak masuk akal yang mengharapkan Anda untuk secara instan membayangkan solusi terbaik - berjalan langsung dari pengarahan proyek ke keyboard Anda, di mana Anda memancarkan aliran kode backspace yang cepat dan optimal dan bebas kode. Bukan berarti tidak ada klien seperti itu. Saya sudah memiliki pelanggan yang menelepon di tengah-tengah proyek untuk memverifikasi bahwa dia sebenarnya hanya membayar untuk "pemrograman, bukan debugging". Dan tentu saja ada klien (atau bos) untuk siapa pemrograman adalah tindakan mengetik fisik.

Jalan buntu Anda bisa mewakili uang yang dihabiskan klien terbaik: pengembang lain mungkin tidak selengkap Anda, dan memberikan solusi yang lebih murah tetapi kurang kompatibel yang akan menggigit kembali di masa depan.

Ken Redler
sumber
2
Benci untuk bertemu dengan orang-orang ini yang memiliki pola pikir "pemrograman, bukan debugging". Seolah-olah seorang penulis dapat mulai menulis sebuah cerita tanpa membaca ulang dan membuat perubahan. Itu mungkin akan menjadi cerita yang buruk jika ditulis seperti itu :-).
Htbaa
5

pertanyaan-pertanyaan ini membuatku gila ...

jika mekanik atau pengacara menghabiskan waktu mengerjakan kasus / masalah Anda, Anda bertaruh @ $$ Anda akan dikenakan biaya, bahkan jika mereka menghabiskan waktu di jalur yang salah

programmer perlu mulai menilai waktu mereka lebih banyak

kotoran merah
sumber
saya setuju (karenanya +1) waktu yang dihabiskan untuk bekerja / berpikir / meneliti / mengoptimalkan masalah adalah waktu mengerjakan masalah. TAPI bagaimana dengan seseorang yang menghabiskan waktu untuk yang seharusnya tahu (sesuai tugas yang disewa) dan / atau sudah diselesaikan (dan apa yang diminta). Dengan kata lain ini bukan alasan untuk kurangnya pengetahuan atau sekadar pekerjaan profesional yang buruk. Perhatikan bahwa seorang profesional sejati dapat (dan harus) memang membuat kasus yang meyakinkan untuk berapa banyak waktu yang dihabiskan dan mengapa
Nikos M.
5

Apa yang Anda lakukan adalah hal yang sangat normal. Fred Brooks membahas fenomena ini dalam bab "Plan to Throw One Away" dari buku mani tentang rekayasa perangkat lunak "The Mythical Man-Month."

Anda sedang mengerjakan kontrak waktu dan bahan; oleh karena itu, Anda harus menagih kliennya untuk semua waktu yang Anda habiskan untuk mengerjakan proyek. Terserah klien untuk menentukan apakah dia menerima nilai yang cukup untuk investasinya.

bit-twiddler
sumber
4

Saya melihatnya seperti ini: pada akhirnya, itu adalah panggilan Anda apa yang Anda minta. Ada banyak variabel seperti seberapa senang Anda ingin klien, hubungan yang ada, keterampilan penjualan Anda, dll ... kita semua akrab dengan mereka. Apa yang akhirnya Anda berikan kepada klien, dan apa yang sebenarnya mereka inginkan, adalah nilai. Nilai apa yang Anda berikan kepada klien dan apa solusi / hasil yang Anda berikan untuk mereka?

Mungkin Anda membutuhkan 10 menit untuk menyelesaikan masalah, tetapi perlu 10 tahun untuk mempelajari cara mengatasi masalah itu. Itu layak dipertimbangkan. Pada saat yang sama, beberapa dari kita mempertimbangkan kemampuan untuk belajar kompensasi "saat bekerja". Saya sering belajar hal-hal, yang benar-benar ada pada sepeser pun klien saya menganggap itu sebagai bentuk kompensasi non-moneter.

Anda juga dapat menambahkannya ke tagihan, lalu menandainya sebagai "diskon pelanggan pilihan" pada faktur, tidak mengenakan biaya dan membangun niat baik. Saya melakukannya sesekali, yang membuat klien merasa senang.

Juga, pertanyaan Anda jika ada pengembang yang menghasilkan ribuan dolar per hari, jawabannya adalah ya. Anda harus menjadi salah satu dari mereka, juga dengan keahlian Anda. Saya praktis ada di sana, dan saya tidak berada di posisi yang sama dengan Anda di CSS.

Michael Musgrove
sumber
1
+1, jawaban ini sangat kurang dihargai. Kedua jawaban pilihan teratas sama sekali kehilangan poin "berapa nilai solusi untuk klien". Heck, kadang-kadang kami menagih klien 3 kali usaha yang kami lakukan karena itu mungkin masih lebih murah baginya daripada solusi apa pun yang bisa ia dapatkan dari pesaing.
Doc Brown
2

Itu tergantung pada kesepakatan awal.

Apakah Anda mengatakan akan mengantarkannya selesai dan siap berangkat? Maka Anda lebih baik mengenakan biaya untuk semua waktu yang Anda habiskan untuk mengembangkannya. Semua itu!

karlphillip
sumber
2

Jika Anda menyewa pengacara untuk mendebat kasus untuk Anda, dan mereka merusaknya dan kalah untuk Anda, Anda masih membayar tagihan mereka.

Begitulah cara semua profesi lain lakukan. Tidak ada alasan mengapa programmer harus melakukan sebaliknya.

Jika klien berpikir mereka membayar terlalu banyak, mereka tidak akan kembali kepada Anda. Menjaga mereka sebagai pelanggan tetap adalah satu-satunya alasan yang masuk akal untuk tidak menagih untuk semua jam kerja.

quant_dev
sumber
1

Jika itu adalah proyek yang saya ambil secara khusus sehingga seseorang akan membayar saya, sementara saya belajar sendiri beberapa teknologi baru, saya cenderung melakukannya dengan kurang dari biasanya saya menagih waktu. Di sisi lain, Anda tidak dapat menawar terlalu rendah, atau itu akan aneh dengan klien itu selamanya setelah ("Hei, kembali ketika Anda melakukan hal yang sangat keren, Anda dikenakan biaya jauh lebih sedikit dari ini!") Jika tidak, saya tidak t menagih untuk waktu di mana saya mengacau dan akhirnya terlalu lama.

Pengecualian saya untuk aturan ini: Jika alasan masalah perlu waktu berjam-jam untuk diperbaiki adalah karena pelanggan membohongi saya tentang sesuatu yang telah mereka rusak, saya akan meminta bayaran untuk semuanya.

Satanicpuppy
sumber
1

Saya biasanya tidak akan menagih jika itu adalah kesalahan saya dan saya hanya menyentak, tapi saya tidak pandai bisnis sama sekali. Saya telah menemukan sebagian besar orang yang pandai-bisnis menerapkan filosofi ini bahwa klien membayar waktu mereka , dan bukan hanya hasil akhir. Ada banyak kali dalam karir saya di mana, dalam retrospeksi, saya menyesal tidak berpikir seperti ini. Yang saya pikirkan hanyalah hasil akhir yang bernilai, waktu saya menjadi tidak berarti kecuali itu meningkatkan hasil akhirnya. Namun seseorang dapat terseret-seret dan banyak waktu terbuang karena klien berubah pikiran, rekan kerja menyebabkan bug yang ditugaskan kepada Anda dan menunda pekerjaan Anda, misalnya, dan bukan hanya karena Anda memerlukan sedikit riset lebih lanjut dimuka untuk benar-benar tahu apa yang Anda lakukan.

Ketika Anda mulai membengkokkan aturan dan membuat pengecualian untuk jenis waktu kerja yang harus dibayar dan apa yang seharusnya gratis, pada akhirnya akan mudah untuk dimanfaatkan. Waktu adalah metrik termudah untuk digunakan untuk pembayaran. Ini membebaskan Anda dari banyak tanggung jawab kompleks, yang mungkin tampak tidak bertanggung jawab, tetapi melindungi Anda agar tidak ditarik dan membuat klien yang tidak bertanggung jawab menyebabkan beberapa pemotongan gaji.

Dalam kasus saya, akan sia-sia jika saya tidak dapat meminta biaya untuk mengambil jalan yang salah, karena saya sering mengerjakan hal-hal seperti ini:

masukkan deskripsi gambar di sini

... mencoba mengalahkan hampir 40 tahun algoritma subdivisi Catmull-Clark yang telah mengakar dalam industri dan ditingkatkan berulang kali oleh perusahaan-perusahaan seperti Microsoft dan Pixar dengan mencoba memberikan hasil yang lebih intuitif sambil tetap sama kompetitifnya dengan perusahaan-perusahaan besar ini bijaksana dari segi kecepatan.

95% dari waktu dalam kasus seperti itu, saya pergi ke rute yang salah, terus-menerus kembali ke papan tulis setelah kegagalan demi kegagalan demi kegagalan. Jika saya tidak bisa meminta bayaran atas kegagalan saya, saya sudah akan menjadi tunawisma. Saya melihat lebih dari setengah pekerjaan saya sebagai penelitian, ketika tidak ada yang pernah mencoba hal-hal ini sebelumnya, dan tidak mungkin saya bisa menemukan pendekatan yang sempurna untuk menangani solusi pada percobaan pertama (mungkin percobaan ke-20). Bagi saya tujuannya tidak pernah berhasil pada percobaan pertama tetapi gagal sesegera mungkin, dengan setiap kegagalan setelah kegagalan memberikan beberapa petunjuk tentang apa solusi yang benar, yang mungkin sebenarnya mampu mengubah dunia, mungkin.

Tidak semua orang mungkin bekerja di area R & D-intensif di mana pelanggan ingin dan berharap Anda mengalahkan teknik yang paling mapan di luar sana hanya karena Anda memulai proyek baru, tetapi bagi saya pemrograman tidak pernah cukup rutin tidak peduli bagaimana solusi sederhana dan mapan adalah. Bagaimana Anda mendesain dan mengintegrasikan bagian-bagian akan tetap unik, selalu beberapa bentuk seni itu sendiri menghasilkan pro dan kontra yang unik, bukan mekanis, tidak sepenuhnya ilmiah, kalau tidak robot bisa melakukannya. Jadi saya pikir pasti kita akan selalu harus menagih untuk turun beberapa rute yang salah di sana-sini, atau kita hanya akan mendapat untung dari pekerjaan paling rutin yang telah kita lakukan seratus kali yang sudah kita terapkan sama persis solusi setiap kali, dalam hal ini kami akan mengenakan biaya untuk menekan tombol salin dan tempel.

Ketidakpastian

Hal lain adalah bahwa pemrograman selalu sulit, tidak dapat diprediksi, tidak pernah cukup rutin. Ini tidak seperti pengiriman pizza yang rutin, di mana semua kecuali sesuatu seperti kecelakaan mobil dapat dipertanggungjawabkan (sayangnya saya pernah bekerja di bawah bos suatu kali yang menyamakan perkiraan programmer dengan perkiraan pengiriman pizza dan berpikir bahwa satu-satunya pekerjaan yang kami lakukan sebenarnya adalah mengetik) . Itu belajar di situs, selalu - saya tidak bisa membayangkan itu menjadi sepenuhnya rutin kecuali seseorang benar-benar berulang kali membayar saya untuk menerapkan seperti quicksort berulang-ulang. Akan selalu ada eksperimen dan pembelajaran yang terjadi di sana, dan selama itu tidak berlebihan, tidak perlu merasa bersalah karenanya.

Saya sering bermimpi menjadi petani atau sesuatu supaya saya bisa menemukan lebih banyak gerakan rutin dalam pekerjaan saya, tidak selalu mendorong batas-batas pengetahuan saya yang ada. Alih-alih, saya mencoba untuk mengimbangi dengan menjadikan hidup saya di luar pekerjaan sebagai rutin dan senyata mungkin, untuk menambahkan beberapa prediksi dan gerakan rutin di suatu tempat demi kewarasan, yang membuat saya bosan di antara orang-orang yang ingin menemukan kegembiraan dalam hidup mereka di luar pekerjaan - Saya menemukan cukup banyak di tempat kerja.

Dia berbicara tentang mempelajari hal-hal baru, bukan mengerjakan solusi yang salah.

Bekerja pada solusi yang salah adalah mempelajari hal-hal baru, bukan? Apakah Anda tahu itu adalah solusi yang salah ketika Anda mulai, atau apakah Anda terus-menerus mengusahakannya bahkan setelah Anda tahu itu salah? Semoga bukan yang terakhir. Seringkali proses belajar melalui kesalahan. Itu guru terbaik. Strategi paling efektif yang saya temukan adalah hanya membuat kesalahan sesegera mungkin, untuk menemukan bahwa mereka memang merancang kesalahan sesegera mungkin sebelum kita melakukan segalanya untuk mereka dan menikahi solusi seperti itu, karena satu-satunya konstanta yang dapat saya hitung dan prediksi dengan kepastian hampir 100% adalah bahwa kesalahan akan dibuat. Mereka hanya mahal jika ditemukan sangat terlambat.


sumber
0

Itu benar-benar tergantung pada bagaimana Anda mengusulkan proyek, dan bagaimana proyek itu dapat ditagih.

Sebagai contoh jika itu adalah kontrak berbasis kiriman maka semua jam terlepas harus dilacak menuju proyek bahkan jika itu untuk mempelajari sesuatu yang baru.

Jika ini adalah kontrak berbasis waktu dan material maka Anda harus lebih sensitif terhadap hal ini. Misalnya jika Anda berada dalam konteks masalah dan memiliki masalah maka itu harus ditagih. Contohnya adalah jika Anda mempelajari API lama atau sedikit kode dan mencoba membuatnya bekerja dengan kode Anda.

Namun jika Anda mendapatkan sisi yang dilacak mencoba melakukan sesuatu atau hanya ingin belajar bagaimana melakukannya dengan cara yang baru, maka saya hanya akan menagih untuk waktu yang dibutuhkan untuk mengimplementasikan solusi aktual, bukan waktu saya mengambil mempelajarinya.

Saya tidak setuju dengan Lunivore, bahwa mereka membayar kami untuk mempelajari banyak hal. Mereka membayar kita karena keahlian kita dan bahwa sebagian besar waktu kita seharusnya sudah tahu bagaimana melakukannya. Mereka membayar kita untuk implementasinya.

Singkatnya, jika estimasi awal Anda tidak termasuk waktu yang diperlukan untuk mempelajari masalah maka Anda mungkin tidak perlu menagihnya. Kapur sebagai pengalaman belajar dan tahu lain kali Anda tidak akan mengalami penundaan itu.

Sunting: Karena Anda menentukan nanti bahwa tidak ada perkiraan, saya pasti tidak akan memasukkan waktu itu jika Anda berpikir ini akan menjadi klien yang berulang. Saya juga akan selalu memberikan perkiraan dimuka di masa depan.

Roloc
sumber
-1

Untuk mengatasi ini, saya pikir apa yang saya pikir akan menjadi kasus buruk dan mengutip berdasarkan per jam pada apa yang saya pikir harus mengambil dengan kutipan maksimum yang ditetapkan oleh kasus "buruk". Dengan cara ini kita berdua adalah pemenang.

Dave
sumber
Saya tidak begitu suka, karena klien selalu kalah, kalau-kalau itu bukan kasus "buruk".
Lea Verou
ada perbedaan antara kasus "buruk" dan kasus "terburuk". Jika itu adalah kasus terburuk, saya menerima kerugiannya.
Dave
Hmm, poin bagus. Tapi tetap saja, bagaimana jika ini kasus "baik"?
Lea Verou
maka itu adalah per jam. Saya akan menagih Anda x jumlah per jam hingga jam.
Dave