"Tingkat disiplin diri yang tinggi." Jeffrey Richter tentang cara membuat kode, menulis buku, dan membuat perusahaan sendiri


Hari ini di studio virtual kami, salah satu donor paling terkenal adalah Jeffrey Richter .

Dia saat ini adalah Arsitek Perangkat Lunak Mitra di Microsoft dengan Distributed Cloud Apps & Storage. Dengan kata lain, seseorang yang tahu segalanya tentang Azure Storage.

Faq

Terlalu banyak teks. Tentang apa semua ini?
Untuk membuatnya lebih menyenangkan untuk dibaca, untuk artikel ini kami membuat tata letak yang lebih menarik. Akan ada kepala bicara di sebelah kiri dan teks di sebelah kanan. Jika Anda sedih membalik ke bagian yang menarik, maka di daftar isi ada tautan jangkar. Pemain:


Eugene phillennium Trifonov (masalah non-teknis )
  • Kiat Pengembangan Perusahaan
  • Menggabungkan berbagai jenis kegiatan
  • Apa yang harus dibaca, apa yang harus dipelajari, cara menulis


Oleg olegchir Chirukhin ( masalah teknis )
  • Mengapa Richter belajar JS, Golang, dan Python
  • Haruskah saya terus menulis dalam C ++
  • Evolusi dan masa depan pengembangan pada platform Windows, .NET, dan secara umum
  • Apakah JavaScript akan mengambil alih dunia, adalah jenis keamanan yang diperlukan
  • Sedikit tentang manfaat penyedia cloud
  • Apa yang lebih baik untuk dimiliki - jet pribadi atau helikopter pribadi
  • Bagaimana melakukan semuanya



Mengapa artikel ini termasuk dalam pusat JavaScript?
Hanya untuk mereka yang tertarik dengan pendapat arsitek Azure tentang JS dan posisinya di holivar tentang keamanan jenis. Holivar ini mengalir dari wawancara dalam wawancara , dan dia tidak melihat akhirnya.


Mengapa artikel ini termasuk dalam hub C ++?
Richter awalnya menulis buku tentang C ++. Hanya untuk mereka yang tertarik dengan pendapat arsitek Azure tentang masa depan dan penerapan C ++


Jeff menjadi terkenal kembali di awal 90-an ketika ia menulis sebuah buku tentang cara memprogram Windows 3.1. Bukunya "Programming Applications for Microsoft Windows" menjadi klasik, kemudian dirilis sebagai "Windows via C / C ++" dan telah bertahan beberapa edisi.

Dengan munculnya .NET, ia menulis "CLR via C #" - juga menjadi klasik, juga beberapa edisi. Pada saat itu, dia adalah salah satu pendiri Wintellect dan, secara resmi tidak menjadi bagian dari Microsoft, lebih bebas untuk mengevaluasi. Apa yang mendapatkan reputasi sebagai ahli independen utama di Windows. Ini adalah pria legendaris setingkat Charles Petzold dan Don Box.





Tentang kehidupan: insinyur, penulis, pengusaha


Kami memiliki banyak pertanyaan berbeda untuk Anda, dan saya akan mulai dengan beberapa yang kurang terkait dengan bagian teknis. Apakah saya mengerti benar bahwa Anda secara bersamaan bekerja di Microsoft dan Wintellect?




Saya telah menjadi pemilik Wintellect selama delapan belas tahun dan sampai minggu terakhir. Tiga tahun yang lalu, saya bergabung dengan tim Azure di Microsoft, dan sejak itu saya tidak bekerja di Wintellect. Saya tidak memiliki hubungan yang signifikan dengan Wintellect.




Mengerti Tapi tetap saja, saya ingin mengajukan beberapa pertanyaan tentang pengalaman Anda sebagai pencipta Wintellect. Banyak programmer berkumpul di konferensi kami yang sangat mengenal proses pengembangan perangkat lunak, dan beberapa dari mereka kemungkinan besar berpikir untuk membuat perusahaan mereka sendiri, tetapi mereka tidak akrab dengan sisi kewirausahaan dari masalah tersebut. Anda juga memiliki pengetahuan di kedua bidang tersebut, sehingga akan menarik untuk mendengarkan saran Anda kepada orang-orang yang berencana mendirikan perusahaan mereka.




Anda pasti tidak akan menghabiskan seluruh waktu Anda untuk pengembangan, dan Anda akan belajar banyak tentang bidang-bidang lain: bisnis, manajemen uang, ekonomi, keuangan, perekrutan dan pemberhentian. Anda harus terus-menerus membuat banyak keputusan dan banyak berinteraksi dengan orang-orang: dengan pelanggan, mitra. Anda perlu menemukan opsi yang sesuai dengan semua pihak. Terlepas dari semua ini, di Wintellect saya dapat menghabiskan cukup waktu untuk berkembang, karena kami mempekerjakan orang-orang yang terutama bergerak dalam bisnis. Namun demikian, saya juga harus berpartisipasi dalam sisi kewirausahaan dari masalah ini, dan saya melakukannya dengan senang hati, karena itu adalah pengalaman baru yang menarik. Fakta bahwa saya tidak perlu memikirkan bit dan byte sepanjang waktu membuat saya, menurut saya, orang yang lebih integral. Saya tidak menyesal tentang apa pun.




Apakah Anda menemui kesulitan yang tidak terduga? Atau, sebaliknya, adakah hal yang lebih mudah dari yang Anda harapkan?




Jalan kami benar-benar sangat tidak rata: kadang bisnis berjalan baik, pelanggan baru datang. Di periode lain, semuanya agak berbeda. Ketika kami membuat langganan video WintellectNOW , meluncurkannya dan meraih keuntungan ternyata jauh lebih sulit dari yang kami kira. Pada akhirnya, ternyata, dan sekarang ini cukup berhasil, tetapi butuh sekitar satu tahun lebih dari yang kami harapkan. Selain itu, kejutan terjadi pada karyawan: ada yang bagus, ada yang membahayakan perusahaan, dan hal-hal ini sering diklarifikasi kemudian - mereka tidak terlihat dalam pekerjaan sehari-hari. Secara keseluruhan, harapan kita sering tertipu baik di arah yang baik maupun yang buruk.




Sepertinya saya bahwa banyak pengembang tidak ingin membuat perusahaan mereka sendiri, takut bahwa, menghabiskan waktu untuk bisnis, mereka tidak akan lagi dipandu oleh teknologi terbaru. Apakah sulit bagi Anda untuk tetap up to date dengan sisi teknis?




Ini pertanyaan yang bagus. Menurut saya, solusinya adalah spesialisasi. Ketika Wintellect didirikan, ia memiliki tiga mitra teknis. Kita masing-masing terlibat dalam bidang tertentu. Tak satu pun dari kita yang bisa menjadi ahli dalam semua bidang ini. Area saya adalah pemrograman sistem - sistem operasi, bahasa, runtime, multithreading, dan sejenisnya. Organisasi urusan ini menghemat sumber daya. Jika suatu bahasa memiliki versi baru yang dirilis setahun sekali, melacak hal ini mudah, dan di daerah-daerah yang penting bagi saya - tidak pernah membuat saya kesulitan.




Anda melakukan banyak hal yang berkaitan dengan sisi kewirausahaan: membuat presentasi, menulis buku. Apakah Anda merasa bahwa berbagai bentuk kegiatan ini saling mengganggu, atau sebaliknya? Misalnya, apakah menulis buku dengan presentasi di masa mendatang membantu?




Sangat membantu. Dari semua kelas, menulis buku menyerap banyak waktu dan kegelisahan, memaksa perhatian pada bahasa, tata bahasa, materi pengorganisasian, dan menemukan demonstrasi yang tepat. Ini sangat sulit, dan menulis setiap buku biasanya memakan waktu berbulan-bulan. Tetapi ketika pekerjaan ini selesai, membuat slide sudah jauh lebih mudah, karena sudah ada demonstrasi, dan Anda hanya perlu memeras materi. Selanjutnya, pemahaman tentang struktur internal berbagai sistem memungkinkan saya untuk memberikan saran yang tepat dan memilih teknologi yang tepat untuk menyelesaikan masalah ketika bekerja sebagai konsultan atau di Microsoft dalam tim Penyimpanan Azure. Secara umum, semua kegiatan ini sangat membantu satu sama lain.




Apakah pengalaman menulis Anda mengubah cara Anda membaca buku? Apakah Anda lebih memperhatikan buku karena ini?




Saya pikir saya telah berubah, dan bagi saya sepertinya saya lebih memperhatikan presentasi pembicara lain. Saya melihat apakah pembicara memiliki keterampilan mempresentasikan materi, seberapa akrab dia dengan materi, apakah dia mengulangi apa yang dikatakan orang lain, atau apakah dia benar-benar memahami masalah dengan mendalam. Saya juga memperhatikan hal-hal yang sama dalam buku-buku: apakah buku itu ditulis dengan baik, apakah ada pemahaman teknis yang mendalam tentang masalah ini, rekomendasi langsung yang diberikan di sana, atau apakah struktur internal sistem dijelaskan. Dalam buku-buku saya, saya mencoba menggambarkan operasi sistem, mencatat sisi positif dan negatif, menunjukkan cara menunda kemungkinan masalah, menjelaskan persyaratan kinerja. Tampaknya bagi saya bahwa buku-buku saya dianggap relatif sukses karena fakta bahwa saya memberikan banyak konteks untuk setiap teknologi, dan tidak hanya menunjukkan: lakukan, lakukan secara berbeda. Saya terus mempelajari teknologi baru, jadi saya membaca literatur teknis, menonton video dari YouTube dan dari sumber lain, menghadiri laporan. Tidak cukup bagi saya untuk hanya mengetahui bahwa beberapa teknologi bekerja dengan cara ini dan dengan cara itu, saya perlu menggali lebih dalam ke dalamnya, untuk memahami dalam hal mana hal itu baik dan di mana itu tidak, trik apa yang dimilikinya.




Karena Anda mengikuti buku dan laporan penulis lain, dapatkah Anda merekomendasikan karya atau video orang lain?




Baru-baru ini, saya telah mempelajari Go dan Python sehubungan dengan pekerjaan saya di Microsoft, untuk tujuan ini saya membaca log dari tim Go dan spesifikasi bahasa ini. Saya selalu terkejut bahwa pengembang tidak membaca spesifikasi bahasa yang mereka tulis, karena itu benar-benar menentukan bagaimana bahasa seharusnya bekerja. Sebaliknya, orang membaca buku. Saya sarankan selalu membaca spesifikasinya. Kalau tidak, saya biasanya menonton video pidato di konferensi tentang berbagai teknologi. Sulit untuk memberi saran apa pun di sini - beberapa pembicara lebih baik, yang lain lebih buruk.




Anda tidak perlu memanggil seseorang yang pasti lebih baik daripada orang lain - cukup beri tahu siapa yang Anda sukai.




Saya suka pembicara yang masuk ke rincian pertanyaan. Saya selalu tertarik dengan laporan tentang manajemen memori. Karena manajemen memori, biasanya ada banyak masalah kinerja, yang sangat penting bagi saya. Setiap laporan tentang pekerjaan pengumpul sampah dalam bahasa yang saya tulis akan menarik bagi saya: misalnya, apakah menggunakan kompresi atau tidak dan sejenisnya. Sangat baik ketika laporan berbicara tentang hal-hal yang informasinya tidak dapat diakses - pekerjaan pengumpul sampah biasanya tidak dijelaskan bahkan dalam spesifikasi. Ada pola yang membuat pengumpulan sampah lebih efisien. Semua ini menarik minat saya.





Teknologi dan peralatan


Mari kita bicara sedikit dengan pertanyaan teknis saya yang membosankan. Jeffrey, Anda dari Microsoft. Mengapa Anda perlu Go dan Python jika ada C # yang bagus?




Di Microsoft, saya bekerja dalam tim yang didedikasikan untuk SDK dan alat untuk Azure Storage. Kami sedang mengembangkan SDK untuk Penyimpanan Azure dalam berbagai bahasa - Go, .NET, Python, Java, NodeJS, PHP, Ruby, C, C ++. Kami sedang merestrukturisasi SDK kami dan implementasi pertama dilakukan di Go. Ini adalah perubahan kritis, dan kami tidak yakin bagaimana pelanggan kami akan bereaksi terhadapnya. Pada saat itu, kami tidak memiliki Go SDK, jadi SDK pertama ditulis dalam Go sehingga klien kami tidak akan merusak apa pun. Tetapi setelah menerima umpan balik positif, kami beralih ke Java, karena kami memiliki klien penting yang membutuhkan perpustakaan asinkron Java. Dalam hal ini, saya mulai belajar RxJava dan, secara umum, bekerja lebih banyak dengan Jawa. Secara alami, pengalaman saya dengan C # banyak membantu saya di sini. Kami saat ini dalam bisnis NodeJS, jadi saya saat ini sedang mempelajarinya dan TypeScript. Selain itu, kami mulai porting SDK baru ke .NET - ada kurang bagi saya di sini karena saya sudah tahu itu. Baris berikutnya adalah Python, jadi saya juga mempelajarinya. Ini adalah pekerjaan tim kami - kami menulis SDK untuk semua bahasa ini, jadi aktivitas saya tidak terbatas pada satu bahasa.




Oke, mengerti. Anda dapat menemukan sejumlah besar buku Anda di Amazon. Buku tertua yang saya temukan di sana, "Windows via C / C ++," berasal dari tahun 2007. Tapi Anda menjadi terkenal sebagai penulis buku di tahun 90-an. Bagaimana bisa begitu?




Sebenarnya, saya memiliki buku yang diterbitkan lebih awal, tetapi itu sudah cukup tua, saya tidak yakin apakah itu di Amazon. Itu ditulis untuk Windows 3.0, mis. sekitar tahun 1990 atau 1991. Tetapi sangat sedikit orang yang membelinya, dan sedikit orang yang tahu.




Seperti Windows 3.0.




Ya, itu sudah lama sekali.




Lalu Anda beralih ke C # dan mulai menulis buku tentang itu, kan? Apa, menurut Anda, masa depan C ++? Apakah itu ada? Haruskah kita terus menarik koper C ++, atau lebih baik beralih ke Rust, Go atau sesuatu seperti itu?




Saya tidak berpikir bahwa kita hanya akan memiliki satu bahasa yang tersisa yang akan mengalahkan semua orang. Kekuatan bahasa pemrograman adalah bahwa masing-masing dari mereka melakukan jenis pekerjaan tertentu dengan sangat baik. Setiap bulan saya memeriksa indeks popularitas berbagai bahasa, dan hari ini C dan C ++ tetap sangat luas. Karena tim Azure kami di Microsoft memiliki banyak pelanggan yang menggunakan C dan C ++, kami tidak akan meninggalkan bahasa ini. Selain itu, berkat IOT, ada peningkatan minat baru-baru ini dalam bahasa-bahasa ini. Kita berbicara tentang perangkat kecil seperti termostat yang mengontrol suhu di apartemen Anda. Mereka memiliki sedikit memori dan prosesor yang lemah, dan, selain assembler, C dan C ++ paling cocok untuk mereka. Jadi saya pikir bahasa ini akan terus digunakan untuk waktu yang sangat lama. Sejak kami mulai berbicara tentang Rust - saya memiliki pengalaman dengannya, dan, menurut pendapat saya, ada banyak ide yang sangat menarik. Bisa jadi semacam C / C ++ yang aman. Menurut saya, ini sangat menjanjikan. Namun demikian, menurut saya dia agak tidak dewasa. Tim kami belum menanganinya, tetapi kami terus memantaunya, dan di masa depan situasinya mungkin berubah.




Apakah saya mengerti benar bahwa Anda memiliki SDK untuk C dan C ++?




Ya, kami memiliki C ++ SDK untuk Azure Storage. Beberapa tim lain juga memiliki C / C ++ SDK, tetapi tidak semua, dan mereka belum memutuskan apakah akan membuat mereka di masa depan.




Bagaimana perkembangan industri pengembangan Windows? Seperti yang saya pahami, Anda telah melihat semua yang ada di dunia di sana. Hal pertama yang saya ingat sendiri adalah Delphi. Kemudian C # mendapatkan popularitas, dan sejauh ini saya tidak melihat tanda-tanda penurunan C # /. NET, Java dan sejenisnya. Apakah itu, menurut Anda, langkah terakhir dalam evolusi pemrograman imperatif? Apa kemungkinan sesuatu yang benar-benar baru akan muncul di tahun atau sepuluh tahun mendatang? Katakanlah, bahasa dengan dukungan untuk jaringan saraf?




Saya seorang pria yang terhormat, terutama dibandingkan dengan Anda, dan saya telah melihat banyak hal di industri kami. Saya telah pemrograman selama sekitar 45 tahun. Perubahan signifikan selama bertahun-tahun adalah bahwa sistem operasi menjadi kurang penting. Saya terutama berfokus pada layanan perangkat lunak backend dan alat baris perintah. Saya dulu bekerja lebih banyak dengan GUI, dan buku-buku pertama saya dikhususkan hanya untuk itu: aplikasi GUI dengan menu, kotak daftar, kotak kombo, penanganan acara mouse, kunci, dan sebagainya. Pada titik tertentu, saya berhenti memiliki cukup keberanian untuk itu, karena di daerah ini Anda terus-menerus masuk ke dalam perdebatan yang sangat sengit tentang apakah akan menggunakan listbox atau combobox dalam beberapa kasus, apakah lebarnya harus 100 atau 1000 piksel, warna apa yang seharusnya. Saya muak dengan diskusi ini, jadi pada akhirnya saya berhenti melakukan ini. Sedangkan untuk bahasa, saya pikir kita masih akan memiliki banyak opsi berbeda. Bahasa mati untuk waktu yang sangat lama, bahkan hari ini Anda dapat bertemu orang-orang yang menulis dalam bahasa Cobol, Fortran atau sangat sedikit dikenal. Bahasa baru akan muncul setiap saat - baru-baru ini, Julia telah mendapatkan ketenaran, Clojure telah ada sedikit lebih lama. Bahasa-bahasa baru ini telah menarik perhatian yang signifikan untuk sementara waktu, setelah beberapa menjadi sukses dan yang lain tidak. C # telah datang dengan jalur yang mengesankan, berumur 15 tahun, dan itu masih sangat umum. Menurut pendapat saya, tim .NET dari Microsoft dalam banyak hal menghembuskan kehidupan baru ke dalamnya berkat fakta bahwa mereka menciptakan .NET Core, yang sekarang berjalan di Linux. Jika Anda menulis dalam C #, keterampilan Anda berlaku dalam sejumlah besar skenario yang berbeda. Saya pikir minat pada C # tidak akan melemah selama bertahun-tahun lagi.



Menit periklanan. Jeff akan tiba di konferensi Moskow DotNext 2018 dengan presentasi berjudul "Membangun aplikasi responsif dan terukur" , yang akan berbicara tentang menggunakan IO asinkron untuk membangun sistem yang sangat skalabel (baik pada server dan klien). Dia terbang ke Rusia secara langsung, untuk membuatnya lebih sederhana, tidak setiap hari - ini adalah cara yang bagus tidak hanya untuk mendengarkan laporan, tetapi juga untuk membahas isu-isu terkini secara tatap muka di area diskusi.


Apakah Anda ingin menulis " GNU / Linux Runtime via C #" sekarang ?




Ya saya mau. Menurut pendapat saya, untuk pengembang layanan GNU / Linux karena berbagai alasan lebih cocok daripada Windows - kecuali dalam beberapa kasus. Saya pikir C # adalah bahasa yang bagus. Saya baru-baru berkenalan dengan Java: untuk alasan kebenaran, saya hanya bisa mengatakan bahwa setelah itu saya mulai menghargai C # lebih banyak. Saya sangat suka tipe nilai dalam C #. Kami baru-baru ini bekerja dengan memetakan file ke dalam memori di Jawa, dan tidak bisa menutupnya secara langsung, kami harus menunggu pengumpulan sampah. Beberapa solusi Java tampaknya sama sekali tidak ada gunanya bagi saya. Menurut pendapat saya, C # dan .NET dibuat jauh lebih baik.




Tiga tahun kemudian, kita, orang Jawa, akan memiliki tipe nilai.




Ya, saya tahu, dan Anda memiliki beberapa obat generik ...




"Beberapa" menurut saya adalah deskripsi yang sangat akurat.




Ya, obat generik Anda sedikit aneh. Tetapi Java adalah bahasa yang sangat populer, dan orang-orang menggunakannya dengan sangat produktif. Dia tentu sangat penting. Tapi, menurut saya, dalam. NET beberapa aspek lebih baik. Bahkan jika Anda menambahkan tipe nilai, kami masih perlu memberikan dukungan untuk versi Java yang lebih lama. Jadi tidak mungkin mewujudkan peluang baru ini selama beberapa tahun lagi. Tapi ini bagus: semua bahasa berkembang, peluang baru muncul di dalamnya. Java, .NET, C # - semuanya akan hidup untuk waktu yang sangat lama, terutama dengan mempertimbangkan beberapa perubahan terbaru, seperti .NET Core. Jadi, menurut saya, C # untuk GNU / Linux adalah kombinasi yang bagus untuk layanan penulisan orang.




Tetapi untuk berinteraksi dengan backend, Anda memerlukan UI. Dulu kami hanya memiliki konsol teks, dan kemudian UI muncul, dan ini membuat perangkat lunak jauh lebih fungsional. Dan hari ini ada Elektron dan mesin berbasis JavaScript lainnya, dan setiap siswa dapat menulis antarmuka pada mereka. Apakah Anda tidak takut bahwa di masa depan semuanya akan ditulis dalam JavaScript?




Tidak, kurasa tidak. Pertama, ini adalah masalah kinerja: dalam JavaScript, ia tidak dapat dibandingkan dengan C, C ++, Go, atau bahkan C # dan Java. Lebih jauh, saya tidak bisa membayangkan menulis proyek skala besar tanpa jenis keamanan dalam fase kompilasi. Ketika saya masuk ke dunia bahasa yang aman, saya jatuh cinta padanya pada pandangan pertama. JavaScript saja tidak memberikan keamanan jenis, jadi saya tidak akan menggunakannya dalam proyek besar. Tetapi TypeScript akan menjadi, dan kami sedang menulis SDK baru kami di TypeScript. Ini adalah langkah maju yang signifikan dibandingkan dengan JavaScript biasa. Tetapi saya tidak berpikir bahwa seluruh dunia hanya akan menggunakan satu bahasa untuk satu tujuan. Ini sama sekali tidak masuk akal. Bahkan jika kita berbicara tentang IOT, lingkungan untuk menjalankan JavaScript membutuhkan banyak sumber daya, dan banyak perangkat tidak bisa menyediakannya.




Nah, tidak ada masalah dengan JavaScript. Dimana mereka? Apa masalah utama bagi Anda secara pribadi dan untuk industri secara keseluruhan?




Saya tidak yakin apakah itu terkait dengan bahasa atau sistem operasi. Sistem operasi pada saat ini, pada dasarnya, telah menjadi barang rumah tangga biasa. Mereka digunakan untuk mengirim pesan elektronik dan mengakses Internet. Bagi kebanyakan orang, tidak masalah jika mereka menggunakan Windows, Mac, atau Linux. Bahasa yang kami gunakan saat ini sudah cukup kuat. Kebanyakan bahasa, pada kenyataannya, hanya memindahkan data dari titik A ke titik B. Anda memiliki koleksi, Anda menjelajahinya, memfilter konten - setiap bahasa dapat melakukan tindakan seperti itu. Selanjutnya, kita membutuhkan mesin untuk berkomunikasi satu sama lain. Di sini standarnya adalah TCP, HTTP banyak digunakan, tetapi ada protokol lain. Semua teknologi ini bekerja dengan baik, namun kinerja dapat ditingkatkan lebih lanjut. Menurut pendapat saya, kesulitan paling serius saat ini terkait dengan penciptaan layanan. , , . , , . , , , , . , , , . , , , . Microsoft Azure, , , .




Azure ? ?




. . , , . , , , Azure Storage (, ) CosmosDB, - Amazon β€” . , . . , , , ? . Azure , . , , . , - , , .




. Wintellect , : Β«We don't just build software. We build developers.Β». , ?




Wintellect . , . , , Windows, .NET. , , : , , . . Microsoft , . β€” , β€” . . . , , / . , , , , . , , , . : , (Β«you get out what you put inΒ»). , , , . , .




, , . β€” , , , . ? ? , , , . , . - ? , Β« Β»? : , , β€” .




. , β€” - , - . - β€” . . - , . . , , , , . , , . , - , . , . . , , .




, , , ?




, . , : . . . : - . , , , . , . .




. , ?




, .




- «» , ?




Ya . , , , . . , . , , , . , , - , . - . . . , , . , β€” . , , . , . , , . Wintellect, . , - , . , .




- . - ?




45 , - . , - , . . , . , . , - . , , . β€” ! , .

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


All Articles