Apakah memberi pengembang mesin pengembangan yang lebih lambat menghasilkan kode yang lebih cepat / lebih efisien? [Tutup]

130

Misalkan saya memberi pengembang saya mesin yang menjerit cepat. VS2010 berbasis WPF memuat sangat cepat. Pengembang kemudian membuat aplikasi WPF atau WPF / e yang berjalan dengan baik di kotaknya, tetapi jauh lebih lambat di dunia nyata.

Pertanyaan ini memiliki dua bagian ...

1) Jika saya memberi pengembang mesin yang lebih lambat, apakah itu berarti kode yang dihasilkan mungkin lebih cepat atau lebih efisien?

2) Apa yang bisa saya lakukan untuk memberi pengembang saya pengalaman IDE yang cepat, sambil memberikan pengalaman runtime 'tipikal'?

Memperbarui:

Sebagai catatan, saya sedang mempersiapkan tanggapan tangan saya terhadap manajemen. Ini bukan ide saya, dan kalian membantu saya memperbaiki permintaan klien saya yang salah arah. Terima kasih telah memberi saya lebih banyak amunisi, dan referensi ke mana dan kapan untuk mendekati ini. Saya telah memberi +1 kasus penggunaan yang valid seperti:
- Optimalisasi pemrograman sisi server tertentu
- Laboratorium uji
- Kemungkinan membeli server yang lebih baik daripada kartu grafis top of the line

makerof hal7
sumber
20
Mungkin minta mereka menguji aplikasi di PC virtual!
Markus
209
Saya terdiam bahwa ini bahkan sebuah pertanyaan. Bagaimana itu bisa menghasilkan selain perkembangan yang lebih lambat dan moral yang buruk?
Fosco
76
Berkembang di negara-of-the-art. Tes pada mesin terburuk yang dapat Anda temukan.
Adam
14
Apakah membersihkan lantai dengan sikat gigi dan bukannya pel menghasilkan lantai yang lebih bersih? Tentu ya, pada akhirnya. Operator pel tidak dapat menemukan kotoran dari jarak 150cm sebaik operator sikat gigi dari jarak 30cm. Jangan coba dengan lantai besar.
dbkk
13
Catatan untuk diri sendiri: tidak pernah bekerja untuk MakerofThings7
matt b

Jawaban:

234

Benar

Benar juga bahwa para manajer harus melakukan semua pertemuan dalam bahasa Pig-Latin. Ini meningkatkan keterampilan komunikasi mereka secara keseluruhan untuk membuat mereka kurang beruntung ketika berbicara kalimat sederhana. Mereka harus lebih mengandalkan ekspresi wajah dan bahasa tubuh untuk menyampaikan maksud mereka dan kita semua tahu bahwa paling tidak 70% dari semua komunikasi itu.

CFO harus menggunakan hanya sempoa dan kapur. Kalau tidak, mereka akhirnya terlalu mengandalkan 'data mentah' dan tidak cukup pada 'nyali perasaan' mereka.

Dan Wakil Presiden dan lebih tinggi harus diminta untuk mengadakan semua pertemuan bisnis penting dalam pengaturan yang mengganggu seperti lapangan golf sementara setengah mabuk. Oh jepret ...

Jay Beavers
sumber
85
Saya menyukai sarkasme. +1
Terence Ponce
8
Wakil Presiden dan yang lebih tinggi sering melakukan networking murni: titik pertemuannya adalah bermain golf mabuk. Ketika Anda menjadi benar-benar tingkat tinggi, Anda bisa mabuk dan bermain golf saat Anda memilih negara untuk diserang, dan kepada siapa Anda harus memberikan kontrak pertahanan yang gemuk.
Dan Rosenstark
1
Saya tidak melihat sarkasme di sini. +1
FinnNk
376

Jawabannya adalah (saya akan berani dan katakan) selalu

TIDAK .

Kembangkan yang terbaik yang bisa Anda dapatkan dengan anggaran Anda, dan uji berbagai peralatan minimum yang akan Anda gunakan.

Ada emulator, mesin virtual, mesin aktual dengan penguji yang semuanya dapat menguji kinerja untuk melihat apakah itu faktor.

peterchen
sumber
10
Tidak dapat memilih ini lebih dari sekali, walaupun saya berharap saya bisa. Saya memiliki komputer tua yang sedang saya pakai dan waktu yang dibutuhkan VS2010 untuk menyelesaikan beberapa tugas (misalnya membuka proyek) bisa sangat menjengkelkan.
rjzii
108
Bisakah Anda membuat yang tidak terlalu besar dan tebal?
dr Hannibal Lecter
4
Pengujian penerimaan yang Anda lakukan harus mencakup persyaratan kinerja. Harus ada persyaratan kinerja BE. Jika Anda tidak menguji kinerja maka tester Anda disebut pelanggan (dan Anda membebankan biaya kepada mereka).
Tim Williscroft
2
Aku sangat setuju. Memberi pengembang lebih lambat mesin tidak akan benar-benar menghasilkan kode yang lebih baik. Pengembang akan merasa frustrasi dengan mesin, dan selalu merasa gelisah. Itu membuat kode lebih buruk, dan mereka tidak bisa berkonsentrasi banyak ketika semuanya macet. Lihat, satu akan memiliki IDE seperti Eclipse, katakanlah 2 buku pdf, 2 browser web, satu untuk menjalankan-debugging (dalam hal pengembangan berbasis web), server berjalan, dan pemutar musik;) Beri dia mesin lambat dan dia akan menciummu selamat tinggal.
1
Jawaban tidak salah. Jawaban yang benar adalah Tidaaaaaak!
Pekka 웃
70

1) Sangat, sangat tidak mungkin. Tidak, dan pengembang Anda mungkin memasukkan sesuatu yang tidak menyenangkan ke kopi Anda untuk menyarankannya. Waktu Anda pengembang habiskan menunggu kode untuk mengkompilasi atau untuk IDE untuk melakukan apa pun yang dilakukannya atau apa pun saatnya mereka tidak menghabiskan membuat kode yang lebih baik. Mengganggu aliran mental mereka juga. Jaga pikiran mereka pada masalah, dan mereka akan jauh lebih efisien menyelesaikan masalah itu.

2) Beri mereka masing-masing PC kedua yang mewakili spesifikasi terendah yang Anda ingin mereka benar-benar dukung, dengan sakelar KVM untuk beralih antara itu dan workstation nyata mereka.

BlairHippo
sumber
Saya suka gagasan menggunakan KVM dengan PC lama untuk pengujian. Tergantung pada proyek meskipun mungkin rumit untuk devs untuk menginstal build terbaru pada mesin lambat setiap kali mereka datang dengan build baru.
Al Crowley
4
Hal lain yang perlu dipertimbangkan adalah memberi mereka akun di setidaknya PC kedua yang tidak memiliki hak administratif.
David Thornley
43

Saya suka waktu kompilasi yang lama. Ini memberi saya lebih banyak waktu untuk mengerjakan resume saya.

Wonko the Sane
sumber
1
hehehe, semakin lama semakin baik!
Newtopian
33

Ini ide yang buruk. Anda ingin pengembang Anda menjadi seproduktif mungkin, yang berarti memberi mereka mesin secepat mungkin, sehingga mereka tidak duduk sepanjang hari menunggu barang dikompilasi. (Sedikit OT, tetapi juga membantu untuk tidak memblokir akses mereka ke situs yang berpotensi membantu dengan WebSense dan sejenisnya.) Jika Anda dibatasi oleh memiliki pengguna yang masih menjalankan teknologi Zaman Batu, maka Anda harus memiliki mesin uji dengan spesifikasi yang serupa, dan pastikan untuk menguji lebih awal dan sering untuk memastikan bahwa Anda tidak salah jalan dalam hal pilihan teknologi.

Hai. nate
sumber
siapa ... tunggu sebentar. Jika kompilasi cepat, ini tidak lagi mungkin: xkcd.com/303
gbjbaanb
32

Pembangunan harus dilakukan di lingkungan terbaik yang layak. Pengujian harus dilakukan di lingkungan terburuk yang layak.

Yevgeniy Brikman
sumber
27

Jika saya diberi mesin yang lambat saya akan menghabiskan hari saya mengoptimalkan proses pengembangan dan tidak mengoptimalkan kode yang saya kirim. Jadi: TIDAK!

user6015
sumber
26

Pemrogram sistem tertanam mengalami hal ini sepanjang waktu! Dan ada solusi dua bagian:

  1. Persyaratan Anda perlu menentukan kinerja X pada perangkat keras Y.
  2. Tes pada perangkat keras Y, dan ketika Anda tidak mendapatkan kinerja X, kutu bug.

Maka tidak masalah perangkat keras apa yang dikerjakan pengembang Anda.

Setelah Anda selesai melakukannya, katakanlah peralatan yang lebih cepat dapat menghemat programmer Anda setengah jam sehari, atau 125 jam dalam setahun. Dan katakanlah mereka berharga $ 100.000 setahun dengan manfaat dan biaya overhead (sangat rendah untuk Silicon Valley), atau $ 50 per jam. 125 jam itu * $ 50 / jam adalah $ 6250. Jadi jika Anda menghabiskan kurang dari $ 6250 per tahun untuk pengembangan perangkat keras per programmer, Anda menghemat uang.

Itulah yang harus Anda sampaikan kepada manajemen Anda.

Tim Williscroft cukup banyak mengatakan bagian pertama dari ini dalam komentar, dan di dunia yang adil, ia akan mendapatkan setengah dari setiap poin jawaban ini didapat.


Ditambahkan 24 Oktober:

Mantan atasan saya memiliki teori itu, dan itu membantu mereka membuat marah sekitar $ 100 juta.

Mereka adalah konglomerat yang berbasis di Jepang yang digunakan untuk merekrut programmer di Jepang, Korea dan Cina. Orang-orang di sana keren dengan menggunakan perangkat keras pengembangan yang jelek, 13 jam hari kerja, tidur di meja mereka, dan tidak memiliki kehidupan. Jadi mereka membayangkan ketika mereka mengakuisisi perusahaan Silicon Valley yang terkenal untuk melakukan OS ponsel berbasis Linux, orang-orang California konyol yang menginginkan peralatan modern hanyalah primadona dan tidak benar-benar memiliki alasan yang baik untuk itu (seperti produktivitas).

Empat tahun kemudian, OS bekerja seperti omong kosong, semua jadwal macet, dan pelanggan marah dan mengakhiri kontrak kanan dan kiri. Akhirnya, proyek OS dibatalkan, dan sebagian besar tenaga kerja konglomerat di seluruh dunia di-PHK selama setahun terakhir. Dan terus terang, saya tidak ingin menjadi salah satu eksekutif yang harus menjelaskan kepada para pemegang saham di mana semua uang dan usaha itu pergi.

Bukan hanya mesin pengembangan lambat yang menyebabkan kegagalan ini. Ada banyak kesalahan strategis dan taktis lainnya - tetapi itu adalah hal yang sama di mana orang-orang yang bekerja di parit bisa melihat keruntuhan kereta datang, dan bertanya-tanya mengapa para pembuat keputusan tidak bisa.

Dan persneling yang lambat tentu merupakan faktor. Lagi pula, jika Anda berada di bawah senjata untuk tepat waktu, apakah benar-benar hal yang cerdas untuk sengaja memperlambat pekerjaan?

Bob Murphy
sumber
+1 bahkan tiga puluh menit dapat menjadi taksiran yang sangat sederhana di beberapa lingkaran.
justin
20

Dalam pemrograman, ada pepatah lama bahwa " optimasi prematur adalah akar dari semua kejahatan ". Saya pikir Anda telah berhasil membuat "root" lain (atau setidaknya cabang pertama) dari semua kejahatan. Mulai sekarang, kita dapat mengatakan "deoptimisasi pengembang prematur adalah akar dari semua kejahatan."

Singkatnya, jawabannya adalah ini hanya akan memperlambat waktu pengembangan Anda dan membuat perawatan lebih lanjut lebih sulit. Waktu kompilasi akan lebih lama, mencari kode pada disk akan lebih lambat, menemukan jawaban online akan lebih lama, dan PALING penting, pengembang akan mulai menggunakan kode mereka secara prematur untuk bahkan dapat menguji fungsionalitas yang diperlukan.

Poin terakhir itu adalah masalah yang paling kritis dan tidak diangkat dalam banyak jawaban lain. Anda mungkin mendapatkan versi pertama Anda ok, tetapi kemudian ketika Anda ingin memperbarui kode di masa depan, Anda akan menemukan bahwa optimasi pengembang prematur mengambil fokus kode Anda dari desain yang baik dan mendorongnya lebih dekat ke "harus membuat ini di paling tidak bekerja untuk mempertahankan "kode gaya pekerjaan saya. Menambahkan fitur tambahan akan menjadi lebih sulit karena optimisasi yang dipilih pada saat itu mungkin tidak diperlukan dan mengunci kode Anda ke jalur peretasan semi-optimal di atas peretasan semi-optimal lainnya.

Sebagai contohnya, bayangkan bahwa persyaratan sistem minimum versi Anda saat ini adalah mesin prosesor tunggal dengan kecepatan agak lambat. Anda menempatkan pengembang di kotak ini dan mereka datang dengan solusi berulir tunggal rumit yang bergantung pada banyak peretasan karena mereka ingin mengembangkan produk dengan cepat. Sekarang 5 tahun kemudian, Anda memiliki versi baru produk yang memiliki persyaratan minimum mesin prosesor ganda. Anda ingin dapat memisahkan bagian-bagian dari program yang dapat Anda jalankan secara paralel, tetapi keputusan yang Anda buat 5 tahun lalu yang memaksa pengembang Anda untuk membuat perangkat lunak yang rusak sekarang menghalangi Anda untuk menggunakan kekuatan penuh dari persyaratan minimum baru Anda. .

Apa yang harus Anda lakukan adalah menambahkan fase pada akhir siklus pengembangan Anda di mana Anda melakukan pengujian penerimaan pada kotak batas bawah. Tentu saja beberapa kode akan terlalu lambat karena mesin pengembang yang lebih cepat tetapi Anda dapat mengisolasi bagian itu dan mengoptimalkannya di sana. Sisa kode Anda tetap bersih dan dapat dipelihara.

Saya melihat pertanyaan Anda mengatakan, "Dapatkah saya memaksa pengembang saya untuk mengoptimalkan awal dengan memberi mereka mesin pengembang yang buruk namun masih mendapatkan kode yang baik?" Dan jawabannya adalah tidak.

EntropyFails
sumber
"Kita harus melupakan efisiensi kecil, katakanlah sekitar 97% dari waktu: optimasi prematur adalah akar dari semua kejahatan". Saat mendesain sesuatu, ide bagus untuk berpikir selama 2 menit adalah 3%.
Keyo
15

Bacaan yang menarik, semua jawaban itu.

Tapi saya pikir kebanyakan orang yang menjawab di sini tidak mengerti. Pertanyaannya, ketika saya membacanya bukan (hanya setidaknya) tentang benar-benar memberikan pengembang P1 untuk membuat kode lebih cepat.

Intinya adalah bahwa banyak perangkat lunak saat ini sama lambat atau bahkan lebih lambat dari seftware yang kami gunakan pada milenium terakhir meskipun komputer sangat kuat. Menilai dari jawaban di sini kebanyakan pengembang tidak mendapatkan petunjuk itu. Ini sangat jelas dalam aplikasi web. Situs ini merupakan pengecualian yang sangat baik, tetapi banyak situs memiliki halaman depan dalam 1 mb. Apa yang saya dapatkan untuk menunggu untuk mengunduh? Saya tidak tahu Saya pikir itu tampaknya tentang ketidaktahuan dari pengembang tidak menghormati waktu yang harus dihabiskan pengguna untuk itu, atau bahkan lebih buruk membayar jika Anda membayar per mb. Masalahnya adalah bahwa semua halaman web itu bahkan tidak mengandung gambar resolusi tinggi. Seringkali itu hanya beberapa kode omong kosong yang dikirimkan dari beberapa lingkungan pengembangan. Yah, tentu saja itu bukan kode omong kosong saya kira, tetapi tidak memberikan keuntungan bagi saya sebagai pengguna.

Secara umum ini bukan hanya tentang mengoptimalkan kode, tetapi juga tentang memilih untuk tidak memasukkan hal-hal yang melambat lebih dari yang diberikannya.

Beberapa minggu yang lalu saya memulai laptop dari 1995. Windows 3.x sudah berjalan dan berjalan dalam waktu singkat. Basis data saya harus mendapatkan beberapa data dari mulai sebelum tombol enter sepenuhnya dirilis (hampir setidaknya).

Saya tahu bahwa kami mendapat lebih banyak dari perangkat lunak kami hari ini, tetapi kami juga memiliki komputer berkali-kali lebih cepat. Mengapa industri pengembangan tidak memutuskan untuk menjaga kecepatan perangkat lunak sejak 1995 dan membuat orang membeli perangkat keras baru karena mereka menginginkan fungsionalitas baru. Hari ini lebih seperti program sehari-hari dan situs web memaksa orang untuk membeli perangkat keras baru untuk melakukan hal yang persis sama seperti yang mereka lakukan sebelumnya. Tapi tentu saja dengan cara yang lebih mewah.

Saya harus mengatakan saya pikir pengembangan Linux tampaknya menangani ini dengan lebih baik. Distribusi Linux telah bertahun-tahun berada jauh di depan windows bahkan dalam fantasi dengan banyak hal menarik seperti windows animasi. Masalahnya adalah bahwa mereka telah bekerja di komputer hari ini dan bahkan kemarin. Tidak hanya pada perangkat keras canggih.

Sekarang saya kira banyak pengembang memiliki tingkat adrenalin yang tidak sehat. Ya, saya menemukan cara untuk mengembalikan frustrasi dari semua yang menunggu di depan:
office sql server (memulai manajemen konsol) arcgis (memulai dan menggunakan) acrobat reader (memulai) agresso (menggunakan, setidaknya sebagai aplikasi web) windows (menatap dan menggunakan, yah saya belum mencoba 7). halaman web bersih (mengunduh)

dan seterusnya

Saya baik-baik saja :-)

Cheers
Nicklas

Nicklas Avén
sumber
Ini. Ini. INI. BEGITU INI. Itu selalu menjadi frustrasi terbesar saya dengan perangkat lunak. Orang-orang menghabiskan lebih banyak waktu untuk mencoba mengilap antarmuka daripada benar-benar peduli tentang kegunaan. Salah satu contohnya adalah Android vs Blackberry. Android terlihat lebih bagus, dan bisa berbuat lebih banyak, tetapi Blackberry BANYAK lebih menyenangkan (dan cepat) untuk digunakan daripada Android, setidaknya menurut saya.
kcoppock
1
Saya sepenuhnya setuju dengan argumen tentang perangkat lunak yang sekarang sama cepatnya dengan 20 tahun yang lalu untuk fungsi yang hampir sama. Tetapi membuat devs bekerja pada perangkat keras berusia 20 tahun tidak akan melakukan apa pun untuk membantu masalahnya. Jika perusahaan yang menciptakan perangkat lunak tidak berinvestasi dalam kegunaan dan atau pengujian kinerja yang berkembang pada perangkat keras yang lebih lambat hanya akan memperburuk keadaan. Ini adalah debat yang sangat berbeda sama sekali dimana kepala programmer bukan satu-satunya penerima yang layak dari tamparan yang layak di belakang kepala.
Newtopian
10

1) Jika saya memberi pengembang mesin yang lebih lambat, apakah itu berarti kode yang dihasilkan mungkin lebih cepat atau lebih efisien?

Kami telah membangun perangkat lunak selama 6 dekade terakhir, dan kami masih mendapatkan pertanyaan seperti ini? Tampaknya lebih seperti upaya lain untuk memotong sudut. Jangan tersinggung, tapi ayolah, apakah menurut Anda pertanyaannya masuk akal? Pikirkan hal ini dalam istilah ini (jika Anda bisa): Anda ingin membangun kendaraan 4x4 yang dapat beroperasi di bawah kondisi yang keras, hujan, lumpur, apa pun. Apakah Anda akan menempatkan insinyur dan jalur perakitan di bawah elemen hanya untuk memastikan kendaraan yang dihasilkan dapat beroperasi pada mereka?

Maksudku, Yesus Kristus! Ada pengembangan dan ada pengujian. Pengujian dilakukan di lingkungan yang berbeda, lebih keras, atau pengembang tahu cara merakit tempat uji di lingkungan pengembangnya sendiri dengan cara yang sesuai untuk pengujian stres. Jika tidak bisa, ganti dia dengan pengembang yang lebih baik.

2) Apa yang bisa saya lakukan untuk memberi pengembang saya pengalaman IDE yang cepat, sambil memberikan pengalaman runtime 'tipikal'?

Anda harus menanyakan hal itu kepada pengembang Anda. Dan jika mereka tidak dapat memberikan jawaban yang objektif dan valid, Anda perlu menggantinya dengan pengembang yang sebenarnya.

Tetapi untuk menghibur pertanyaan, berikan pengembang Anda (dengan asumsi Anda memiliki pengembang yang baik), alat yang baik dan perangkat keras yang baik, yang terbaik yang Anda mampu. Kemudian atur lingkungan baseline umum terendah di mana perangkat lunak Anda harus beroperasi. Di situlah pengujian harus dilakukan. Adalah praktik rekayasa yang jauh lebih baik untuk memiliki lingkungan pengujian yang berbeda dari lingkungan pengembangan (lebih disukai yang memungkinkan Anda melakukan pengujian stres.)

Jika pengembang Anda bagus, mereka harus mengomunikasikan hal ini kepada Anda (dengan asumsi Anda telah meminta mereka.)

luis.espinal
sumber
1
Kami telah membangun perangkat lunak selama 6 dekade terakhir, dan kami masih mendapatkan pertanyaan seperti ini? - Saya meningkatkan tanggapan Anda, tetapi saya mendorong Anda untuk memeriksa pertanyaan awal dari perspektif yang berbeda. Sebenarnya ada banyak manajer yang tidak mengetahui manfaat dari mesin yang cepat dan kuat bagi pengembang mereka. Maka dengan itu dalam pikiran, pertanyaan asli mungkin telah mencoba untuk melumpuhkan manajer seperti gagasan konyol bahwa mesin lambat entah bagaimana dapat mendorong pengembang untuk menghasilkan kode lebih cepat dan lebih efisien.
Jim G.
1
"2) Apa yang bisa saya lakukan untuk memberi pengembang saya pengalaman IDE yang cepat, sambil memberikan pengalaman runtime 'tipikal'? Anda harus menanyakan itu kepada pengembang Anda." Saya percaya ini adalah situs SE pemrogram, bukan situs SE manajer. Dia bertanya pada para devs.
stimpy77
1
"Anda ingin membangun kendaraan 4x4 yang dapat beroperasi di bawah kondisi yang keras, hujan, lumpur, apa pun. Apakah Anda akan menempatkan insinyur dan jalur perakitan di bawah elemen hanya untuk memastikan kendaraan yang dihasilkan dapat beroperasi pada mereka?" <<< suka analoginya
stimpy77
6

Ini menghasilkan banyak pengembang betina. Hal ini cukup sulit seperti itu, jangan membuat pengalaman lebih buruk.

Saya mendorong Anda untuk memiliki perangkat keras yang serupa dengan pengguna Anda di lingkungan Uji atau QA untuk mengeluarkan masalah kinerja apa pun. Itu ide yang bagus.

bigtang
sumber
8
Pengembang jalang itu? Tidak mungkin ...
Jé Queue
6

Saya akan melawan norma dan mengatakan ya JIKA DAN HANYA jika mereka menulis perangkat lunak server. Tertawalah semua yang Anda inginkan, tetapi tim paling efisien yang pernah saya lihat adalah sekelompok Perl dengan terminal Wyse. Ini adalah akhir 1990-an, adalah toko off-shoot Universitas, dan mereka menulis perangkat lunak grid spasial (yang pada dasarnya hanya menghitung). Namun mereka berbicara dengan beberapa RS / 6000 model akhir yang relatif kuat.

Hanya untuk menambah minat pada acara tersebut, ada seorang programmer yang buta di sana. Saya benar-benar terkesan.

teks alternatif

Jé Queue
sumber
3
Programmer buta? Apakah itu mungkin?
WernerCD
1
@WernerCD, saya sampai hari ini masih mencoba dan membayangkan kekuatan pikiran yang harus diambil untuk melacak garis kode di kepala saya.
Jé Queue
3
Ya, kebanyakan dari kita sedang menulis perangkat lunak server ... +1
goodguys_activate
@ MakerOfThings7, beri saya lebih banyak perangkat keras server kapan saja di atas mesin lokal saya, belanjakan $ di mana seharusnya (tapi beri saya monitor besar :)) Saya tidak punya masalah dengan Dell Latitude CPx saya yang berusia satu dekade menjadi tampilan untuk sistem besar di DC.
Jé Queue
4
Mungkin seorang programmer buta dapat menggunakan tampilan braille?
Antsan
5

Ini bukan ide yang buruk - tetapi Anda ingin pengembang Anda memiliki lingkungan pemrograman yang cepat.

Anda mungkin bisa menerapkan ini dengan memberi programmer Anda dua mesin - kotak dev cepat, dan kotak komoditas lebih lambat (mungkin virtual) untuk pengujian.

Beberapa penyesuaian dari proses pembuatan VS dapat membuat penyebaran ke kotak tes norma, dengan debugging jarak jauh.

Ada beberapa cara lain untuk mempertimbangkan memaksa coder Anda untuk mengembangkan kode yang lebih efisien - Anda dapat memasukkan tujuan kinerja dan penggunaan memori dalam pengujian unit Anda, misalnya. Menetapkan anggaran untuk penggunaan memori juga merupakan tujuan yang sangat baik. Juga mengatur anggaran berat halaman untuk kode html.

damien
sumber
5

Masalahnya bukan pengembang membuat kode tidak efisien pada mesin cepat, masalahnya adalah Anda belum mendefinisikan metrik kinerja yang harus diukur.

Harus ada, sebagai bagian dari persyaratan produk, target spesifik yang dapat diukur pada semua komputer berdasarkan pengalaman pelanggan yang diperlukan. Ada banyak situs web (Periksa SpecInt) yang memungkinkan Anda menghubungkan komputer Anda ke komputer jenis lain.

Ini bagus karena banyak alasan. Hal ini memungkinkan Anda untuk mendefinisikan perangkat keras minimum yang didukung dengan lebih mudah sehingga Anda dapat membatasi jumlah keluhan pelanggan - kita semua tahu sebagian besar perangkat lunak berjalan pada sebagian besar komputer, itu hanya masalah kinerja - jika kita menetapkan spesifikasi kami sehingga orang-orang dalam rentang persyaratan minimum memiliki kinerja yang dapat diterima, Anda membatasi keluhan pelanggan - dan kemudian ketika pelanggan menelepon, Anda dapat menggunakan tolok ukur untuk menentukan apakah memang ada masalah, atau jika pelanggan tidak senang dengan bagaimana produk seharusnya bekerja.

Mike Glasspool
sumber
5

Saya yakin bahwa memiliki komputer yang lebih lambat untuk pengembangan menghasilkan kode yang lebih cepat, tetapi ini harus dibayar mahal. Alasannya adalah bahwa saya telah mengalami tangan pertama ini: memiliki waktu perjalanan yang panjang, saya membeli netbook untuk bekerja di kereta, netbook yang lebih lambat dari komputer mana pun yang saya beli dalam 5 tahun terakhir. Karena semuanya sangat lambat, saya melihat dengan sangat cepat ketika ada sesuatu yang sangat lambat di netbook ini, dan saya menyadari titik lambat jauh lebih cepat (tidak perlu benchmark sepanjang waktu). Bekerja di netbook benar-benar mengubah cara saya berkembang.

Karena itu, saya tidak menganjurkan melakukan ini, terutama di lingkungan profesional. Pertama, itu melemahkan semangat. Kenyataan bahwa hampir semua orang mengatakan gagasan itu bahkan tidak masuk akal menunjukkan bahwa pemrogram bereaksi buruk terhadap gagasan itu.

Kedua, memiliki segalanya lebih lambat berarti bahwa hal-hal yang Anda mungkin ingin lakukan pada mesin cepat (katakanlah 1 menit) tidak benar-benar bisa dilakukan lagi pada mesin lambat, karena malas, dll ... Ini adalah masalah insentif.

Akhirnya: kode yang dihasilkan mungkin lebih cepat, tetapi hampir pasti membutuhkan waktu lebih lama untuk diproduksi.

David Cournapeau
sumber
+1 Tetapi saya harus tidak setuju pada beberapa poin. Saya juga membeli netbook, tetapi saya perhatikan bahwa kecepatan bukan masalah sebenarnya, ini ukuran layarnya kecil. 1GHz cukup cepat untuk proyek-proyek kecil saat bepergian, tetapi 1024x600 terlalu kecil.
Joe D
4

Poin 1, TIDAK! Studio dimaksudkan untuk dijalankan pada mesin yang layak dan persyaratan itu hanya menjadi lebih kuat pada setiap versi. Anda benar-benar dapat mengunci beberapa versi studio jika Anda mengaktifkan intellisense dan menggunakan kotak single core non HT.

Untuk poin # 2 ada beberapa fitur dalam proyek pengujian yang memungkinkan Anda untuk membatasi beberapa sumber daya. Mereka tidak sempurna, tetapi mereka ada di sana. VPC atau gambar VM dengan spesifikasi rendah menjadi pekerjaan yang cukup baik untuk dibatasi juga. Saya meminta pengguna duduk di mesin yang buruk untuk melakukan pengujian sesekali sehingga mereka dapat melihat implikasi dari fitur yang mereka minta.

Tagihan
sumber
4

Tidak - pada kenyataannya itu akan menghasilkan lebih banyak bug karena mereka tidak akan melakukan banyak pengujian, dan mereka tidak akan menggunakan alat tambahan seperti profiler. Beri mereka mesin terbaik yang Anda mampu (termasuk perangkat keras akselerasi grafis jika Anda seorang pengembang game atau toko grafis), dan minta mereka mengujinya di dalam VM. Spesifikasi VM dapat ditingkatkan atau diturunkan sesuai kebutuhan.

JohnL
sumber
+1: sebenarnya itu akan menghasilkan lebih banyak bug karena mereka tidak akan melakukan banyak pengujian, dan mereka tidak akan menggunakan alat tambahan seperti profiler. - Poin yang bagus. Jangan lupa biaya peluang yang terkait dengan mesin pengembangan lambat.
Jim G.
4

Saya pikir ini adalah pertanyaan yang menarik, dan saya tidak akan menjawab "tidak" secepat itu. Pendapat saya adalah: itu tergantung pada tim pengembangan seperti apa yang sedang kita bicarakan. Contoh: jika Anda memimpin grup yang berjalan untuk kontes pemrograman ICFP tahunan, mungkin memiliki hasil yang baik setelah sedikit waktu pengembangan pada cluster HPC tidak akan berarti bahwa solusi yang Anda temukan baik. Hal yang sama dapat dikatakan jika Anda menulis beberapa algoritma ilmiah atau numerik: pada AMD Duron 600 MHz lama Anda dengan 64 MB memori Anda terpaksa harus berhati-hati tentang cara Anda menyelesaikan sesuatu, dan ini dapat mempengaruhi bahkan beberapa desain pilihan.

Di sisi lain, seorang programmer / ilmuwan / pintar apa pun yang seharusnya berhati-hati. Tetapi saya menemukan diri saya menuliskan beberapa kode terbaik saya ketika saya TIDAK punya komputer sama sekali dan harus membuat catatan di atas kertas. Ini mungkin tidak berlaku untuk proyek-proyek besar yang melibatkan kerangka kerja besar, ketika sebuah IDE sangat diperlukan.

Satu hal yang pasti: mesin cepat dan hasil langsung yang baik membuat programmer (buruk) manja dan mungkin menjadi salah satu alasan untuk beberapa omong kosong yang kita temukan di komputer.

Lorenzo Stella
sumber
5
Katakan ya apa - beli komputer yang benar-benar bagus, dan aku akan menukar
denganmu
4

Saya mengerjakan paket yang membutuhkan waktu sekitar satu jam untuk membangun mesin 8 core 8G saya (full clean build). Saya juga punya laptop yang relatif rendah saya uji. Laptop low end tidak mengelola dua build penuh selama satu hari kerja.

Apakah saya lebih produktif di mesin cepat dengan beberapa pengujian yang disengaja dilakukan pada laptop, atau haruskah saya melakukan semua build saya di laptop?

Perlu diingat ini bukan angka yang dibuat-buat.

Ini adalah demo kecurangan dimana saya biasanya tidak perlu melakukan build bersih setiap hari (saya bisa melakukan banyak pengujian pada modul tunggal), tetapi bahkan build parsial menunjukkan secara kasar urutan perbedaan besarnya dalam waktu kompilasi / tautan .

Jadi masalah sebenarnya adalah pada mesin saya yang lebih lambat, bentuk tubuh yang khas cukup lama bagi saya untuk mendapatkan secangkir kopi, sedangkan pada mesin yang lebih cepat saya hanya bisa menyeruput sedikit kopi.

Dari sudut pandang menyelesaikan pekerjaan saya lebih suka melakukan pengembangan pada mesin cepat. Saya jauh lebih andal bisa mencapai tenggat waktu. Di sisi lain saya membayangkan jika manajemen membuat saya melakukan pengembangan pada mesin lambat saya, saya akan mendapatkan lebih banyak browsing web dilakukan, atau setidaknya membaca buku.

Garis-garis
sumber
Secara umum, apa yang Anda lakukan untuk membuatnya begitu lama? Apakah itu CPU terikat, atau disk terikat (apa hambatannya) Apakah ini akan menjadi masalah jika sesuatu seperti TFS membangun untuk Anda?
goodguys_activate
1
Butuh setengah hari kerja untuk minum kopi? Anda harus bekerja untuk pemerintah.
finnw
I / O terikat pada mesin yang lambat. Masih I / O kadang-kadang terikat pada mesin cepat, tetapi lebih merupakan hambatan CPU. Sistem build saat ini tidak suka bekerja pada lebih dari satu lib sekaligus, sehingga beberapa CPU dan I / O ditinggalkan di lantai ketika ada lebih sedikit dari 8 file yang tersisa untuk dikompilasi dalam setiap sub proyek yang diberikan. Sedangkan untuk kopi, saya bisa meminumnya lebih cepat, tetapi saya mencoba membatasi asupan saya, jadi jika saya meminumnya lebih cepat saya akan memerlukan aktivitas waktu idle lainnya.
Garis
3

Menariknya, saya bekerja di startup di mana kami akhirnya melakukan ini. Saya pikir itu benar-benar bekerja dengan cukup baik, tetapi hanya karena situasi khusus kami berada. Itu adalah toko mod_perl di mana kelas auto-reload sebenarnya bekerja dengan benar. Semua pengembang menggunakan vim sebagai IDE pilihan mereka (atau menggunakan beberapa perangkat lunak pengeditan jarak jauh). Hasil akhirnya adalah sangat sedikit waktu (jika ada) yang hilang menunggu kode untuk dikompilasi / dimuat ulang / etc.

Pada dasarnya, saya suka ide ini IFF ada dampak yang dapat diabaikan pada siklus pengembangan untuk semua pengembang, dan itu hanya berdampak pada operasi runtime kode Anda. Jika kode Anda tetap dikompilasi, preprocessed, dll, maka Anda menambahkan waktu untuk "memperbaiki bug; menguji; selanjutnya" loop yang sedang dikerjakan pengembang.

Dari sisi interpersonal, orang tidak pernah dipaksa untuk menggunakan server yang lambat, tetapi jika Anda menggunakan server yang lambat, Anda tidak perlu melakukan pemeliharaan atau pengaturan Anda sendiri. Juga, pengaturan ini ada sejak awal, saya tidak bisa membayangkan mencoba menjual ini ke tim pengembangan yang sudah mapan.

Setelah membaca ulang pertanyaan awal Anda, terpikir oleh saya bahwa satu hal yang terus-menerus menakutkan saya adalah lingkungan pengembangan yang berbeda dari lingkungan produksi. Mengapa tidak menggunakan VM untuk eksekusi kode yang Anda dapat melumpuhkan untuk runtime tanpa mempengaruhi workstation dev? Akhir-akhir ini, saya telah menggunakan / mencintai VirtualBox.

pengguna6041
sumber
3

Saya akan melawan tren di sini juga.

Anekdot: Saya bekerja di sebuah perusahaan pengembangan perangkat lunak Belanda yang memutakhirkan 286 komputer menjadi 486-es (ya, saya setua itu). Dalam beberapa minggu, kinerja semua perpustakaan internal kami turun 50% dan bug meningkat ... Sebuah penelitian kecil menunjukkan bahwa orang tidak lagi memikirkan kode itu sendiri selama proses debugging, tetapi menggunakan kode berturut-turut 'cepat' -> kompilasi -> tes -> perbaiki (kode) dll siklus.

Terkait: ketika saya memulai anak perusahaan untuk perusahaan yang sama di AS, saya akhirnya mempekerjakan programmer Rusia karena mereka terbiasa dengan PC dengan fitur yang lebih sedikit / daya yang lebih sedikit dan coders yang jauh lebih efisien.

Saya menyadari ini adalah waktu yang berbeda, dan sumber daya jauh lebih langka daripada saat ini, tetapi tidak pernah berhenti membuat saya takjub bagaimana, dengan semua kemajuan yang telah dibuat di bagian depan perangkat keras, hasil akhirnya tampaknya bahwa setiap langkah ke depan adalah dinegasi oleh pemrograman sloppier yang membutuhkan spesifikasi minimum lebih tinggi ...

Oleh karena itu ... Saya merasa programmer harus dipaksa untuk menguji aplikasi mereka pada mesin yang tidak melebihi daya komputasi 'Rata-Rata Joe' dan spesifikasi perangkat keras.

John SMythe
sumber
7
Keynote di sini adalah "test", Sistem live tidak harus memuat IDE yang gemuk, jalankan back-end secara lokal daripada pada perangkat keras khusus, jalankan mail, kantor dll. Anda memerlukan mesin kelas atas hanya untuk memunculkan dev lingkungan di sebagian besar bahasa saat ini.
Bill Leeper
3

Perangkat keras lebih murah daripada waktu pengembangan.

Kebanyakan kemacetan ada di database bukan di PC klien, tapi itu tidak memaafkan pengujian pada mesin yang lebih lambat daripada pengembang. Gunakan alat pengujian untuk menguji optimasi.

Brian
sumber
3

Benar-benar tidak. Berikan kepada Programmer Anda uang laptop terbaik yang dapat dibeli, keyboard pilihan mereka, banyak layar besar, kantor pribadi, tanpa telepon, minuman ringan gratis, semua buku yang mereka inginkan (yang relevan), perjalanan tahunan ke konferensi teknologi utama dan Anda akan mendapatkan hasil yang bagus. Kemudian uji pada kombinasi perangkat keras / lunak / browser / bandwidth batas atas dan bawah.

addictedtoswdev
sumber
2

Ini adalah pemikiran yang menarik (memberikan mesin lambat mungkin akan membuat mereka lebih mengoptimalkan).

Namun, solusinya dibingkai dengan cara yang lebih baik - berikan waktu respons dalam persyaratan untuk program, dan miliki mesin low-end yang tersedia untuk pengujian.

Juga, jika Anda memiliki kompiler / bahasa yang benar-benar jagoan, ia mungkin dapat menemukan berbagai cara untuk menghasilkan kode dan memilih yang terbaik. Itu hanya akan terbantu oleh komputer yang lebih cepat.

Paul Nathan
sumber
2

Yang lain merespons bahwa umumnya Anda ingin pengembang memiliki mesin cepat. Saya setuju. Jangan melewatkan RAM - Anda ingin sebanyak mungkin dalam memori - beberapa proses pembuatan sangat berat pada penggunaan disk.

Hal yang Anda mungkin ingin pertimbangkan untuk menyingkirkannya adalah antivirus pada drive yang dibuat! Itu hanya melambat dan bisa menjadi faktor pelambatan yang sangat kuat.

Anda mungkin ingin membiarkan pengembangan berkembang di Linux jika memungkinkan. Alat yang ada jauh lebih baik untuk semua jenis tugas tambahan (hanya ambil sesuatu dalam file, dll). Ini juga menghilangkan anti-virus.

pengguna1249
sumber
Jangan lupa manfaat hard drive cepat: codinghorror.com/blog/2009/10/…
Jim G.
2

Macbook Pro saya di tempat kerja sudah berumur beberapa tahun. Antara Linux dan Windows (untuk menguji keanehan IE) vms serta beberapa browser web dan terminal terbuka, roda pemintalan OSX banyak muncul. Tebak apa yang saya lakukan ketika berputar, saya duduk dan menunggu. Dalam hal ini, mesin yang lambat menghasilkan produktivitas yang lambat.

Thierry Lam
sumber
2

Untuk banyak aplikasi masalahnya adalah membuat pengembang untuk menguji dengan set data dunia nyata sebelum mereka "selesai." Untuk aplikasi interaktif, mesin uji baseline / VM akan diperlukan.

pengguna6043
sumber
2

Saya bekerja pada mesin Windows95 yang lambat, dan memungkinkan saya secara efisien untuk menulis kecerdasan buatan MindForth di Forth dan di JavaScript.

Mentifex
sumber
2

Menanyakan kepada programmer apakah programmer harus mendapatkan perangkat keras yang baik seperti bertanya kepada seorang pria gemuk apakah dia suka makanan. Saya tahu ini adalah pertukaran subjektif, tapi tetap saja ... apakah pertanyaan ini layak ditanyakan kepada kami? : P

Yang mengatakan saya tentu saja setuju dengan mayoritas: TIDAK .

Matius Baca
sumber