Jika ada dua cara untuk mendekati suatu tugas, bagaimana seharusnya seseorang memilih di antara mereka?

11

Saya memiliki kasus penggunaan khusus, dan telah menemukan 3 cara melakukannya di internet, yang didefinisikan untuk kasus penggunaan yang tidak jelas. Saya menatap ketiga orang ini bertanya-tanya mana yang harus diterapkan.

Saya cenderung duduk di sana tanpa tahu harus berbuat apa - lalu tidak melakukan apa-apa ... Apakah ada cara yang baik untuk memilih? Haruskah saya mencoba semuanya?

Untuk lebih spesifik untuk beberapa konteks, saya mencoba membuat permainan papan yang sangat ringan di mana saya memerlukan sebagian layar yang bisa saya putar kotak permainan papan, memperbesar ke dalam kotak, dan memindahkan potongan-potongan di kotak ini . Saya tidak tahu bagaimana melakukan ini, tetapi saya menemukan hal-hal online seperti Core Animation, Core Graphics, Sprite Kit, dan saya melihat argumen untuk dan melawan mereka - misalnya Sprite kit tingkat tinggi, tetapi menjaga frame rate pada 60, yang adalah pemborosan baterai ketika tidak ada yang benar-benar bergerak di layar. Core Animation adalah API tingkat lebih rendah, yang menentang panduan Apple untuk "mengambil level abstraksi tertinggi". Saya tidak ingin belajar 3 hal untuk digunakan 1. Apakah ada cara saya dapat memilih dan melepaskan diri?

Saya meninggalkan pertanyaan ini sebagai pertanyaan yang tidak jelas karena saya pikir ini berlaku di seluruh bidang perangkat lunak.

Skidushe
sumber

Jawaban:

16

Anda melakukan analisis biaya / manfaat pada masing-masing pendekatan, dan memilih pendekatan yang memiliki rasio manfaat / biaya keseluruhan tertinggi.

Dalam kasus perpustakaan yang bersaing yang pada dasarnya menjalankan fungsi yang sama, cara terbaik, termudah dan tercepat untuk melakukan analisis itu adalah dengan berdiri prototipe kecil menggunakan masing-masing perpustakaan. Yang mana yang lebih disukai harus menjadi sangat jelas.

Pertimbangan biaya / manfaat yang mungkin untuk perpustakaan:

  • Maintabilitas
  • Kemudahan penggunaan
  • Dokumentasi yang memadai
  • Kurva belajar
  • Performa secara keseluruhan
  • Beli vs. Bangun

... dll. Perhatikan bahwa banyak dari pertimbangan ini bisa agak subyektif.

Apakah itu hobi atau karier, tidak masalah. Anda akan (dan harus) menggunakan proses yang sama jika Anda memutuskan untuk melanjutkan eksplorasi menjadi karier yang sebenarnya.

Alternatif strategi pengambilan keputusan: Pilih yang Anda suka.

Robert Harvey
sumber
4
Dalam hal lib dan implementasi pihak ke-3, saya akan menambahkan: dukungan komunitas , versi estabel (bukan beta, kandidat rilis atau snapshot) , dokumentasi tentang saldo
Laiv
6
Wajib xkcd: xkcd.com/1445
Sebastian Redl
15

Sebagai tambahan untuk jawaban luar biasa Robert Harvey, berikut 2 sen saya:

Pilih satu pendekatan yang tampaknya paling tidak mudah untuk memulai, tetapi pastikan Anda tetap membuka pintu untuk beralih ke pendekatan yang berbeda ketika ternyata solusi yang Anda pilih pertama memiliki terlalu banyak masalah. Dan jika Anda mencurigai adanya masalah tertentu di area tertentu dari skenario penggunaan Anda, pastikan Anda menerapkan area tersebut terlebih dahulu, sehingga Anda mendapatkan umpan balik awal, sebelum terlambat untuk mengembalikan keputusan awal Anda.

Seberapa baik ini bekerja sangat tergantung pada kasus ini. Misalnya, jika Anda memerlukan pustaka sederhana untuk mengakses perangkat eksternal atau format file tertentu, pastikan Anda merangkum semua akses pustaka dalam lapisan aplikasi Anda. Namun, jika Anda tidak yakin tentang kerangka mana yang harus dipilih, atau bahasa pemrograman mana yang harus dipilih, analisis biaya / manfaat yang menyeluruh mungkin bisa Anda lakukan.

Terkadang lebih baik mengambil keputusan, meskipun itu hanya yang terbaik ke-2, selama Anda benar-benar melakukannya.

Doc Brown
sumber