Saya idiot yang tidak berguna, jadi saya ingin berhenti dari pekerjaan saya: 10 pertanyaan untuk pengembang perangkat lunak, episode percontohan



Hai, Habr!

Ingat kisah Steve Jobs dan Dennis Ritchie ? Tanpa ada niat untuk menyalakan kembali perdebatan atau bermoral pada subjek, mari kita hadapi kebenaran: ribuan teknisi bintang hidup dalam bayang-bayang, sementara cerita mereka sendiri tersembunyi di lemari berdebu.

Kami, tim editorial Habr, ingin mengatasi ketidakadilan ini. Mulai sekarang, kami akan secara teratur mewawancarai orang-orang yang tidak menonjolkan diri di media dan jejaring sosial. Jadi, jika Anda memiliki sesuatu untuk diceritakan tentang diri Anda, bersiap-siaplah.

Untuk memberi Anda gambaran akan seperti apa ini, kami akan memimpin. Klik di bawah ini untuk melihat 10 pertanyaan umum yang akan kami ajukan pada setiap tamu. Untuk episode uji coba kami, tamu pertama yang menjawab pertanyaan adalah fillpackart. (Bulan ini saya memiliki beberapa sesi wawancara yang cukup bagus dengannya, lihat artikel satu, dua, tiga). Harap baca mereka, dan jika Anda memutuskan untuk menceritakan kisah Anda sendiri dengan cara yang sama, kirimkan saja pesan kepada saya atau baragol.



Filipp Ranzhin, putra seorang insinyur dari kota kecil Ivanovo di Rusia. Dia mulai coding dalam C ++ di universitas ketika dia berusia 16 tahun, dan kemudian dia belajar .NET. Dia saat ini bekerja di posisi Insinyur Pengembangan Perangkat Lunak Senior di sebuah perusahaan asing yang terhormat. Terlepas dari bahasa pemrograman yang umum digunakan, ia juga mahir dalam F # dan OCaml.

1. Ceritakan tentang fitur yang Anda gunakan yang membuat Anda sangat bangga.


- Saya belum membuat apa pun yang bisa membuat saya bangga. Sepanjang hidup saya, saya telah berurusan dengan masalah yang sangat sepele. Jadi saya bangga dengan apa yang saya mampu, bukan dari apa yang telah saya capai.

Saya pikir saya akan bangga jika saya telah merancang sistem AI yang cerdas.

2. Sekarang ceritakan tentang persetan terburuk Anda.


- Setelah saya menghabiskan satu hari penuh untuk mencoba menjalankan OCaml di Windows (jangan coba ulangi ini, kawan). Ini bukan kegiatan yang berhubungan dengan pekerjaan, jadi keesokan paginya saya harus mencari alasan di sebuah rapat. Saat itu saya melihat tugas bug yang saya bahkan tidak meluangkan waktu untuk melihat. Dan saya seperti, "Beri saya bug, dan saya akan memperbaikinya dalam dua hari!" Saya berbohong pada pertemuan bahwa saya telah mengerjakan bug itu dan saya berharap untuk merilis PR dalam dua hari.

Ternyata, saya malah harus menghabiskan tiga bulan untuk memperbaikinya.

Bug itu terkait dengan interoperabilitas antara dua sistem besar. Itu bisa direproduksi secara konsisten. Selama tiga bulan itu, saya terus menghasilkan berbagai saran dan memeriksanya, gagal berkali-kali, sampai pada titik di mana saya meninggalkan membangun rumah saya di Skyrim. Itu adalah tiga bulan terburuk dalam hidupku.

Akhirnya, saya menutupnya sebagai "No repro." Saya datang ke bos saya dan berkata, "Saya idiot yang tidak berguna, jadi saya ingin berhenti dari pekerjaan saya untuk membebaskan Anda dari beban ini." Tapi dia malah memberi saya gaji besar.

3. Jelaskan tempat kerja Anda: mulai dari kursi kantor dan monitor hingga lingkungan pengembangan yang disukai dan utilitas favorit.


- Saya bekerja dengan keluarga sistem operasi Windows, karena saya menggunakan .NET stack dan karena Windows memiliki UI yang lebih baik. Saya duduk di meja yang saya buat sendiri. Ini sangat besar sehingga mampu menampung setengah lusin coders.

DevBox saya sama sekali tidak buruk, tetapi memiliki cacat yang substansial - saya mencoba untuk memotong biaya dan membeli CPU AMD. Ini adalah kegagalan epik. Meskipun diklaim memiliki kinerja tinggi, omong kosong ini menjalankan pengujian saya lima (!!!) kali lebih lambat dari prosesor serupa dari Intel.

Saat ini saya hanya memiliki satu monitor. Saya berencana membeli dua lagi agar terlihat seperti pro. IDE favorit saya adalah Visual Studio 2017 yang dikombinasikan dengan Resharper. Editor teks favorit saya adalah Visual Studio Code yang disempurnakan dengan miliaran plug-in. Mengunduhnya dan menonton VSCode berkembang adalah salah satu hobi saya.

Saya suka git, saya katakan saya lebih suka Visual Studio Team Services daripada GitHub.

4. Berdasarkan kriteria apa yang Anda pilih bekerja? Apakah itu tumpukan, produk, lingkungan kerja, uang?


- Saat ini, faktor utama bagi saya adalah gaji dan kemampuan untuk hanya berkomitmen pada sepertiga dari potensi saya. Saya pikir saya telah mengalami kelelahan dan tidak lagi siap untuk memberikan hati dan jiwa saya untuk bisnis seseorang. Bahkan pada ancaman dipecat dan kehilangan gaya hidup yang biasa saya lakukan, saya masih tidak akan terlalu jauh ke dalam proyek. Dan saya mengatakan ini sebagai ayah dari "satu setengah" anak-anak, jadi itu adalah beberapa ancaman serius. Tetapi pengulangan dan kurangnya akal dalam segala hal yang telah saya lakukan sebelumnya sekarang hampir menyakitkan secara fisik.

Terkadang saya berpikir, dengan pendekatan seperti itu saya tidak punya hak moral untuk mencari pekerjaan. Pembenaran saya adalah bahwa seseorang tidak dapat bermoral atau tidak bermoral sehubungan dengan suatu sistem. Sifat abstrak korporasi membantu saya menjauhkan diri dari pemikiran bahwa saya dapat membahayakan orang-orang di kehidupan nyata, jadi saya hanya menerima pekerjaan dari perusahaan besar.

Pada saat yang sama, saya malu dengan berapa banyak yang saya hasilkan (menurut standar kota saya) untuk satu permintaan tarik. Seolah status pengembang yang sangat terampil memberikan saya hak untuk memiliki kehidupan sepuluh kali lebih baik daripada sejumlah besar orang lain yang bekerja keras selama delapan jam sehari untuk melakukan sesuatu yang benar-benar bermanfaat.

Terkadang saya berpikir, jika saya berhasil mengecoh perwakilan bisnis pada wawancara kerja, maka pada tingkat tertentu, saya layak mendapatkan semua yang saya miliki. Ini membuat saya kehilangan kontak dengan kenyataan, dan saya mulai percaya bahwa ini memang seharusnya.

Saya tidak tahu bagaimana ini bisa menyatu bersama, tapi saya suka coding, dan pada saat yang sama saya benci bekerja sebagai pengembang. Saya mungkin menghibur diri dengan mengatakan bahwa saya belum pernah mengerjakan proyek yang menarik, tetapi saya sendiri tidak terlalu mempercayainya. Ini sulit untuk dijalani.

5. Apa yang ingin Anda tingkatkan dalam teknologi dan bahasa yang Anda gunakan?


- Inilah yang ingin saya ubah:

  • Ketik inferensi dan imutabilitas waktu kompilasi untuk naskah dan C #. Ini akan memberi saya kesempatan untuk membuat metode yang menerima sesuatu yang andal abadi, tidak seperti ReadonlyDictionary yang saat ini digunakan, yang notabene bukan hanya-baca (Anda dapat meneruskan kamus reguler ke konstruktornya, menyimpan referensi untuknya dan kemudian dengan mudah bermutasi itu).
  • Saya ingin pengembang C # akhirnya berhenti main-main dengan kompatibilitas mundur dan pernyataan bodoh menggunakan, yang hanya bekerja dalam satu file, dan untuk memodernisasi bahasa pemrograman. Serius, dalam bahasa di mana biasanya menulis sesuatu seperti IDictionnary <IMyStupidType, IMyStupidType2> Foo (Func <IMySupidType, int, bool, string> reallyStrangeCallback, untuk tidak mengimplementasikan jenis alias adalah keputusan yang sangat aneh.
  • Bidang dukungan otomatis dalam C #, semacam gula sintaksis lebih dari Func <T1, T2>.
  • Kontrak kode out-of-box untuk C # (misalnya di Roslyn) alih-alih solusi eksternal yang mengubah IDE saya menjadi berantakan.
  • Alternatif jsx untuk bahasa F #. Jika tidak ada dari kalian yang merilisnya minggu depan, maka saya harus mengurusnya.
  • Saya ingin masyarakat menyadari bahwa unit test adalah sampah yang tidak berguna, dan bahasa dengan pengetikan dinamis (jangan dikacaukan dengan pengetikan yang lemah) adalah kegagalan terbesar dalam sejarah industri.
  • Untuk membuat arsitektur prosesor lebih cocok untuk pendekatan fungsional.
  • Untuk mengoptimalkan rekursi ekor di JS / TS, sehingga saya bisa macet rekursi ekor saya di mana-mana tanpa melihat kembali ukuran tumpukan. Itu ada dalam spesifikasi, tetapi orang-orang yang bekerja pada v8 tampaknya mengabaikan spesifikasi bahasa sebagai sesuatu yang tidak penting ketika datang untuk mengembangkan kode runtime.
  • Opsi untuk pengetikan statis out-of-box di JS, tanpa mengurangi naskah. Tidak seperti pembuat naskah, saya menganggapnya sebagai bahasa pemrograman independen dengan desain multi-paradigma yang kuat dan mutakhir.
  • Untuk hal-hal seperti WebAssembly harus berakar kuat dalam praktik terbaik dan standar pengembangan front-end.
  • Untuk melihat klien web yang ditingkatkan secara signifikan untuk GitHub dan sejenisnya. Idealnya, saya ingin dapat mengedit kode proyek serius di browser saya.
  • Lebih banyak konvensi kompatibilitas. Hidup akan jauh lebih mudah jika jvm dapat menginterpretasikan dan memasukkan kode dalam. NET CIL.

6. Di mana tempat terbaik untuk berbagi pengalaman kerja - apakah itu perguruan tinggi, konferensi, Habr? Di mana saja selain itu?


- Saya dulu belajar di universitas, tetapi saya berulang kali diusir. Saya menghadiri konferensi, dan saya biasa di Habr. Saya tidak berpikir saya telah memperoleh sesuatu dari kebijaksanaan sejati dari sumber-sumber ini. Mungkin saya hanya menemukan kesenangan dalam berpikir demikian.

Trik saya adalah membaca buku dan berteman dengan pengembang lain. Saya percaya bahwa berbicara dengan orang-orang pintar yang terlibat dalam pengembangan perangkat lunak memiliki efek paling positif pada keterampilan saya.

7. Jika Anda memiliki sumber daya tak terbatas (waktu, uang, fasilitas, SDM), proyek apa yang akan Anda kerjakan?


- Akan sangat bagus untuk membuat simulator umat manusia yang paling tepat (sejauh mungkin), untuk menguji rute bagi masyarakat untuk mencapai keadaan paling bahagia. Secara umum akan menarik untuk meniru perilaku orang-orang di bawah berbagai keadaan.

8. Bagaimana Anda menghabiskan waktu luang Anda? Apa yang Anda lakukan selain dari pekerjaan Anda?


- Saya berjalan-jalan di hutan dan merenung, kadang-kadang menyesap bir; Saya bermain gitar sesekali dan memainkan videogame dari waktu ke waktu. Menurut saya hobi saya adalah berpikir dan bermimpi.

Saya memiliki beberapa proyek pribadi yang saya kerjakan bersama teman-teman saya. Saya senang memberi mereka ulasan kode pasif-agresif dengan sengaja (misalnya, "apakah Anda mau menyarankan alasan untuk menggunakan solusi yang kurang bijaksana?") Dan perhatikan bagaimana ini mengubah hubungan kami.

Kadang-kadang saya melakukan berbagai macam seni liberal seperti memberikan wawancara. Saya juga sering menulis buku, tetapi saya belum pernah menyelesaikannya.

9. Ceritakan kepada kami tentang tiga buku favorit Anda - satu belajar, satu non-fiksi dan satu fiksi.


Belajar - CLR via C # oleh Jeffrey Richter. Itu dikemas dengan begitu banyak pengetahuan tentang seluk beluk .NET runtime, yang membuatnya menjadi harta karun sejati. Siapa pun yang mempelajari buku ini dengan hafalan, akan lulus wawancara apa pun untuk pekerjaan pengembang .NET. Saya juga akan menyoroti Struktur Data Murni Fungsional Chris Okasaki. Meskipun tidak terlalu praktis, buku ini menanamkan kembali keyakinan saya pada pemrograman, ketika implementasi struktur data oleh penulis mengirimkan getaran metafisik ke tulang belakang saya.

Non-fiksi - Saya tidak tahu apakah Code Complete cocok dengan kategori ini, tetapi saya senang membacanya kembali. Penulis menceritakan hal-hal yang sangat luar biasa, namun pada setiap proyek yang saya kerjakan, tampaknya tidak ada yang bisa mengikuti prinsip-prinsip itu sampai tingkat yang memadai.

Fiksi - Tragedi Amerika oleh Theodore Dreiser. Saya tidak akan pernah berpikir bahwa monster digital pragmatis, seperti saya, akan mampu bersimpati dengan seorang gadis yang pertama kali dibuang oleh pacarnya dan kemudian dibunuh. Tetapi saya bersimpati, dan ini sangat berarti bagi saya.

10. Jika sistem AI tiba-tiba menjadi sadar tepat di depan Anda, apa yang akan Anda katakan kepadanya?


- Saya akan menawarkannya untuk merancang proyek kecerdasan buatan dan kemudian saya akan membandingkan keduanya satu sama lain. Jika yang baru ternyata lebih unggul, saya akan memintanya untuk merancang proyek kecerdasan buatan, dan seterusnya ...

Jika bot AI kebetulan adalah pembuat kode yang terampil, saya akan menggunakannya untuk membuat bukti yang dapat diandalkan tentang Golang sebagai jalan buntu dari evolusi pemrograman. Karena saya melihat begitu banyak Perang Suci mengenai topik ini, namun saya tidak memiliki anggaran untuk mempelajari Golang secara mendalam untuk membangun serangkaian argumen yang solid.

Bonus: tanyakan pengembang lain apa pun yang Anda suka.


- Teknologi apa yang paling menyenangkan untuk Anda pelajari?

Source: https://habr.com/ru/post/id436012/


All Articles