7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Interviews

Master pengembang: Addy Osmani

Read Time: 15 mins
This post is part of a series called Master Developers.
Master Developers: John Resig

Indonesian (Bahasa Indonesia) translation by ibnuhadis83 (you can also view the original English article)

Bintang yang cerah di komunitas JavaScript, Addy Osmani telah meroket terkenal tidak hanya untuk hebat JavaScript artikel dan sumber terbuka kontribusi tetapi juga menjadi salah satu pengembang termurah dan didekati.

Blog-nya adalah treasture karun pengetahuan front-end dan sumur-worth kunjungan. Dalam posting ini, kita akan chatting dengan Addy tentang bagaimana ia mendapatkan kaki basah dalam JS dan membawa beberapa tangguh topik yang berhubungan dengan karyanya dalam hubungan pengembang di Google.


Q Anda mengambil JavaScript seperti ikan air. Bagaimana akan Anda mendapatkan begitu berakar dalam dunia JS?

JavaScript akan memainkan peran besar dalam membuat ini mungkin.

Aku menulis beberapa punggungku JavaScript pertama ketika Netscape Navigator browser dominan. Pembangunan front-end dinamis hanya perlahan-lahan mulai menjadi lebih populer saat itu, tetapi gagasan menjadi mampu menulis sesuatu dengan hanya HTML/CSS/JS dan memilikinya bekerja di mana-mana adalah kuat. Saya tergila-gila pada gagasan itu dan telah sejak. Beberapa kreasi saya pertama adalah hal-hal kecil yang Anda akan tertawa pada hari ini - kalkulator, password generator, tidak ada yang terlalu luar biasa.

Sebagai penggemar bahasa, aku suka bahwa JavaScript adalah berbasis prototipe dan lemah diketik, jadi saya memutuskan untuk terus belajar bersama bahasa lain seperti C++. Kembali pada awal dari 2000, aku mencoba menjembatani bahasa dengan menulis juru sedikit di atas SpiderMonkey (Mozilla mesin JavaScript), yang saya menulis logika untuk aplikasi desktop saya di JS dan menentukan komponen UI menggunakan C++. Itu ide konyol, tapi aku belajar banyak tentang internal mesin JavaScript dalam proses.

Saya menghabiskan banyak waktu untuk membangun situs kecil untuk hobi, tapi ketika saya masih di tahun terakhir saya di sekolah tinggi, saya memutuskan untuk benar-benar terjebak ke dalam dunia internal browser. Saya menulis mesin rendering ringan, dasar HTML 4.01/CSS 2.1 parsers dan dibungkus semua bagian ini ke browser kecil saya sendiri. Proyek ini adalah mimpi buruk untuk mendapatkan kerja terpercaya, sebagian karena bagaimana lax pengembang web dengan penyesuaian standar dalam halaman mereka - itu lucu sedang di sisi lain pagar sekarang! Tantangan yang lebih besar adalah spec-kepatuhan, rendering tabel besar dan menjaga kinerja, sementara loading video plugin (siapa pun ingat baik ol ' ActiveX?).

Aku terus belajar dan menggunakan JavaScript sebagai freelance web developer sementara di perguruan tinggi, perlahan-lahan menulis lebih kompleks situs dan bermain-main dengan Dojo. Tidak, namun, sampai aku mendapat undangan untuk GMail pada tahun 2006 yang terpikir olehku bahwa browser akan menjadi berikutnya platform untuk membangun aplikasi kaya. JavaScript akan memainkan peran besar dalam membuat ini mungkin dan saya memutuskan untuk berjalan menjauh dari pengembangan aplikasi desktop secara permanen.

Sejak itu, aku sudah berusaha untuk terus belajar dan dimana saya bisa, mendorong masyarakat front-end maju melalui tulisan saya dan kontribusi ke open-source. JavaScript adalah hampir di mana-mana hari ini, dan itu salah satu alasan mengapa saya cinta bahasa. Jika saya ingin mengajarkan cara author JavaScript salah satu anak-anak saya, saya bisa pop-terbuka browser saya DevTools dan menunjukkan kepada mereka. Langkah-langkah tambahan kompilasi tidak diperlukan - ada sesuatu yang benar-benar khusus tentang hal itu.


Q Anda menghasilkan banyak konten; Saya yakin orang-orang bertanya-tanya bagaimana Anda melakukannya. Anda dapat berbagi rahasia Anda untuk tidak hanya menghasilkan konten ini, tetapi benar-benar memahami apa yang Anda tulis tentang?

Jika Anda melompat ke topik apapun non-sepele dengan pola-pikir itu, hal ini diperlukan untuk memecahnya menjadi langkah-langkah sederhana, lebih mudah dicerna

Rahasianya adalah bahwa saya menganggap diri saya untuk menjadi agak bodoh. Benarkah. Jika Anda melompat ke topik apapun non-sepele dengan pola-pikir itu, diperlukan untuk memecahnya menjadi langkah-langkah sederhana, lebih mudah dicerna dalam rangka untuk membuat semua kemiripan apa pun masuk akal.

Ini adalah perspektif ini yang saya pikir membuat saya merasa menulis diakses - saya mencoba untuk memahami konsep-konsep tersebut atau alat yang dapat awalnya merasa sangat menakutkan untuk pengembang rata-rata. Hal ini penting untuk dapat menerapkan ke artikel dan terutama dokumentasi. Jadi, tetap sederhana. Ini membantu membuat artikel yang lebih terfokus. Bagaimana menghasilkan begitu banyak konten sementara memahami materi?. Yah, aku membuat pemahaman prasyarat.

Pertama melakukannya, kemudian melakukannya dengan benar, kemudian melakukannya lebih baik.

Einstein memiliki kutipan besar ini: "Jika Anda tidak bisa menjelaskannya cukup, Anda tidak mengerti itu cukup baik" dan itu benar. Anda tidak dapat mengajar tentang atau klaim kerangka, alat, atau praktek terbaik, kecuali jika Anda benar-benar telah meluangkan waktu untuk menggunakan sendiri. Menemukan kali ini lebih mudah dalam peran saya saat ini, tetapi kembali pada hari-hari saya sebagai seorang insinyur 9-5, saya akan menghabiskan waktu selama sarapan dan makan siang yang aktif menggunakan apa saya akan kemudian menulis tentang pada akhir pekan.

Menemukan waktu untuk mendapatkan semua yang dilakukan adalah selalu sebuah tantangan. Selama beberapa tahun, saya memiliki mantra ini yang saya mencoba untuk menerapkan untuk setiap tugas -"Pertama melakukannya, kemudian melakukannya dengan benar, kemudian melakukannya lebih baik"- it's all about menetapkan tujuan yang realistis untuk diri sendiri dan iterasi cepat segera setelah Anda memiliki sesuatu yang berfungsi. Ini tidak akan artikel paling fasih tertulis, atau kode paling indah, tetapi itu adalah dasar sederhana Anda dapat membangun pada.

Anda kemudian dapat berbagi iterasi pertama ini dengan teman-teman Anda dan mendapatkan merasakan Apakah Anda akan arah yang benar atau gagasan adalah berharga untuk dikejar. Bagi saya, yang membuat banyak lebih masuk akal daripada menghabiskan minggu pada rancangan atau prototipe sebelum meminta masukan.


Q Anda berada di AOL sebelum. Apa perbedaan budaya ada versus Google, dan bagaimana hal itu telah berdampak pandangan Anda pada pengembangan perangkat lunak?

There's something special about being a part of a company with such high standards.

AOL dan Google adalah perusahaan dengan hebat tim teknik, dan salah satu refleksi saya budaya tidak tentang kelompok-kelompok tertentu, lebih observasi yang umum.

Budaya rekayasa di Google adalah sedemikian rupa sehingga kita peduli banyak tentang Polandia dan pengiriman hal-hal ketika kita merasa bahwa mereka tepat. Ada sesuatu yang khusus tentang menjadi bagian dari sebuah perusahaan dengan standar.

Di AOL, saya bangga dari salah satu produk atau aplikasi yang kami menyelesaikan, tetapi karena sifat cepat dari bisnis dan kompetisi, menunda peluncuran atau rilis Polish tidak selalu layak. Saya pikir itu menjadi kenyataan bagi banyak bisnis, meskipun keinginan mereka mungkin harus mengubah budaya itu.

Kapan hal ini dimungkinkan untuk penundaan rilis, seperti Google mengatakan, mendapatkannya "benar" saya pikir hal itu dapat membuat dunia yang berbeda untuk pengguna Anda kesan pertama produk Anda.


T apa yang Anda pikiran pada keadaan masyarakat JavaScript dan arah kelompok TC39 mengambil sehubungan dengan ES6?

Saya senang dengan arah TC39 telah mengambil selama beberapa tahun.

Saya senang dengan arah TC39 telah mengambil selama beberapa tahun, yang sebagian telah dibantu dengan keterlibatan Rick Waldron dan Yehuda Katz dari jQuery proyek. Mereka sudah membayar dekat memperhatikan pola perpustakaan pengembang telah sangat bergantung pada, dan menyelidiki bagaimana ini bisa lebih baik diatasi dengan menggunakan platform primitif. Saya tidak akan mengomentari ES6 khusus, tapi aku menanti-nantikan untuk melihat modul, kelas, 'biarkan' dan Object.observe() tersedia lebih luas.

Di komunitas JavaScript: kita di tempat yang baik tetapi satu hal yang saya berharap kita secara kolektif akan lakukan adalah menghabiskan lebih sedikit waktu menciptakan kerangka kerja baru dan lebih banyak waktu berinvestasi dalam upaya untuk meningkatkan solusi yang ada. Saya pikir itu fantastis bahwa pengembang menghabiskan waktu belajar bagaimana untuk memecahkan masalah mereka sendiri - ini adalah salah satu cara terbaik untuk belajar hal baru - tetapi jika percobaan, membuat yang jelas sehingga pengembang lain tidak mengharapkan Anda untuk menjaga proyek. Hal semacam itu hanya menambah kebisingan, jadi harap dukungan tetap diingat ketika melepaskan hal-hal!.


Q banyak orang Lihat Google forking WebKit sebagai bermain untuk memungkinkan mereka untuk menanamkan Dart ke Chrome. Apakah Anda melihat Dart yang Google ideal atas JavaScript?

Salah satu mitos besar luar sana adalah bahwa hal itu ada untuk mengganti JavaScript.

Aku benar-benar super penasaran untuk mempelajari lebih lanjut tentang tujuan Dart telah ketika saya pertama kali bergabung dengan Google. Salah satu mitos besar luar sana adalah bahwa itu ada untuk mengganti JavaScript, tetapi ternyata bahwa ini tidak benar. DART ditargetkan lebih akrab dengan Java, C++, C#, pengembang yang sedang berusaha untuk membangun aplikasi web kinerja tinggi; dan jadi itu, memiliki harapan tertentu di sekitar perkakas dan bahasa mereka. Saya pikir itu adalah alasan yang sah untuk sesuatu seperti Dart ada.

As a company, both JavaScript and Dart are technologies that we believe in and invest in. We participate in TC39, working on the future of JavaScript and also continue work on V8, the fast JavaScript engine. The Chrome engineers continue to work to push the web forward with new specs like Web Components. Meanwhile, the team that originally built V8 is now building the Dart VM.

Back to your original question - I believe forking WebKit was a lot more to do with the divergence of the multi-process architecture between both projects than trying to embed Dart into Chrome. Dart's a separate open-source project with it's own goals and you can still get Dartium today (the build of Chromium using the Dart VM).


Q Now that Blink is in the works, how do you think this help the web, and what do you feel are some new challenges that web developers will face with yet another rendering engine to think about?

When I first heard the news about Blink, I was concerned that we'd now have another browser to support.

The reality, however, is that there have already been so many differences between the various WebKit ports that this isn't going to negatively impact how you develop and test.

In fact, Blink allows us to give developers more of the tools, features and compatibility they need to get the most out of the web as a platform. Long-term it's going to let us prioritise features that will ease building the next generation of web apps and in the same way that V8 gave us a way to speed up JavaScript, I think Blink is going to let us innovate in ways that will benefit the whole platform.


Q Google is in an interesting position, where they're heavily vested in both native apps (Android) and web experiences. As you do developer relations at Google, how do you balance the business directives and priorities for both ecosystems?

We get caught up in the debate about native vs. web quite often these days, but don't talk as much about the need to put our users first. They're fokus. Ada banyak kasus di mana Anda dapat memberikan pengalaman yang menarik untuk web di desktop dan mobile dan itu akan bekerja fantastis. That said, there are others, where either the platform or mobile browsers still need work. As a business, you often need to make a call on what makes the most sense for your users. I think that, at present, it makes a great deal of sense to offer developers the best platforms possible for making a call on native vs web, and that's what we do, via Android and Chrome for Mobile.


Q Stripping away specific web technologies, what should developers be thinking about at a higher level when it comes to the future of the web?

Reusable components.

Reusable components. Traditionally, a lot of us have developed applications quite vertically, spreading a single concept (whether it be logic or UI) across a few different parts of the project. Not only does this make it harder to maintain the idea but it also makes it difficult to extract and reuse the idea in future applications without a great deal of effort. It also decreases our chances of being able to share the component with others.

Tanpa merujuk pada teknologi tertentu, kami sedang bekerja pada membuatnya lebih mudah untuk mendefinisikan dan paket sampai komponen di sisi platform web, dan sekarang adalah waktu yang tepat untuk mulai berpikir tentang bagaimana aplikasi Anda sendiri mungkin menulis, jika mereka dipecah menjadi spesifik komponen.


Q Staying on this track, what are the key technologies, end-to-end, that you feel are making the most impact to pushing the web forward? Why?

The front-end is seeing a revolution in tooling at the moment with an increasing number of developers starting to use Grunt and explore workflow tools around it like Yeoman. Developers are paying more attention to what they can automate and I think that this will help facilitate more time spending building better apps and less time on those manual processes in between.

angularangularangular

Kembali ke komponen ide, saya berpikir bahwa antara komponen-komponen web dan manajemen paket front-end kami memiliki kesempatan besar untuk benar-benar mengubah cara kita mengembangkan untuk web. AngularJS (dan sudut arahan) telah melakukan pekerjaan yang besar memperkenalkan kembali gagasan reusable blok fungsi dan hal-hal yang benar-benar mencari di sisi manajemen paket sesuatu, melalui Bower.

Menulis sebuah aplikasi dengan daftar Anda ingin membuat sortable? Hebat. Dengan menekan tombol pada baris perintah dan Anda punya itu. Ingin membuat item dalam daftar itu bertahan ketika Anda sedang offline? Tidak ada masalah. Penekanan tombol lebih sedikit dan Anda menggunakan paket pengembang lain pernah menulis untuk mendapatkan kemampuan itu. Ingin mengubah daftar Anda menjadi komponen dapat digunakan kembali siapapun dapat menggunakan? Itu mudah. Itu adalah masa depan kami sedang bekerja untuk.


Q Yeoman adalah bayi baru Anda. Mengapa Apakah Anda merasa perlu untuk memutar sebuah usaha ambisius ketika ada proyek tampak akan mengisi kebutuhan?

yeomanyeomanyeoman

Kita beruntung memiliki kekayaan berguna alat yang kita miliki di front-end hari ini â €"alat-alat yang menghemat waktu dan membuat hidup kita hanya sedikit lebih mudah. Abstraksi seperti Sass dan CoffeeScript, kerangka kerja seperti Twitter Bootstrap, loader modul seperti RequireJS, daftar tidak pernah berakhir MVC dan unit pengujian Perpustakaan€ ¦some akan mengatakan kami sedang manja untuk pilihan dan menarik melihat berapa lama dapat mengambil Anda untuk mendapatkan proyek dimulai.

Apakah Anda masih manual menyegarkan peramban Anda setiap kali Anda membuat perubahan untuk aplikasi Anda?

Seperti alat-alat ini bekerja sangat baik pada mereka sendiri, ini bisa menjadi proses yang membosankan membuat mereka untuk bekerja sama, terutama jika Anda memiliki untuk mengumpulkan alur kerja dan membangun proses dimana mereka semua mengkompilasi dan mendapatkan dioptimalkan ringkas. Bahkan jika Anda berhasil mendapatkan proses membangun padat di tempat, Anda sering meninggalkan harus menghabiskan banyak waktu untuk menulis kode boilerplate untuk aplikasi Anda.

Bahkan kemudian, Anda harus bertanya pada diri sendiri seberapa baik ini cocok dengan alur kerja sehari-hari Anda. Ada beberapa langkah-langkah kecil yang kita berulang-ulang dilakukan sementara mengembangkan yang dapat lebih mudah akan menyerahkan ke tooling. Apakah Anda masih manual menyegarkan peramban setiap kali Anda membuat perubahan ke aplikasi Anda untuk melihat bagaimana mereka terlihat? Masih berusaha untuk mencari tahu apakah Anda menggunakan versi terbaru dari semua dependensi Anda? Bertanya-tanya jika ada sesuatu yang memungkinkan Anda mendapatkan dengan coding dan lupa tentang banyak pekerjaan kasar?

Kami juga, itulah sebabnya kami mulai melihat apakah kita bisa memberikan pengembang solusi untuk banyak masalah umum ini. Kami mencoba memecahkan mereka dalam gratis, open-source proyek kami baru saja merilis disebut Yeoman. Yeoman's tagline resmi adalah bahwa kami tidak â €œrobust dan dogmatis tumpukan sisi klien, terdiri dari alat dan kerangka kerja yang dapat membantu pengembang dengan cepat membangun menarik web applicationsâ€.

Praktis, kita serangkaian alat dan tugas-tugas yang membantu Anda mencapai mengotomatisasi beberapa tugas yang lebih membosankan dalam pembangunan front-end. Kami sedang terdiri dari yo (perancah alat), mendengus (membangun alat) dan bower (untuk manajemen paket).

bowerbowerbower

Jika Anda menemukan bahwa Anda masih menulis boilerplate kode untuk aplikasi Anda, secara manual mengelola dependensi untuk aplikasi Anda atau menyusun sistem build Anda sendiri untuk bekerja dengan alat yang Anda suka, Anda mungkin menemukan Yeoman cara yang baik untuk menyelamatkan diri beberapa sakit kepala.


Q ketika Anda meluncurkan Yeoman, Windows awalnya tidak didukung. Apa yang Anda menghadapi mendukung tantangan, dan bagaimana komunitas pengembang Windows membantu dalam situasi seperti ini?

Komunitas pengembang Windows dapat benar-benar membantu kami di sini.

Menciptakan alat yang bekerja baik lintas-platform dapat tarian yang halus. Salah satu tantangan awal dengan dukungan Windows adalah bahwa banyak tim kami yang digunakan untuk menggunakan * nix sistem dan memiliki akses ke homebrew/apt-get. Kami tidak namun seperti fasih dalam menggunakan PowerShell atau Chocolatey (Windows PowerShell berbasis setara dengan apt-get) dan dibutuhkan waktu untuk memahami seberapa baik solusi ini dibandingkan dengan alat-alat yang kami telah tersedia di tempat lain.

Kemudian mengambil waktu untuk menemukan (atau mendapatkan) Semua paket kami diperlukan sampai pada Chocolately yang kita diperlukan git, hantu, memilih dan banyak lainnya. Situasi di sana sangat membaik sejak rilis pertama kami dan Windows secara resmi didukung dengan Yeoman menggunakan petunjuk di homepage kami.

Jendela komunitas pengembang benar-benar bisa membantu kami di sini dengan advokasi untuk adopsi lebih luas alat seperti Chocolately dan membantu kita mencapai paritas dengan alat seperti apt-get. Selain itu mereka telah fantastis dan kami benar-benar menghargai bantuan dan dukungan komunitas pengembang Windows telah menawarkan kita sepanjang jalan kita untuk kompatibilitas.

Aku harus memberikan panggilan ke Sindre Sorhus, Mickael Daniels dan Paul Irlandia, semua yang benar-benar membantu meningkatkan upaya Windows di awal hari.


Q sepanjang baris, saya punya pertanyaan berdasarkan benar-benar egois-motivasi, karena saya menggunakan Windows. Bagaimana * nix dan Windows pengembang berkolaborasi lebih efektif sehingga semua orang dapat berkontribusi?

Saat ini, ada banyak alat-alat pengembangan (fantastis) yang sedang ditulis mana yang tidak hanya * nix, tetapi Mac spesifik karena membuat mereka lintas-platform memiliki biaya pengembangan itu sendiri dan overhead. Saya akan senang melihat lebih banyak diskusi terbuka dan pengembangan alat-alat yang dapat bekerja di mana-mana, tapi ini tidak dapat dilakukan tanpa bantuan dari pengguna.

Jika ada alat yang Anda inginkan untuk Windows yang Anda hanya melihat pada Mac, silakan menjadi vokal tentang itu - bahkan lebih baik, kirimkan permintaan tarik!

Mencoba untuk mencari tahu apa yang akan dibutuhkan untuk membawanya ke Windows (dan di tempat lain) dan siapa tahu? Mungkin usaha gabungan dari beberapa komunitas akan cukup untuk membuat sesuatu terjadi.


Q Anda menulis posting Hebat, menerbitkan buku dan berkontribusi atas OSS proyek, seperti jQuery dan Yeoman. Semua prestasi profesional Anda, ada satu hal yang benar-benar menonjol sebagai momen bangga?

Merilis buku pertama saya, belajar JavaScript Design Patterns (dengan O'Reilly) mungkin adalah prestasi yang telah memberi saya kepuasan terbesar. Itu adalah proyek penulisan terbesar saya, dan saya membuat keputusan untuk menjadi benar-benar sumber-terbuka dari awal - panggilan saya tidak akan menyesal. Menjadikan bahan pendidikan tersedia kepada siapa pun, di mana saja apakah mereka mampu membelinya memiliki potensi yang sangat besar baik kedua.

Ini juga memiliki potensi untuk meningkatkan dampak buku Anda, jadi jika Anda seorang penulis - silakan mempertimbangkan melakukan hal itu. Anda tidak akan menyesal!


Terima kasih banyak untuk Addy untuk duduk dengan itu. Jika Anda memiliki pertanyaan Anda sendiri untuk dia, aku yakin dia tidak keberatan menjawab di bawah di komentar!
Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.