Mengapa Pemeliharaan Aplikasi Web Harus Lebih Dari Suatu Hal
Diterbitkan: 2022-03-10Pengembang perangkat lunak tradisional telah menyembunyikan rahasia dari kami di depan mata. Itu bahkan bukan fakta yang diperdebatkan. Itu bagian dari model bisnis mereka.
Tidak masalah jika kita berbicara tentang vendor perangkat lunak perusahaan kelas atas atau rumah perangkat lunak yang lebih kecil yang menulis alat yang kita semua gunakan sehari-hari dalam pekerjaan atau bisnis kita seperti manajer syslog gratis. Itu ada di depan dan tengah. Biaya tambahan yang tidak mereka sembunyikan dan kami sudah terbiasa membayar.
Jadi apa rahasia ini?
Nah, banyak vendor perangkat lunak tradisional menghasilkan lebih banyak uang dari pemeliharaan perangkat lunak yang mereka tulis daripada yang mereka lakukan pada penjualan awal.
Tidak meyakinkan?
Pencarian cepat pada istilah "Total Biaya Kepemilikan" akan memberi Anda banyak definisi serupa seperti ini dari Gartner (penekanan milik saya):
[TCO adalah] biaya untuk mengimplementasikan, mengoperasikan, mendukung & memelihara atau memperluas, dan menonaktifkan aplikasi.
Selanjutnya, makalah oleh universitas Stanford ini menegaskan bahwa pemeliharaan biasanya berjumlah 60% hingga 90% dari TCO produk perangkat lunak.
Ada baiknya membiarkan itu meresap sebentar . Mereka menghasilkan lebih dari harga pembelian awal dengan menjual dukungan berkelanjutan dan rencana pemeliharaan.
Kami Tidak Mendorong Pemeliharaan
Masalah yang saya lihat adalah bahwa dalam industri pengembangan web, pemeliharaan aplikasi web bukanlah sesuatu yang menjadi fokus kami. Kami mungkin memasukkannya ke dalam proposal kami karena kami menyukai gagasan retainer bulanan, tetapi mereka kemungkinan akan mencakup tugas-tugas rumah tangga sederhana atau permintaan fitur baru.
Bukan hal yang aneh untuk menyembunyikan peningkatan dan pengoptimalan penting dalam kutipan kami untuk iterasi selanjutnya karena kami tidak yakin bahwa klien akan mau membayar untuk hal-hal yang kami lihat sebagai peningkatan penting. Kami mencoba dan mendapatkan mereka melalui pintu belakang. Atau dengan kata lain, kami tidak terbuka dan transparan, seperti halnya perangkat lunak tradisional lainnya, aplikasi ini perlu dirawat.
Terlepas dari alasannya, menjadi jelas bahwa kita menyimpan masalah untuk masa depan. Aplikasi perangkat lunak yang kami bangun ada di sini untuk jangka panjang . Kita perlu berpikir seperti vendor perangkat lunak tradisional. Perangkat lunak kami akan tetap berjalan selama 10 atau 15 tahun dari sekarang, dan harus dijaga dengan baik.
Jadi, bagaimana kita bisa mengubah ini? Bagaimana kita semua sebagai industri memastikan bahwa klien kita dilindungi sehingga semuanya tetap aman dan terkini? Demikian pula, bagaimana kita bisa mengambil bagian dari kue pemeliharaan ?
Apa itu Pemeliharaan?
Dalam makalah mereka Pemeliharaan Aplikasi Efektif 2012, Heather Smith dan James McKeen mendefinisikan pemeliharaan sebagai (penekanan adalah milik saya):
Memindahkan aplikasi ke server baru, berinteraksi dengan sistem operasi yang berbeda, memutakhirkan ke rilis yang lebih baru, mengubah tabel pajak, atau mematuhi peraturan baru—semuanya memerlukan pemeliharaan aplikasi. Akibatnya, pemeliharaan difokuskan pada peningkatan versi aplikasi untuk memastikannya tetap produktif dan/atau hemat biaya . Definisi pemeliharaan aplikasi yang disukai oleh grup fokus adalah — modifikasi aplikasi apa pun untuk memperbaiki kesalahan; untuk meningkatkan kinerja; atau untuk menyesuaikan aplikasi dengan lingkungan yang berubah atau persyaratan yang berubah. Jadi, menambahkan fungsionalitas baru ke aplikasi yang sudah ada (yaitu, peningkatan) tidak, secara tegas, dianggap sebagai pemeliharaan .
Dengan kata lain, pemeliharaan adalah pekerjaan penting yang perlu dilakukan pada aplikasi perangkat lunak agar dapat terus berfungsi dengan andal dan aman.
Itu tidak menambahkan fitur baru. Itu tidak memeriksa file log atau memastikan cadangan telah berjalan (ini adalah tugas rumah tangga). Ini bekerja pada kode dan platform yang mendasarinya untuk memastikan bahwa segala sesuatunya mutakhir, berfungsi seperti yang diharapkan penggunanya dan lampu tetap menyala.
Berikut adalah beberapa contoh:
Perubahan Teknologi dan Platform
Pustaka pihak ketiga perlu diperbarui. Bahasa yang mendasari memerlukan pembaruan, misalnya PHP 5.6 ke PHP 7.1 Sistem operasi modern mengirimkan pembaruan secara teratur. Menjaga di atas ini adalah pemeliharaan dan kadang-kadang juga akan memerlukan perubahan pada basis kode karena cara lama dalam melakukan hal-hal tertentu menjadi usang.penskalaan
Saat aplikasi tumbuh, akan ada masalah sumber daya. Rutinitas dalam kode yang bekerja dengan baik dengan 10.000 transaksi per hari berjuang dengan 10.000 per jam. Aplikasi perlu dipantau, tetapi juga perlu diambil tindakan saat peringatan dipicu.Perbaikan Bug
Jelas tapi layak dibuat eksplisit. Perangkat lunak ini memiliki bug, dan mereka perlu diperbaiki. Bahkan jika Anda menyertakan sedikit perbaikan bug gratis setelah mengirimkan proyek, pada titik tertentu klien harus mulai membayar untuk ini.
Sulit Dijual?
Menariknya, ketika saya mendiskusikan hal ini dengan rekan-rekan saya, mereka merasa sulit untuk meyakinkan klien bahwa mereka membutuhkan perawatan. Mereka khawatir bahwa klien mereka tidak memiliki anggaran dan mereka tidak ingin dianggap terlalu mahal.
Nah, inilah masalahnya: ini sebenarnya penjualan yang cukup mudah. Kami berurusan dengan pebisnis, dan kami hanya perlu berbicara dengan mereka tentang pemeliharaan dalam istilah komersial. Pelaku bisnis memahami bahwa aset memerlukan pemeliharaan atau mereka akan menjadi kewajiban. Ini hanyalah overhead bulanan standar yang sedang berlangsung. Sebuah biaya melakukan bisnis. Kami hanya perlu memasukkan ini ke dalam proposal kami dan memastikan bahwa kami menindaklanjutinya .
Metode yang sangat efektif adalah dengan menawarkan retainer yang menggabungkan pemeliharaan pada intinya tetapi juga menggabungkan banyak nilai ekstra untuk klien, hal-hal seperti:
- Pelaporan kemajuan vs. KPI (misalnya lalu lintas, konversi, volume penelusuran)
- Waktu 'bebas' terbatas setiap bulan untuk perubahan kecil pada situs
- Melaporkan waktu henti, pembaruan server, atau pekerjaan pengembangan selesai
- Akses ke Anda atau anggota tertentu dari tim Anda melalui telepon untuk menjawab pertanyaan
Memang, Anda dapat membuat punggawa menghemat uang klien dan membayar sendiri. Contoh yang baik dari hal ini adalah persyaratan klien untuk mendapatkan laporan sederhana atau mengekspor dari database setiap bulan untuk pemrosesan offline.
Anda dapat memberikan penawaran selama beberapa hari pengembangan untuk membangun — mungkin lebih kompleks daripada yang diperkirakan sebelumnya — melaporkan antarmuka pengguna atau sebagai alternatif mengarahkan klien ke pengikut Anda. Sertakan di dalamnya tugas setiap bulan bagi pengembang untuk secara manual menjalankan kueri SQL yang telah ditetapkan sebelumnya untuk secara manual menyediakan data yang sama.
Tugas sepele untuk Anda atau tim Anda; banyak nilai untuk klien Anda.
Contoh Praktis
Anda tentu saja akan memiliki cara Anda sendiri dalam menulis proposal, tetapi berikut adalah beberapa cuplikan dari contoh penawaran.
Di bagian proposal Anda di mana Anda mungkin melukis visi Anda untuk masa depan, Anda dapat menambahkan sesuatu tentang pemeliharaan. Gunakan ini sebagai kesempatan untuk menanam benih tentang membentuk hubungan jangka panjang.
Anda ingin meminimalkan risiko jangka panjang.
Anda ingin memastikan bahwa aplikasi Anda bekerja dengan baik, tetap aman, dan mudah untuk dikerjakan.
Anda juga memahami betapa pentingnya pemeliharaan untuk aset bisnis apa pun.
Kemudian, di bagian kiriman, Anda dapat menambahkan bagian tentang pemeliharaan baik sebagai opsi yang berdiri sendiri atau dibundel dengan retainer yang sedang berlangsung.
Dalam contoh berikut, kami membuatnya tetap sederhana dan menggabungkannya dengan punggawa pengembangan prabayar:
Kami sangat menganjurkan agar semua klien menganggap pemeliharaan sebagai biaya tambahan yang penting untuk situs web mereka. Aplikasi web modern memerlukan perawatan dan seperti rumah atau mobil Anda; Anda menjaga aset Anda tetap terpelihara untuk mengurangi risiko nyata bahwa mereka menjadi kewajiban di kemudian hari .
Sebagai klien yang ingin terus memantau pemeliharaan aplikasi serta menambahkan fitur baru, kami menyarankan N hari per bulan (sebagai titik awal) untuk pemeliharaan umum dan pengembangan.
Kami telah menyebarkan banyak hal sehingga pengembang bekerja di sistem Anda setidaknya [beberapa periode per minggu/bulan] memberi Anda keuntungan berbeda karena pengembang dapat beralih ke sesuatu yang lebih penting jika masalah muncul selama [periode yang sama] . Bergantung pada prioritas Anda, waktu dapat dihabiskan untuk pekerjaan fitur baru atau dibagi dengan pemeliharaan, terserah Anda. Kami biasanya menyarankan pembagian 75%/25% antara fitur baru dan pemeliharaan penting.
Seperti yang disebutkan sebelumnya, ini juga merupakan peluang bagus untuk menggabungkan pemeliharaan dengan layanan berkelanjutan bernilai tambah lainnya seperti pelaporan kinerja, melakukan tugas-tugas tata graha seperti memeriksa cadangan, dan mungkin panggilan bulanan untuk membahas kemajuan dan prioritas.
Apa yang mungkin Anda temukan adalah bahwa setelah Anda mendapatkan pekerjaan, punggawa tidak disebutkan lagi. Hal ini dapat dimengerti karena ada banyak hal yang harus Anda dan klien Anda pertimbangkan di awal proyek, tetapi saat proyek selesai adalah saat yang tepat untuk memperkenalkannya kembali sebagai bagian dari proses offboarding proyek Anda.
Apakah ini berbicara tentang fase 2 atau hanya memperkenalkan faktur akhir dan serah terima, ingatkan mereka tentang pemeliharaan. Ingatkan mereka tentang pelatihan berkelanjutan, pelaporan, dan ketersediaan dukungan . Buat dorongan untuk pengikut, ingat untuk berbicara dalam istilah komersial yang sama: aset baru mereka perlu dirawat agar tetap berkilau .
Bisakah Pemeliharaan Menjadi Mengganggu?
Kesalahpahaman yang umum adalah bahwa retainer perawatan dapat menjadi beban tambahan. Kekhawatirannya adalah bahwa klien akan terus-menerus menelepon Anda dan meminta perubahan kecil sebagai bagian dari pengikut Anda. Ini adalah perhatian khusus untuk tim yang lebih kecil atau konsultan solo.
Padahal biasanya tidak demikian. Mungkin pada awalnya, klien akan memiliki daftar hambatan yang perlu diselesaikan, tetapi ini setara dengan kursus; jika Anda berpengalaman, maka Anda mengharapkannya. Ini mudah dikelola dengan meningkatkan saluran komunikasi (menggunakan pelacak masalah) dan menyatukan semua permintaan, yaitu, mengerjakannya dalam satu klik.
Saat aplikasi matang, Anda akan masuk ke mode tick-over. Di sinilah retainer menjadi sangat berharga bagi kedua belah pihak. Ini jelas tergantung pada bagaimana Anda menyusun pengikut, tetapi dari sudut pandang Anda, Anda berusaha untuk mengingatkan klien setiap bulan betapa berharganya Anda. Anda dapat mengirimi mereka laporan bulanan Anda, memberi tahu mereka bagaimana Anda memperbaiki pelambatan dalam rutinitas itu dan bahwa server telah ditambal untuk eksploitasi OS global minggu ini.
Anda, tentu saja, juga tersedia untuk mengerjakan sejumlah fitur baru yang diminta yang dapat dikenakan biaya tambahan . Dari sudut pandang klien Anda, mereka melihat bahwa Anda ada di sana, mereka melihat kemajuan, dan mereka dapat menghapus "kekhawatiran tentang situs web" dari daftar mereka. Jelas, 'klien itu' memang ada, jadi yang paling penting adalah membuat kata-kata pengikut Anda benar dan mengelola ekspektasi yang sesuai.
Jika klien Anda mengharapkan bulan pada tongkat dengan biaya bulanan yang rendah, dorong kembali atau negosiasi ulang. Membayar Anda untuk melakukan — katakanlah — dua jam pemeliharaan dan tata graha per bulan di antara memberikan laporan bulanan dan tugas tambahan lainnya adalah persis seperti itu; itu bukan cek kosong untuk membuat banyak perubahan ad-hoc. Ingatkan mereka apa yang disertakan dan apa yang tidak.
Bagaimana Kami Mempermudah Perawatan?
Terakhir, untuk memastikan nilai terbaik bagi klien Anda dan membuat hidup Anda lebih mudah, gunakan beberapa taktik ini saat membangun aplikasi Anda.
Dukungan Jangka Panjang (LTS)
- Gunakan platform teknologi dengan rilis LTS yang terdokumentasi dengan baik dan jalur peningkatan.
- Pembaruan OS, bahasa, kerangka kerja, dan CMS yang sedang berlangsung harus diharapkan dan diperhitungkan untuk semua proyek sehingga melacak versi LTS adalah hal yang mudah.
- Semuanya harus berjalan pada versi yang didukung. Lonceng alarm besar harus berdering jika ini tidak terjadi.
Kebersihan Proyek yang Baik
- Miliki tugas pemeliharaan secara publik di backlog fitur Anda atau sistem pelacakan masalah dan setujui prioritas dengan klien Anda. Jangan sembunyikan tugas pemeliharaan.
- Level kode dan tes fungsional memungkinkan Anda untuk mengawasi kode yang sangat bermasalah dan akan membantu saat menarik modul untuk refactoring.
- Pantau aplikasi dan pahami di mana hambatan dan kesalahannya. Masalah apa pun dapat ditambahkan ke backlog pengembangan dan diprioritaskan sesuai dengan itu.
- Memantau permintaan dukungan. Apakah pengguna akhir memberi Anda umpan balik yang berguna yang dapat menunjukkan persyaratan pemeliharaan?
Aplikasi Harus Portabel
- Pengembang mana pun harus dapat mengaktifkan dan menjalankan sistem secara lokal dengan mudah — bukan hanya Anda! Gunakan server atau wadah virtual untuk memastikan bahwa versi pengembangan aplikasi identik dengan produksi.
- Aplikasi harus didokumentasikan dengan baik. Minimal, alur kerja penyediaan dan penerapan serta mantra khusus apa pun yang diperlukan untuk diterapkan agar aktif harus ditulis.
Pemeliharaan Benar-Benar Menang-Menang
Pemeliharaan adalah pekerjaan yang perlu kita lakukan pada sebuah aplikasi agar dapat diam dengan aman. Ini adalah biaya bisnis standar. Rata-rata 75% dari total biaya kepemilikan selama masa pakai aplikasi perangkat lunak.
Sebagai profesional, kami memiliki kewajiban untuk mendidik klien kami tentang perawatan sejak awal. Ada peluang besar di sini untuk penghasilan tambahan sambil memberikan nilai nyata kepada klien Anda. Anda dapat mempertahankan hubungan komersial yang berkelanjutan dan akan menjadi orang pertama yang mereka tuju ketika mereka memiliki persyaratan baru.
Terus memberikan nilai melalui pengikut Anda akan membangun kepercayaan dengan klien. Anda akan mendapatkan platform untuk menyarankan peningkatan atau fitur baru. Pekerjaan yang Anda memiliki peluang besar untuk menang. Klien Anda mengurangi biaya seumur hidup, mengurangi risiko, dan tidak lagi mengkhawatirkan kinerja atau keamanan.
Bantulah diri Anda sendiri, klien Anda, dan seluruh industri kami: bantu membuat pemeliharaan aplikasi web menjadi lebih penting.