Pengembangan web versus desktop - apakah pengembangan web lebih buruk? [Tutup]


29

Sebagai pengembang desktop yang sudah lama melihat melakukan aplikasi web skala besar pertama kami, apa pro dan kontra dari melakukan pengembangan web?

Apakah mengembangkan aplikasi web jauh lebih buruk daripada mengembangkan aplikasi desktop? Misalnya, apakah lebih membosankan atau menjengkelkan? Apakah waktu memasarkan jauh lebih buruk? Apakah platform web terlalu membatasi? Jika jawaban untuk semua ini adalah ya, lalu mengapa?

(Dan bagaimana cara membandingkan aplikasi Flash atau Silverlight?)


5
Saya belum memilih untuk menutup, tetapi saya pikir ini mungkin akan lebih konstruktif jika itu dapat dirancang ulang menjadi sudut pandang pengembangan web vs pengembangan desktop.
Josh K

K: Oke, saya mencoba untuk mengulangi pertanyaan itu tanpa membatalkan jawaban yang ada. Terima kasih.
Josh Kelley

Jawaban:


26

Tidak

Ini menyakitkan jika Anda tidak tahu apa yang Anda lakukan atau tidak rencanakan dengan benar, tetapi itu benar dengan perkembangan apa pun. Lebih mudah untuk mem-botol aplikasi dalam aplikasi desktop, tetapi kemudian Anda kehilangan aksesibilitas yang disediakan oleh pengkodean untuk aplikasi web.

Saya akan membuat pilihan antara desktop dan web berdasarkan penggunaan yang diinginkan. Saya melihat banyak aplikasi yang ditulis berdasarkan web yang seharusnya tidak karena mereka tidak tahu cara membuat kode aplikasi desktop. Saya tidak melihat banyak aplikasi desktop yang seharusnya berbasis web, dan saya pikir itu sesuatu yang perlu dipertimbangkan. Jika Anda memerlukan penyimpanan terpusat, aksesibilitas jarak jauh, dan ciri-ciri UI, maka pastikan .

Saya tidak dapat berkomentar tentang Flash atau Silverlight karena saya tidak menggunakan keduanya.


5
Aku benci menjadi yang pria tapi ... :s/loose/lose/:)
dr Hannibal Lecter

@dr Hannibal: Memperbaikinya. Kadang saya ketuk tombol dua kali. ;)
Josh K

4
@dr Hannibal: Ada semacam disonansi kognitif yang berasal dari kata "Aku benci menjadi yang pria" yang berasal dari "Hannibal Lecter" :)
Skilldrick

25

Seperti yang disebutkan oleh orang lain, ini adalah masalah pertukaran dan memiliki pengetahuan yang benar.

Satu-satunya perangkap yang mungkin ingin Anda pertimbangkan adalah ini: Anda menyebutkan dalam pertanyaan Anda bahwa Anda melihat web memiliki "lintas platform" sebagai keuntungan. Tapi benarkah itu? Pikirkan seperti ini: jika Anda mengembangkan sesuatu untuk desktop, Anda perlu menentukan daftar platform dan persyaratan mereka untuk mendukung.

Jangan salah, itu sama untuk web. Dan meskipun itu sudah sangat sederhana dari sebelumnya, jika Anda merancang aplikasi publik yang luas, Anda harus berurusan dengan setiap versi yang mungkin dari setiap browser web di luar sana. Dan jika ini lebih merupakan aplikasi perusahaan, maka persiapkan diri Anda dan bersiaplah untuk menyusun persyaratan platform peramban yang didukung dengan sangat tepat.

Jangan mengira Anda akan menghindari peretasan khusus platform di sana-sini jika Anda membuat sesuatu yang signifikan.

Dan kemudian bagian yang menyenangkan. Apa yang terbaik Peramban yang memperbarui diri hampir secara transparan sangat teratur seperti Chrome? Atau yang meluncurkan pembaruan keamanan hanya fitur bulanan dan utama setiap zaman batu (seperti IE)? Jawabannya tidak sejelas yang Anda kira, karena beberapa pembaruan "transparan" yang sering terjadi ini dapat memecahkan kode Anda, dan Anda harus mengikuti ini dan bereaksi segera. Atau awasi pra-rilis beta dan dev saat mengembangkan dan menguji. Untuk semua peramban yang dengan bodohnya Anda katakan ingin Anda dukung (semoga sukses).

Oh dan jangan lupa pertimbangan UI. Anda juga menghadapi sukacita memutuskan apakah Anda ingin UI yang konsisten ACROSS semua platform target Anda, atau konsisten UI DENGANplatform target masing-masing host. Lihat semua tombol kecil yang bisa Anda lihat di halaman web? Apakah Anda ingin mereka persis sama di mana-mana, atau berintegrasi dengan lingkungan yang digunakan oleh pengguna Anda? Tentu saja masalah ini bukan hal baru dan ada untuk model pengembangan lain, tetapi tampaknya lebih penting di sini, dan tergantung pada jenis pengguna yang Anda targetkan dan apa yang mereka harapkan. Pengguna akhir publik cenderung ingin Anda berintegrasi dengan platform mereka - tetapi masih ingin Anda "wow!" mereka dengan barang-barang mewah - sementara pengguna perusahaan menginginkan sesuatu yang terlihat seperti aplikasi desktop. Dan platform seluler memiliki dimensi baru untuk semua ini.

Untuk 2 paragraf terakhir, ide yang umum adalah kadang-kadang mengemas browser web pra-konfigurasi dengan installer Anda, yang kemudian terhubung ke aplikasi web Anda (di-host secara lokal atau di web). Ini bagus karena Anda mengontrol frekuensi pembaruan dan Anda dapat "membekukan" negara dan Anda tahu persis apa yang harus didukung dan diuji. Plus, Anda dapat menambahkan hal-hal keren seperti ekstensi pengguna khusus. Misalnya, mengemas Chromium "beku" dengan Ekstensi Chrome kecil yang telah Anda kembangkan untuk membuat penggunaan aplikasi web Anda lebih mudah untuk berbagai jenis pengguna bisa sangat menyenangkan. Di sisi lain ... Anda sekarang bertanggung jawab jika terjadi pelanggaran keamanan karena Anda membekukan siklus rilis, dan aplikasi Anda tidak akan mendapat manfaat dari peningkatan kecepatan (jika ada).

Seperti banyak hal, itu adalah kapak bermata dua.

Catatan: Saya memiliki bias kuat terhadap web karena pada dasarnya adalah tumpukan besar teknologi setengah matang (dan saya sopan di sini), sampai ke lapisan OSI, di mana kami terus menambahkan lapisan omong kosong menyembunyikan masalah di bawahnya tanpa benar-benar menyelesaikan atau memperbaikinya.

Yang sedang berkata, saya mendukung web untuk sifatnya di mana-mana sebagai platform. Saya pikir langkah perusahaan Anda (mungkin) yang tepat. Itu tergantung pada target pasar Anda dan platform yang Anda tuju, jelas. Jika Anda ingin mengekspos sesuatu sebagai layanan, maka Anda mungkin baik untuk pergi (meskipun itu tidak perlu juga). Jika tidak, maka mungkin tidak ada banyak alasan untuk itu.

Hmm, dan perkirakan beberapa perkembangan yang menyenangkan di masa depan sekarang karena lebih banyak varian ringan dari sistem operasi yang ada terus memijah untuk lingkungan seluler (netbook, smartphone, PDA, tablet, eBook ...), dengan lebih banyak penekanan pada penggunaan browser tertanam yang ringan. .. tetapi dengan semua bagian baru dari gangguan rendering UI mereka.

Mengenai teknologi berbasis plugin ... Saya akan mengatakan untuk menjauh dari mereka. Mereka akan meningkatkan kekuatan aplikasi Anda, tetapi akan membatasi penetrasi pasarnya. Dalam beberapa kasus, Anda akan melihatnya sebagai nilai tambah dalam hal dukungan lintas platform, sampai platform baru tiba-tiba menolak untuk mendukungnya. Standar Web ada di sini karena suatu alasan (berhati-hatilah untuk tidak terlalu bersemangat tentang segala hal di HTMl5, atau mungkin meledak di wajah Anda).


Sunting: hal-hal lain untuk dipertimbangkan ...

Pengerahan

Sangat sulit untuk menemukan pengembang web yang berpengetahuan luas. Anda akan berpikir ada kawanan mereka, tetapi mereka tersesat dalam kumpulan besar, yah, orang yang cukup tidak kompeten yang berpikir telah berhasil menulis 700 baris JavaScript / ECMAScript untuk mengimplementasikan beberapa validasi dalam bentuk mereka adalah akhirnya semua dan jadilah semua yang bisa dicapai dalam hal keterampilan tingkat tinggi.

Saya tidak bercanda, akhir-akhir ini pertanyaan pertama saya untuk semua wawancara pengembangan web adalah bagaimana mendeklarasikan variabel, dan kemudian apakah ada perbedaan antara menggunakan varatau tidak (tergantung pada bagaimana mereka menjawab). Ini menyedihkan. Saya merasa jauh lebih sulit untuk menemukan pengembang web rata-rata atau maju daripada menemukan pengembang desktop rata-rata atau canggih.

Persepsi

Tidak ada yang akan menganggap Anda serius ketika Anda mengatakan "Saya seorang pengembang web". Ini untuk subkelas programmer, pengembang, bukan? Orang-orang yang Anda abaikan dan cemooh dari jauh, dan jangan bergabung ketika mereka pergi minum kopi. :)

Ini jelas tidak benar, tetapi ini berujung pada kenyataan bahwa Anda berkembang untuk lingkungan yang sebagian besar dikelola untuk Anda. Browser memperbaiki markup kacau Anda, gaya kacau Anda, dan bahkan akan memperbaiki skrip kacau Anda untuk beberapa dari mereka, dan mengoptimalkannya untuk Anda jika Anda mau. Dan jika Anda seorang pengembang web, orang tidak akan menganggap Anda memiliki petunjuk tentang pemrograman tingkat rendah, jadi Anda harus benar-benar idiot, bukan?

Dan kemudian mereka menyadari betapa rumitnya ECMAScript, tetapi akan menolak untuk meninjau pendapat mereka. Karena itu web. Kami tidak menyukainya secara intrinsik, kami hanya menyukai apa yang memungkinkannya kami lakukan.


-2, +10 ... Saya melihat saya mendorong beberapa kontroversi;)
haylem

Perbedaan antara browser menjadi semakin sedikit masalah. Tentu saja, ada sedikit inkonsistensi dalam cara mereka menangani CSS dan yang lainnya, tetapi sebagian besar, saya tidak pernah memiliki masalah besar dengan browser modern. Kecuali jika Anda benar-benar berada di tepi pendarahan dengan HTML5, <canvas>dan hal-hal seperti itu ...
Dean Harding

6
"Catatan: Saya memiliki bias kuat terhadap web karena pada dasarnya adalah tumpukan besar teknologi setengah matang (dan saya sopan di sini), hingga ke lapisan OSI, di mana kami terus menambahkan lapisan omong kosong menyembunyikan masalah di bawahnya tanpa benar-benar memecahkan atau memperbaikinya. " - APAKAH KAMU ?????
Bobby Tables

2
Saya bekerja dengan beberapa orang yang merupakan guru pengembangan web nyata, melakukan hal-hal luar biasa, dan menggunakannya sebagai platform pengembangan perangkat lunak yang serius. Mereka sangat menghormati saya. Tapi itu baru dua dalam 15 tahun terakhir. Sisanya ... yah, saya pernah mendapat pertunjukan sebagai "ahli" Perl hanya karena kode sampel saya terstruktur daripada spaghetti yang digunakan pewawancara; pada saat itu, keahlian Perl asli saya bisa cocok dengan bidal.
Bob Murphy

2
+1 untuk ECMAScript menjadi baik, buruk dan disebut ECMAScript.
Alan Pearce

14

Sebagai seseorang yang berurusan dengan keduanya (lebih dari desktop daripada web): sejauh ini keluhan terbesar saya adalah rasa "kekeruhan umum" dalam pengembangan web. Bahkan dengan alat dan kerangka kerja terbaik, abstraksi masih sangat bocor dan Anda terus berhadapan dengan fakta bahwa Anda menjalankan protokol tanpa kewarganegaraan.

Gangguan terkait lainnya adalah campuran teknologi yang digunakan untuk mengimplementasikan aplikasi web. Tidak ada lingkungan dan bahasa yang bagus, monolitik, modular dan semuanya dapat dilakukan. Bahkan aplikasi web yang relatif sederhana mengharuskan Anda untuk membuat kode berbagai hal dalam beberapa bahasa pemrograman, penulisan skrip, dan markup yang terpisah.

Jadi sebagai jawaban umum: YA , memang seburuk itu. Setidaknya jika Anda berasal dari latar belakang desktop tradisional tempat Anda terbiasa mengkodekan hal-hal dalam lingkungan yang bersih dan mulus, menggunakan teknologi dan platform di mana semuanya sangat linier dan terdefinisi dengan baik. Cara terbaik adalah tidak mencoba menganggapnya sebagai bidang yang sama. Jika Anda secara tidak sadar mengharapkan pengembangan web menjadi "seperti pengembangan desktop", itu akan selalu terlihat sangat menjengkelkan dan menjengkelkan.


4
Alasannya merasa "umumnya kikuk" mungkin karena Anda menggunakan kerangka kerja yang mencoba "abstrak" ... apa, web? Web tidak bernegara. Tidak peduli berapa banyak "webforms" di ASP.NET ingin membuat Anda berpikir sebaliknya, jangan pernah lupa bahwa itu adalah stateless. Semakin cepat pengembang menerima bahwa sebagai kebenaran yang tidak dapat diubah, semakin cepat mereka menulis aplikasi web berkualitas.
Jason Whitehorn

1
+1, kata bagus. Bahkan dengan kerangka kerja seperti Rails yang seharusnya menjadi solusi untuk menulis semuanya dalam tumpukan teknologi tunggal, mereka berhasil mengacaukannya dengan mengubah praktik yang disarankan dari RJS ke "Unobtrusive JS".
Jas

11

Pemikiran ulang terbesar dari desktop ke web adalah: aplikasi web pada dasarnya tidak memiliki kewarganegaraan

mencari tahu bagian itu, dan Anda baik-baik saja.


apakah browser itu penting?
JeffO

@Jeff inkonsistensi lintas browser mengganggu, tetapi tidak terlalu signifikan
Steven A. Lowe

4
Anda harus menulis untuk browser nyata (beberapa inkonsistensi), Internet Explorer (lebih banyak inkonsistensi), dan mungkin anak iblis (IE6).
TRiG

2
@Malfist: Jika Anda tidak berhati-hati, dengan pendekatan ini (stateless + sesi = stateful) Anda dapat merancang emu dengan mesin pesawat jet yang melesat, ketika Anda awalnya menginginkan elang;)
Piskvor

1
@ Jim G: tentu saja. Tetapi perbedaan antara browser et al sangat kecil dibandingkan dengan pergi dari stateful ke desain aplikasi stateless.
Steven A. Lowe

5

Sebagian besar kebosanan berasal dari pekerjaan yang diperlukan untuk membuat semuanya berfungsi di semua browser. Karena Anda kemungkinan besar tidak perlu berada di ujung pendarahan, Anda dapat memanfaatkan pekerjaan yang dilakukan oleh orang lain, dengan memilih kerangka kerja web yang sesuai alih-alih menangani sendiri.

Yang mana yang akan digunakan, sangat tergantung pada lingkungan bahasa yang Anda gunakan saat ini. Anda mungkin ingin mengedit pertanyaan untuk memberikan informasi itu.


2
Masalah kompatibilitas peramban adalah masalah besar, itu benar, tetapi untuk menyeimbangkan ini, jangan lupa bahwa ia membandingkan dengan pengembangan desktop, di mana Anda harus berurusan dengan berbagai versi sistem operasi, perpustakaan, dll.
Carson63000

@Carson, jika mereka melakukan pengembangan desktop Java, rasa sakit ini sebenarnya sangat minim. Mungkin jauh lebih buruk untuk .NET atau Win32 API.

2

Tidak, aplikasi web memiliki trade-off yang berbeda dari aplikasi desktop. Masing-masing memiliki kekuatan di benak saya. Meskipun ada kekuatan seperti penyebaran tunggal, ada untungnya mengetahui browser mana yang Anda dukung dan resolusi layar apa yang Anda harapkan dari pelanggan? Meskipun Anda memiliki kontrol atas perangkat keras server ada pertanyaan tentang berapa banyak lalu lintas yang Anda harapkan dan seberapa baik akan skala? Bagi mereka yang telah melakukan pengembangan web selama bertahun-tahun ini dapat menjadi bintik-bintik sakit seperti yang saya bayangkan Anda memiliki beberapa tugas pengembangan yang Anda temukan sebagai rasa sakit besar, bukan?

Aplikasi Flash mungkin atau mungkin bukan aplikasi web menurut saya. Sesuatu seperti AIR dapat membuat beberapa hal Flash berjalan di desktop sekarang dan beberapa aplikasi dibangun di atasnya, misalnya Twhirl, sehingga tidak langsung memotong dan mengeringkannya.


2

Pengembangan web tidak selalu lebih buruk , hanya saja sangat berbeda.

Salah satu hal yang memisahkan pengembangan web dari pengembangan desktop adalah banyaknya teknologi berbeda yang harus Anda kuasai untuk mengembangkan aplikasi yang cukup kompleks. Maksud saya, pada dasarnya Anda harus memiliki pengetahuan yang kuat tentang:

  • HTML
  • Javascript
  • CSS
  • Beberapa bahasa sisi server (Java / PHP / apa pun ...)
  • RDBMS (atau teknologi toko persisten)
  • ... dan mungkin banyak hal lain seperti Flash, Silverlight, dll.

Padahal, dengan pengembangan desktop Anda biasanya bekerja dengan teknologi yang jauh lebih monolitik. Misalnya, mengembangkan aplikasi Java pada dasarnya mengharuskan Anda untuk mengetahui Java, dan hanya itu. (Tentu saja, itu agak penyederhanaan, tetapi intinya pengembangan web memaparkan Anda pada rentang teknologi yang jauh lebih berbeda yang perlu bekerja sama untuk membentuk aplikasi yang berfungsi.)


1

Tidak

Selama Anda memilih alat yang tepat, pengembangan web sebersih dan semudah pengembangan desktop.

API web (html, CSS, Javascript, dan DOM) adalah setara dengan api win32. Akhirnya semuanya berbicara ke tingkat API itu, tetapi Anda gila jika Anda memprogram langsung di atasnya tanpa pustaka untuk memisahkan kekacauan, kata-kata kasar, dan ketidakkonsistenan yang menjauh dari Anda.

Jadi, berhati-hatilah dengan kerangka pilihan Anda. Beberapa masalah disebabkan oleh pemilihan alat yang salah (mis. Masalah kompatibilitas browser).

Dimungkinkan untuk memiliki platform dev web yang bersih dan konsisten, dengan satu bahasa. Misalnya, jika Anda ingin menjadi "semua java sepanjang waktu", Anda dapat menggunakan GWT dan menulis kode sisi klien dan kode sisi server di Jawa. Atau, jika Anda ingin semuanya menjadi javascript, Anda dapat memilih sesuatu seperti Ext JS untuk sisi klien dan node.js untuk sisi server.


0

Saya pernah mendengar itu digambarkan sebagai "... kutukan keberadaan saya" dan saya akan setuju. Saya telah ditawari $$$ satu jam untuk melakukan pengembangan web HTML dan saya menolaknya. Itu sangat menyakitkan. Saya telah menghabiskan sebagian besar waktu dalam HTML dan baru-baru ini mulai bekerja dengan "platform Flash". Ini adalah salah satu kerangka kerja paling canggih yang pernah saya lihat dan bahkan tidak ada yang tahu tentang itu. Ketika orang membuka Flash, mereka memikirkan Flash pada 10 tahun lalu. Itu sudah tumbuh ... banyak. Saya suka menulis perangkat lunak lagi.

Masih memiliki kekurangan itu. Seringkali bug bertahan selamanya tetapi menjadi lebih baik (terima kasih Steve J.).

BTW Ada kekurangan utama untuk pengembang Flex. Saya sudah didekati oleh banyak perusahaan sehingga sakit. Jika Anda tahu CS Anda, maka habiskan 6+ bulan berikutnya belajar Flex hardcore lalu telepon saya. Saya akan meneruskan semua tawaran pekerjaan yang harus saya tolak.

Pembaruan: Dukungan lintas browser adalah titik nyeri utama. Apa yang berfungsi di satu browser tidak akan berfungsi di browser lain atau akan tetapi tidak pada versi sebelumnya.

Prosesnya kira-kira seperti ini: - dapatkan desain situs - usahakan untuk membuatnya kembali dalam satu browser target (ini bisa sulit) - tampilkan klien - desain perubahan klien - kikis semua pekerjaan tata letak yang Anda lakukan sebelumnya - dapatkan fungsional - persetujuan klien - aktifkan di browser lain. Ini adalah bagian yang paling sulit. Ada bug yang tidak jelas di sepanjang jalan. Kemudian Anda akan menemukan fitur yang tidak didukung browser sebelumnya seperti sudut membulat. Anda akan mencoba menggunakan kembali kode dan css Anda tetapi dengan cepat menjadi terfragmentasi. Cukup itu bisa menjadi pemeliharaan tinggi dengan sangat cepat. Tambahkan animasi dan browser yang lebih lama tersedak.

Klien akan melakukan perubahan. Anda akan menghabiskan seluruh waktu Anda melakukan "apa yang seharusnya menjadi hal-hal sederhana" dan membenci hidup Anda. Anda akan menjadi guru dan tahu hal-hal yang tidak ingin Anda ketahui. Saya tahu ini terdengar dramatis, tetapi saya tidak membahas masalah yang akan Anda hadapi. Kerangka kerja akan membuatnya lebih mudah. Jika Anda terus-menerus bekerja dalam HTML maka untuk mempersiapkan diri Anda membuat kembali salah satu situs favorit Anda dalam HTML memastikan untuk mencocokkan desain dan fungsionalitas di semua browser yang didukungnya. Keluarkan masalah yang Anda hadapi sebelum masuk ke pekerjaan. Masalah seperti alat desain terbaik, kerangka kerja javascript terbaik, alat debugging terbaik, IDE terbaik, dll.


Bisakah Anda mengedit jawaban Anda untuk menjelaskan mengapa Anda menganggapnya sebagai kutukan keberadaan Anda?
Josh Kelley

Diperbarui jawaban saya di atas

1
Tiga dolar per jam? Tidak heran Anda menolaknya, apakah itu bahkan upah minimum hari ini? ;)
Piskvor
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.