Apakah masuk akal untuk mengharapkan bahwa pengembang senior tahu apa pola desain OOP? [Tutup]

26

Saya menyiapkan pertanyaan untuk wawancara kerja untuk posisi pengembangan senior. Pekerjaan itu akan mencakup desain berorientasi objek, dan perangkat lunak yang ada menggunakan pola desain, jadi saya ingin meminta para kandidat untuk menjelaskan beberapa pola desain yang mereka tahu, mereka gunakan, bagaimana mereka menggunakannya, mengapa mereka menggunakannya dan sebagainya. Namun, dalam wawancara sebelumnya ketika saya bertanya kepada pengembang senior dengan setidaknya 5-10 tahun pengalaman tentang pola desain, hampir tidak ada yang pernah mendengarnya. Saya pikir dua dari dua puluh pengembang dapat menyebutkan satu pola desain tunggal (Singleton dan MVC, masing-masing).

Jadi pertanyaan saya adalah: apakah masuk akal untuk mengajukan pertanyaan ini? Atau apakah ini subjek yang tidak jelas sehingga Anda tidak bisa mengharapkan karyawan baru untuk mengenal mereka?

Haruskah pengembang senior memiliki pengalaman sebelumnya dengan pola desain, atau apakah Anda akan mengatakan bahwa pola desain adalah topik yang sangat sederhana sehingga setiap pengembang yang baik dapat mengambilnya selama pelatihan? Jika demikian, pertanyaan apa yang ingin Anda tanyakan untuk mengukur kemampuan desainnya?

Tambahkan Setelah membaca jawaban sejauh ini, saya harus memberikan beberapa klarifikasi:

  • Pekerjaan ini untuk pengembang .NET dengan pengalaman di OOP / OOD
  • Kode yang ada menggunakan nama kelas seperti IParameterGraphVisitordan IStorageFactorydi banyak tempat
  • Bagaimana Anda bertanya kepada orang-orang tentang pengalaman masa lalu mereka dengan desain OO yang mereka buat, jika mereka tidak memiliki kosa kata untuk menjelaskan desain mereka? Itulah yang ingin saya lakukan, dan yang bisa saya kemukakan adalah "tolong Anda menggambar hirarki desain / objek dari proyek terakhir Anda di papan tulis".
nikie
sumber
27
Pola adalah artefak sementara; yaitu, mereka tampil melalui desain yang bagus. Mereka tidak "digunakan". Ada alasan namanya "pola" dan bukan "kendala" atau "persyaratan". Jadi, apakah Anda ingin seseorang dengan pengalaman desain OO, atau seseorang dengan pengalaman pola desain? Yang pertama lebih cenderung tahu lebih banyak dari pada kata kunci.
Michael K
6
@Michael: Setuju. Ada perbedaan antara mengetahui nama dan bisa menggunakan polanya. Saya dibesarkan dengan OO, tetapi jika Anda meminta saya menyebutkan beberapa pola dan menggambarkannya, saya tidak akan melakukannya dengan baik. Saya tidak terlalu peduli dengan apa yang telah diputuskan oleh industri untuk menyebutnya, tetapi saya yakin saya telah benar-benar menerapkan sebagian besar pola yang Anda harapkan untuk dicantumkan.
unholysampler
15
@Michael: Saya selalu melihat pola desain sebagai alat komunikasi. Ini jauh lebih efisien untuk mengatakan "ini adalah pengunjung pohon" daripada "ini adalah antarmuka abstrak yang akan diteruskan ke fungsi yang akan berjalan di pohon dan memanggil metode melalui antarmuka itu sehingga saya dapat memisahkan berjalan pohon dari kode yang melakukan pekerjaan yang sebenarnya ". Tetapi jika Anda tahu cara yang lebih baik untuk mengukur keterampilan desain dalam sebuah wawancara, silakan jawab pertanyaannya! Itu yang saya cari.
nikie
3
Mungkin pendekatan yang lebih baik adalah bertanya kepada mereka bagaimana memecahkan masalah tertentu. Saya tidak ingat nama-nama semua pola desain, tetapi saya tahu cara menerapkannya dan menggunakannya. seperti yang dikatakan @Michael, memiliki pengalaman dan mengetahui kata kunci adalah dua hal yang berbeda.
Tyanna
4
Mengetahui pola desain dengan baik sebenarnya bisa menjadi negatif. Beberapa astronot arsitektur hanya akan berbicara tentang pola desain, dan akan menerapkannya dengan penuh semangat, baik masuk akal atau tidak.
William Pietri

Jawaban:

67

Kemungkinan mereka lakukan mengenal mereka. Mereka mungkin tidak mengenal mereka sebagai 'pola desain'; yaitu, mereka mungkin tidak terbiasa dengan terminologi akademik untuk hal-hal seperti itu. Apa yang Anda lihat sebagai 'mesin negara' mungkin hanya pendekatan akal sehat untuk masalah ke programmer yang lebih tua, lebih berpengalaman. Saya tidak pernah menaruh perhatian pada 'pola desain', misalnya, tetapi ketika saya mengetahui apa itu State Machine, saya harus tertawa karena saya telah melakukan itu selama bertahun-tahun. Siapa yang tahu aku akademis? Saya selalu menganggapnya sebagai keterampilan dasar coding, dan bukan 'pola desain'.

Intinya bukan mengasumsikan pengembang berpengalaman Anda mengetahui istilah buku teks untuk hal-hal; sebaliknya, tanyakan kepada mereka bagaimana mereka akan menyusun kelas, atau bagaimana mereka akan mendekati suatu tugas.

GrandmasterB
sumber
2
Saya telah menggunakan struktur-struktur itu untuk beberapa saat sebelum Gang of Four keluar jadi saya selalu kesulitan mengingat nama yang diberikan.
dietbuddha
10
Literatur pola, saya pikir, cukup eksplisit tentang hal semacam ini - pola tidak dimaksudkan untuk menggantikan desain, mereka dimaksudkan untuk membantu berkomunikasi tentang desain. (Saya akan mengatakan bahwa membantu mengkomunikasikan tentang desain juga membantu desain itu sendiri, tetapi saya rasa itu adalah poin yang berbeda.)
Aidan Cully
5
+1. Itu terjadi pada saya sepanjang waktu. Beberapa waktu yang lalu saya membaca artikel wiki tentang "Injeksi Ketergantungan" untuk mencari tahu mengapa itu tampak begitu populer, hanya untuk mengetahui itu adalah teknik yang telah saya gunakan selama bertahun-tahun, tetapi tidak pernah memberinya nama. Sama dengan "mesin negara".
whatsisname
4
Bukankah itu ekspektasi yang masuk akal bagi pengembang senior untuk mengikuti apa yang terjadi di lapangan, dan mengadopsi terminologi yang banyak digunakan? Pola telah ada selama lebih dari 15 tahun sekarang, jadi Anda bahkan tidak dapat menyebutnya "baru" lagi ...
Péter Török
2
Inti dari pola desain adalah untuk menyediakan bahasa umum bagi pengembang perangkat lunak untuk berbicara satu sama lain tentang solusi untuk masalah yang berulang. Itulah intinya dalam mempelajari pola desain. IMO, itu menunjukkan kurangnya dedikasi terhadap profesi bagi mereka untuk tidak repot-repot belajar sesuatu yang telah berada di garis depan pengembangan Perangkat Lunak OO selama 17 tahun terakhir. Saya pasti memiliki keraguan tentang siapa pun yang tidak dapat menyebutkan nama dan memahami beberapa pola dasar. Tidakkah mereka peduli bahwa mereka tidak dapat memahami percakapan orang-orang karena mereka tidak tahu namanya?
Dunk
25

Harapan Anda cukup masuk akal untuk pengembang OO senior. Siapa pun yang memanggilnya bahwa tanpa mengetahui Pola Desain hanya menunjukkan bahwa pengalaman tidak dibawa secara otomatis oleh tahun-tahun yang lewat :-( Tentu ada banyak pengembang di luar sana yang telah menghabiskan bertahun-tahun atau bahkan puluhan tahun di lapangan, tanpa pernah mendengar tentang desain pola - yang hanya menunjukkan bahwa mereka tidak tertarik untuk mempelajari ide-ide baru, memperbaiki diri mereka sendiri dan mengadopsi praktik-praktik terbaik.

Haruskah pengembang senior memiliki pengalaman sebelumnya dengan pola desain, atau apakah Anda akan mengatakan bahwa pola desain adalah topik yang sangat sederhana sehingga setiap pengembang yang baik dapat mengambilnya selama pelatihan?

Pengalaman IMO sangat penting. Secara teori, pengembang yang baik dapat membaca Pola Desain dalam buku, atau bahkan di Wikipedia, dan memahami konsep dasar dalam 15 menit. Namun, menerapkan konsep dengan benar membutuhkan pengalaman yang sulit. Sangat mudah untuk tergila-gila dengan pola, mencoba menjejalkannya ke dalam setiap kemungkinan kode, l'art pour l'art. Juga mudah untuk menolak mereka dengan mengatakan "pola bukanlah peluru perak, cukup gunakan hal paling sederhana yang mungkin bisa berhasil". Menemukan jalan tengah di antara kedua ekstrem dengan mempelajari kapan dan bagaimana menggunakan pola untuk memecahkan masalah nyata, dan kapan tidak menggunakannya, membutuhkan pengalaman bertahun-tahun .

pertanyaan apa yang akan Anda tanyakan untuk mengukur kemampuan desain mereka?

Dalam konser di atas, saya hanya akan menambahkan pertanyaan ini ke daftar Anda:

  • Apa kelemahan dari pola desain (secara umum, dan yang mereka sebutkan secara eksplisit)?
  • Kapan tidak menggunakannya, dan mengapa?

Memperbarui

@GrandmasterB memiliki poin bagus karena beberapa pengembang mungkin menggunakan pola desain tertentu tanpa mengetahui namanya. Di satu sisi dia benar dalam hal ini adalah terminologi / pertanyaan komunikasi. Namun, sisi lain dari koin adalah bahwa itu memang pertanyaan terminologi / komunikasi :-) Artinya, salah satu manfaat utama dari Pola Desain adalah untuk memberikan kosa kata umum kepada pengembang, sangat meningkatkan komunikasi . (Cobalah untuk menjelaskan ide dasar Adaptor tanpa menggunakan kata itu sendiri, atau sinonimnya "pembungkus" et al!) Jadi betapapun berbakat dan berpengetahuan luas seorang kandidat, tanpa mengetahui terminologi yang diterima secara luas, ia akan memperkenalkan masalah komunikasi di tim Anda.

Péter Török
sumber
2
Saya tidak tahu seberapa umum ini benar, tetapi saya juga mengatakan bahwa menggunakan pola desain dapat menimbulkan masalah komunikasi. Misalnya, ketika sesuatu yang Anda lakukan mirip dengan pola terkenal, tetapi tidak persis seperti itu, maka pengetahuan tentang pola yang ada dapat mengaburkan perbedaan lokal Anda. Atau ketika pengembang di tim Anda tidak sepenuhnya memahami pola, maka mereka dapat menggunakan nama pola dengan cara yang istimewa.
Aidan Cully
1
@Aidan, baik titik ada, meskipun bagi saya ini adalah menyalahgunakan pola. Itu satu cara lagi di mana pengalaman dan praktik sangat diperlukan, yaitu dalam membedakan antara varian dari pola yang sama vs dua pola yang berbeda.
Péter Török
1
+1, siapa pun yang menyebut dirinya senior .NET dev harus dapat menyebutkan setidaknya beberapa nama pola yang eksplisit, dan penggunaannya. Ini masalah komunikasi dan kotak peralatan, jika tidak ada yang lain.
techphoria414
Saya sudah membacanya 3 kali dan masih tidak tahu apakah paragraf pertama adalah sarkasme atau tidak
briddums
@briddums, apa yang membuatmu berpikir itu sarkasme?
Péter Török
10

Seorang senior yang pengembang? Pastinya. Seorang junior harus. Saya berusia 15 tahun, tidak memiliki pendidikan formal tentang hal ini dan bahkan saya memahaminya. Tidak hanya masuk akal untuk berharap bahwa mereka mengenal mereka, itu tidak akan dapat diterima jika mereka tidak mengenalnya. Dengan asumsi mereka tahu sesuatu tentang pemrograman berorientasi objek, yang kemungkinan besar mereka lakukan.

Anto
sumber
14
Agar adil. OO hanya menjadi salah satu metodologi dominan selama hidup Anda. Ada sejumlah orang yang mendapat gelar mereka sebelum Java adalah yang bahasa yang digunakan di perguruan tinggi. Ada banyak orang yang tidak hidup di dunia OO.
unholysampler
2
@ unholysampler: tentu saja, tapi saya pikir ini adalah posisi OOP yang sedang dibicarakan
Anto
1
@unholysampler: Seandainya saya hidup pada waktu itu .. Saya tidak tahan melihat apa pun kecuali Java di uni <_ <
poke
10

Dalam sebuah wawancara Anda harus bertanya apa yang penting untuk diketahui calon untuk melakukan pekerjaan.

Jika mereka harus mengetahui nama-nama pola karena mereka dari Gang of Four maka itu adalah persyaratan yang valid.

Jika, di sisi lain Anda ingin mereka menampilkan pengetahuan kerja yang tepat dari arsitektur program, saya pikir Anda lebih baik memberi mereka masalah dan bertanya kepada mereka bagaimana akan menyusun kode. Jika mereka memberi Anda solusi pola yang sesuai maka Anda memiliki bukti bahwa mereka mengetahuinya, terlepas dari nama yang digunakan.

Setiap kali saya mewawancarai untuk posisi Senior, mereka cenderung lebih "praktis" daripada T&J. Saya ingin menunjukkan keterampilan dan kenyamanan yang jelas dalam pemrograman. Saya juga menginginkan dasar yang kuat dalam konsep-konsep CS yang berarti keterampilan yang lebih umum tentang bagaimana menerapkan konsep-konsep seperti enkapsulasi, algoritma, penggabungan / kohesi, dll. Pengalaman dan keakraban dalam berbagai bahasa dan paradigma.

dietbuddha
sumber
4

Tergantung pada bidang keahlian mereka. Saya tidak berharap pengembang C yang tertanam tahu banyak tentang pola desain. Jika kita berbicara tentang pengembang Java atau .NET, mereka harus terbiasa dengan pola desain, dan terutama bagaimana untuk tidak terlalu terbawa olehnya.

Nemanja Trifunovic
sumber
2
+1 karena tidak terlalu terbawa oleh desain patters :)
Zaky German
Poin bagus. Menambahkan klarifikasi ke pertanyaan. Ini untuk pengembang .NET, dengan pengalaman proyek setidaknya dalam bahasa pemrograman OO.
nikie
4

Dengan asumsi Anda mencari senioritas di OOP jawabannya pasti ya. Pola desain adalah leksikon bahasa OOP.

Lebih jauh lagi, saat ini tidak masuk akal bahwa programmer OOP yang baik dengan pengalaman 10 tahun tidak dapat menyebutkan pola desain, karena pola desain banyak diadopsi dalam API standar, perpustakaan dan kerangka kerja pengembangan.

Sudah bertahun-tahun sekarang saya telah mengajukan pertanyaan ini selama wawancara dan itu adalah showstopper ketika kandidat tidak memberikan jawaban yang memuaskan pada topik.

Paolo Bozzola
sumber
3

Ya, tetapi Anda mungkin harus mendapatkan pemahaman mereka dengan mengajukan pertanyaan desain daripada meminta orang untuk menyebutkan pola desain yang telah mereka dengar. Saya cukup nyaman dengan pola yang dijelaskan dalam PoEAA, GoF dan bahkan beberapa pola pemrograman fungsional dan saya masih tidak berpikir Anda akan belajar lebih banyak tentang pendekatan saya untuk memecahkan masalah dengan meminta saya menyebutkan beberapa pola.

Diberikan pertanyaan seperti "desain saya editor teks" dengan tindak lanjut seperti, "Bagaimana Anda akan mendukung objek yang disematkan seperti gambar? Berani dan miring? Undo?" Anda mungkin pada akhirnya akan cukup mendengar untuk mengenali pola perintah, pola gabungan, pola kenang-kenangan, dan beberapa lainnya bahkan dengan percakapan singkat.

Pola desain ditemukan dan kemudian dideskripsikan sehingga kita akan memiliki bahasa yang sama untuk berkomunikasi keputusan desain.

Sayangnya saya telah bekerja untuk seseorang yang setiap penggunaan pola desain harus dijelaskan dan dibenarkan, bukan karena uji tuntas, tetapi karena dia tidak tahu mereka. Itu tidak menyenangkan. Tetapi sebagian besar pengembang yang serius, secara kebetulan atau desain, mempelajari nama-nama pola OO yang paling umum digunakan, jika tidak ada yang lain, dan sebagian besar pengembang aplikasi perusahaan menghargai garam mereka setidaknya tahu sesuatu tentang pola PoEAA yang paling umum.

Jason True
sumber
3

Masuk akal. Jelas. Perlu. Tidak

Saya bertanya kepada calon potensial apakah mereka tahu pola desain. Ini hanya salah satu dari beberapa kriteria yang harus ditimbang secara keseluruhan. Jangan mengabaikan gambar total.

Ya, banyak pengembang tanpa sadar menggunakan beberapa pola desain, tidak diragukan lagi.

Bukan itu sebabnya saya mengajukan pertanyaan.

Penting untuk diketahui bahwa saya dapat berkomunikasi dengan cepat dan efektif dengan pengembang lain. Saya tidak ingin menghabiskan 20 menit di papan tulis menjelaskan mesin negara hanya untuk menemukan bahwa mereka "menggunakannya sebelumnya, tetapi tidak pernah tahu harus menyebutnya apa". Ini tidak produktif.

Mereka juga membantu dalam proses refactoring. Melihat sekilas kode seseorang dapat dengan sembarangan menerapkan beberapa bentuk pola pabrik, tetapi pola pabrik GoF telah bertahan dalam ujian waktu. Itu sebabnya ini adalah pola pabrik, bukan YET ANOTHER fp (menciptakan kembali roda tidak disukai, Joel pada perangkat lunak memiliki banyak kelemahan yang melakukannya).

Sebuah tim yang menggunakan dan mengakui pentingnya pola desain meningkatkan komunikasi dan produktivitas. Jika tim Anda, sebagai satu unit, tidak menggunakan dp maka mereka kehilangan relevansinya.

P.Brian.Mackey
sumber
2

Berbicara dari pengalaman saya sendiri, saya mengabaikan desain patters untuk sementara waktu. Saya tahu bahwa mereka ada, saya tidak pernah membaca tentang mereka. Setelah saya akhirnya menggigit peluru, saya menyadari bahwa saya telah menggunakan pola desain selama ini dan saya tidak menyadarinya atau saya tidak tahu bahwa solusi desain saya sebenarnya memiliki nama yang sama.

Saya akan lebih cenderung untuk datang dengan serangkaian masalah di mana pola desain tertentu cocok dengan solusinya dan melihat pengembang datang dengan sesuatu yang mirip dengan pola tersebut. Jika mereka melakukannya, bagus. Saya mungkin bahkan lebih cenderung untuk mempekerjakan seorang pengembang yang menggunakan pola desain tanpa mengetahui karena saya melihat banyak pengembang yang memiliki pengetahuan pola desain berusaha untuk mencocokkan solusi ke suatu pola ketika itu tidak sesuai daripada menyadari pola tertentu yang terjadi untuk menyelesaikan masalah dengan baik.

Pemda
sumber
2

Saya pikir pertanyaan yang lebih baik adalah: Diberi nama pola, dan deskripsi pola, misalnya Pola Pabrik dari buku Geng Empat, kandidat harus dapat membuat skenario di mana pola tersebut akan pendekatan yang masuk akal.

Apa namanya
sumber
1

Ada pengembang dengan pengalaman 5-10 tahun dan ada pengembang senior. Mereka bukan hal yang sama sekali. Ya jika Anda mempekerjakan di tingkat senior dan Anda mengharapkan orang tahu dan menggunakan pola desain maka saya tidak akan mempekerjakan orang senior yang tidak terbiasa dengan mereka. Itu akan seperti mempekerjakan spesialis basis data yang tidak mengerti gabungan kiri. Itu hal yang cukup mendasar bagi pengembang senior sejati. Saya mungkin akan mempekerjakan orang junior sekalipun.

HLGEM
sumber
1

Ya memang mereka harus terbiasa dengan istilah itu, dan bahkan harus bisa menyebutkan beberapa pola - tetapi jangan membuat kesalahan dengan membingungkan pengetahuan teoritis dengan pengalaman.

Ada banyak orang yang sebelum wawancara akan memoles pola desain, dan dapat membuat mereka dengan deskripsi singkat - tapi itu hanya teorinya. Ini adalah pengembang senior nyata yang dapat menentukan kapan harus menggunakannya, atau tanpa pengetahuan tentang pola formal akan menyelesaikan masalah dengan cara pola desain klasik.

Cara terbaik untuk memeriksa adalah membiarkan mereka merancang sesuatu di depan Anda dan mengajukan pertanyaan menyelidik .. seorang pengembang senior adalah seseorang yang dapat berpikir secara alami pada tingkat abstraksi. Inilah orang-orang yang "menciptakan" pola desain.

Seperti kelas Peopleware yang berbicara tentang mempekerjakan seorang pemain sulap tanpa meminta mereka untuk menyulap - hanya karena mereka mengatakan mereka tidak bisa berarti banyak .. coba mereka.

Stephen Bailey
sumber
Bisakah Anda memberi contoh masalah? Semua contoh desain yang dapat saya berikan sangat sederhana sehingga tidak diperlukan desain yang menarik, atau ditafsirkan sedemikian rupa sehingga sulit untuk melihat mengapa satu solusi lebih baik daripada yang lain, atau begitu rumit sehingga tidak dapat diselesaikan dalam sebuah wawancara.
nikie
Tidak masalah apa pun itu, itu bisa berupa sesuatu yang sederhana seperti "Rancang saya permainan lempar koin". Tunggu untuk melihat apa yang mereka lakukan dengan itu. Kemudian tambahkan persyaratan untuk mengeksplorasi apa yang Anda minati misalnya: Bagaimana Anda dapat mengubah ini untuk membuatnya: testable | portable | digunakan sebagai layanan | dapat digunakan untuk berbagai UI | berjalan di web ... dll
Stephen Bailey
0

Seperti yang telah dinyatakan, saya juga percaya bahwa boleh saja jika mereka tidak mengingat kata kunci dalam hati. Tetapi karena ini adalah posisi senior, mereka harus tahu kapan menerapkan pola untuk menyelesaikan masalah secara optimal alih-alih menggunakan solusi terburuk. Jadi, beri mereka masalah yang harus dipecahkan dengan menggunakan pola (misalnya, cara membuat objek tanpa mengkodekan kelasnya, cara mengakses elemen objek tanpa memiliki detail tentang implementasinya, dll.) Dan lihat caranya mereka akan menyerangnya.

sakisk
sumber
0

Jelas mereka harus tahu polanya, tetapi belum tentu kata kunci.

Misalnya MVC memiliki banyak alternatif yang sangat mirip seperti PAC, 3-tier. Beberapa tahun yang lalu kata kunci populer lain untuk MVC adalah "Model 2". Saya sebenarnya tahu pengembang yang sangat baik yang tahu pola itu dengan sempurna, tetapi tidak tahu bahwa kata kunci saat ini untuk itu adalah MVC.

vartec
sumber
0

Sangat sederhana: jika Anda menggunakannya maka Anda perlu bertanya kepada kandidat Anda. Jika mereka tahu pola, maka itu harus menambahkan beberapa poin plus; tetapi tidak tahu seharusnya tidak menghalangi mereka, terutama jika mereka menunjukkan keterampilan OOD yang baik. Pengembang yang telah dalam proyek pemeliharaan tidak mungkin tahu banyak tentang pola desain dibandingkan dengan mereka yang telah merancang mereka. itu juga tergantung pada apakah mereka telah diajarkan pola desing di perguruan tinggi. Dalam pengalaman saya, tidak mungkin mereka melakukannya. Sebagian besar universitas dan kursus swasta mengajarkan Anda OOP tetapi tidak OOD. Kemungkinan mereka akan mempelajari DP lebih sedikit.

Secara pribadi, saya belum mempelajari DP sampai proyek saya mengharuskan saya juga. Bahkan kemudian saya menemukan bahwa saya telah menggunakan beberapa pola, setidaknya dengan cara yang sama jika tidak dengan cara yang persis dijelaskan dalam buku. Saya terkejut mengetahui bahwa mereka dikodifikasikan. Jadi cari keterampilan desain yang baik jika mereka tidak tahu DP. Jika mereka tahu DP, besar kemungkinan mereka bagus dalam desain tetapi masih mengujinya. Mereka mungkin baru saja mendengar beberapa kabar tentang DP atau mengetahui dari orang dalam dan hanya mempelajari beberapa pola tanpa menerapkannya.

DPD
sumber
0

Adalah masuk akal bagi Anda untuk mengharapkan orang yang melamar pekerjaan dengan Anda untuk mengetahui (atau mempelajari) hal-hal yang diperlukan dalam slot pekerjaan Anda, terlepas dari apakah mereka standar industri atau tidak. Kalau tidak, Anda mengutuk diri sendiri untuk menjadi biasa-biasa saja. Tetapi berhati-hatilah dalam membuat pengetahuan (atau keterampilan) suatu persyaratan pekerjaan, jika itu tidak benar-benar dibutuhkan.

Katakanlah Anda memiliki dua kandidat dengan latar belakang yang hampir sama, dan satu dapat memberi tahu Anda tentang pola desain, dan yang lainnya tidak. Apa yang akan memberi tahu Anda tentang bagaimana kinerja mereka di pekerjaan?

Anda mengatakan perangkat lunak yang ada menggunakan pola desain. Apakah itu keuntungan? Jika ya, bagaimana caranya? Apakah tujuan Anda bahwa perangkat lunak baru ditulis sesuai dengan pola yang ada, atau bahwa pola baru diperkenalkan? Mengapa?

Walter Mitty
sumber
0

Saya dapat memikirkan pengembang senior yang tidak tahu tentang pola desain dalam situasi berikut:

  1. Hanya ada satu buku tentang pola desain. Ini adalah buku yang membuat mereka populer. Jika orang tersebut belum membaca buku yang satu ini, mungkin mereka tidak tahu tentang pola desain, atau mungkin pernah mendengarnya, tetapi tidak tahu benar untuk apa mereka
  2. Sebaliknya, mereka harus tahu sesuatu seperti uml ....
  3. Menemukan informasi yang baik tentang pola desain dari internet tidaklah mudah. Anda sangat beruntung jika Anda menekan halaman web yang benar yang memiliki pengetahuan pola desain yang baik. Cukup datang ke perangkat lunak setelah 1995 mungkin membuat seseorang tidak tahu tentang pola desain buku, karena buku itu sudah tua.
tp1
sumber
-2

Mengapa pengembang di lingkungan non-OO harus tahu tentang pola desain OO? Saya telah bekerja di toko-toko hanya melakukan Cobol, hanya PL / SQL, hanya Kemajuan 4GL, dll. Prinsip-prinsip desain OO tidak relevan di sana, saya berharap para senior di lingkungan tersebut memiliki pengetahuan yang relevan dengan lingkungan tersebut, bukan untuk desain OO pola.

Mampu mengutip tanpa alasan dari katalog pola juga tidak membuat Anda menjadi pengembang yang baik (pada kenyataannya, menurut pengalaman saya, ini menghasilkan beberapa kode terburuk yang pernah saya lihat). Namun itulah yang Anda harapkan menjadi tanda "pengembang senior". Saya telah bekerja di industri ini selama 15 tahun, namun jangan meminta saya untuk menggambar diagram pola. Saya tidak pernah memberikannya banyak waktu, saya tidak perlu melakukannya. Saya telah memperoleh cukup pengalaman untuk menemukan apa yang berhasil tanpa mencantumkan nama tertentu, dan jika saya memerlukan definisi formal, saya tahu di mana mencarinya (dan ya, saya memiliki buku referensi di perpustakaan pribadi saya). Itulah tanda dari pengembang berpengalaman, bukan pengetahuan hafalan yang diperoleh dari menjejalkan beberapa buku sekolah.

jwenting
sumber
2
Saya tidak melihat relevansi untuk pertanyaan itu. Saya tidak mewawancarai untuk posisi pengembang Cobol dan saya pasti tidak akan meminta orang untuk "tanpa berpikir mengutip pengetahuan hafalan". Satu-satunya poin Anda adalah Anda tidak tahu pola desain.
nikie
unix / linux ditulis dalam 'C', itu penuh dengan Pola OO, dan banyak lagi yang ada di buku gof.
ctrl-alt-delor
2
"Aku sudah memperoleh cukup pengalaman untuk menemukan apa yang berhasil tanpa mencantumkan nama spesifik untuknya." Bagian dari nilai pola desain ADALAH namanya. Jadi Anda bisa mengatakan "mari kita gunakan pola Pabrik" dan kolega Anda segera tahu apa yang Anda maksud. Jika Anda berdua tahu cara melakukan hal semacam itu, tetapi tidak satu pun dari Anda memiliki nama untuk itu, Anda harus menghabiskan lebih banyak waktu untuk menjelaskan sebelum orang lain berkata, "oh, ITULAH." Dan lagi, jika kode tersebut berisi WidgetFactory, seseorang yang tahu pola Pabrik mengerti untuk apa itu.
Nathan Long
Saya setuju dengan Nathan. Inti dari pola desain adalah untuk memberi nama pada solusi umum. Ada beberapa pola desain yang orang tidak akan pernah memikirkannya sendiri. Manfaatnya adalah menetapkan nama yang diterima secara umum sehingga Anda dapat berkomunikasi dengan pengembang lain tanpa masuk ke detail berdarah. Jadi pendapat Anda bahwa Anda tidak perlu meletakkan nama pada suatu pola karena Anda sudah menggunakannya sama dengan ucapan Anda bahwa komunikasi itu tidak penting. Cobalah wawancara dan buat pernyataan "komunikasi tidak penting" dan lihat berapa banyak tawaran pekerjaan yang Anda dapatkan.
Dunk