Apakah versi utama cepat menabrak bukti desain yang buruk?

16

Saya memulai pekerjaan sebagai programmer junior beberapa bulan yang lalu. Sistem yang kami kerjakan telah berproduksi selama ~ 2 tahun. Saya tidak terlibat dalam mengemis sistem dan desain.

Satu hal yang saya perhatikan adalah bahwa versi sistem utama sudah 11.YZ Membentuk pengalaman saya bekerja dengan sistem dan perpustakaan lain, saya tidak ingat melihat produk menabrak versi utama yang cepat. Ada produk yang telah bertahun-tahun di 1.XY, dan masih menerima fitur dan perbaikan bug.

Dengan asumsi bahwa versi semantik digunakan dengan benar, apakah ini menunjukkan bahwa sistem ini dirancang dengan buruk karena membuat perubahan besar hampir setiap empat bulan?

pengguna367035
sumber
2
Pertanyaan itu akan tergantung pada apakah perubahan besar yang melanggar itu mendatangkan cukup banyak manfaat (dan laba) yang membenarkan tingkat perubahan yang tinggi.
rwong
3
Jika nomor versi itu menggunakan Semver, dan jika sistem memiliki pustaka atau API lain yang bergantung pada tim atau organisasi lain, maka angka utama yang tinggi ini berarti ada masalah untuk berkomitmen pada desain API yang stabil dan dapat diperluas. Ini juga berarti bahwa ketidakcocokan komunikasi yang jelas sangat dihargai yang merupakan hal yang baik. Untuk hal lain (seperti nama pemasaran, program aplikasi, nomor non-Semver, ...) nomor tersebut tidak ada artinya dan harus diabaikan. Tanyakan saja kepada rekan kerja Anda tentang hal ini, sebagai bagian dari upaya Anda mengenal proyek dengan lebih baik.
amon
3
@amon Sistem ini digunakan secara internal dengan klien seluler publik yang berkomunikasi dengan sistem melalui API seperti REST. Versi ini adalah Semver seperti yang saya sebutkan dan bukan versi pemasaran.
user367035
Angka tidak masalah, tetapi saya akan curiga jika pengenal versi menyertakan akronim lucu, seperti Windows NT atau Windows ME atau XP atau benar-benar Windows apa pun.
John Wu
1
@ JohnWu: pertanyaannya khusus tentang angka, jadi, ya, nomor itu penting. Lebih tepatnya, ini adalah tentang jumlah dalam konteks SemVer, di mana jumlah tidak hanya tidak peduli, tetapi juga memiliki makna tepatnya ditentukan.
Jörg W Mittag

Jawaban:

14

Dengan asumsi bahwa versi semantik digunakan dengan benar, apakah ini menunjukkan bahwa sistem ini dirancang dengan buruk karena membuat perubahan besar hampir setiap empat bulan?

Belum tentu.

Anda menyebutkan dalam komentar bahwa ini adalah API internal. Merusak API itu buruk, karena Anda merusak kode semua orang. Tetapi untuk API internal "semua orang" hanyalah "Anda", dan Anda sepenuhnya mampu mengoordinasikan perubahan API semacam itu dengan diri Anda sendiri, sehingga rasa sakit yang biasanya terkait dengan perubahan API jauh lebih buruk.

Juga, rata-rata bisa menyesatkan secara besar-besaran: mungkin mereka memiliki 11 perubahan API melanggar selama beberapa hari pertama pengembangan awal dan telah stabil selama 4 tahun sejak itu? SemVer memungkinkan Anda untuk melakukan perubahan tanpa menambah angka utama jika angka utama adalah 0, tetapi itu tidak memaksa Anda untuk melakukannya. Mungkin mereka mulai menggunakan SemVer dari hari 0, bahkan selama fase prototyping / eksplorasi?

Jörg W Mittag
sumber
5
Jawaban ini sepertinya langsung menjawab pertanyaan. Beberapa jawaban lain akan valid jika bukan karena asumsi OP tentang versi semantik.
joshp
Yang juga penting adalah bahwa memecah perubahan tidak selalu utama. Terkadang mereka benar-benar sangat kecil (namun penting). Jadi mereka bisa membutuhkan sedikit perubahan untuk pengguna. Selain itu, bisa ada tingkat kerusakan yang cukup besar tergantung pada bagaimana API digunakan. Kadang-kadang perubahan yang melanggar tidak akan memengaruhi semua pengguna, misalnya. Selain itu, perbaikan bug dapat menyebabkan perubahan yang melanggar, namun sangat ideal untuk memperbaikinya lebih cepat daripada nanti. Dan jika API internal, maka jauh lebih mudah untuk menangani perubahan kecil ini.
Kat
1

Jawaban singkat

Tidak

Jawaban panjang

"Terkadang angka hanya angka"

Lupakan "versi semantik", "rasionalitas", "logika" di dunia gila saat ini

Mengapa Chrome melahap nomor versi dengan begitu cepat?

angka "versi" digunakan sebagai Tonggak untuk titik cabang, bukan Rilis Utama untuk membuat kagum publik seperti pengembang lain menggunakannya. Dan ini merupakan alur pengembangan yang berkelanjutan, dengan fitur siap atau tidak siap, daripada acara sesekali menyatukan banyak fitur baru untuk membuat acara besar

Malas Badger
sumber
7
OP telah mengatakan bahwa mereka menggunakan versi semantik; mengapa Anda kemudian mengabaikannya?
Jörg W Mittag
-3

Saat menggunakan versi semantik, masih ada keputusan yang harus dibuat, perubahan mana yang dianggap "utama", dan mana yang "kecil". Ada berbagai alasan untuk menabrak nomor versi - atau tidak menabraknya.

Sistem dengan janji kompatibilitas mundur mungkin berakhir dengan menabrak nomor versi utama dengan sebagian besar pembaruan, hanya karena ada jeda kompatibilitas mundur dalam beberapa kasus sudut esoteris. Sistem yang sama mungkin tetap berpegang pada 1.xy hampir tanpa batas, karena banyak upaya dimasukkan ke dalam kompatibilitas ke belakang, berusaha untuk tidak pernah merusak sistem ketergantungan apa pun. Kedua pendekatan untuk penomoran versi dapat dianggap "konservatif", tetapi keduanya juga bisa menjadi tanda masalah mendasar yang mendasar.

Di lain waktu, Anda benar-benar memiliki jadwal rilis (bayangkan CD pembaruan triwulanan dikirim ke pelanggan) di mana masuk akal untuk mengubah nomor versi utama, sehingga alih-alih "Versi 3.4 / 16 Oktober" itu hanya mengatakan "Versi 11.0". Saat ini, semakin banyak perangkat lunak dirilis dalam interval pendek, membuat jadwal rilis semakin sedikit alasan untuk tetap berpegang pada skema versi tertentu. Saya telah melihat ini dalam sistem gudang besar yang memungkinkan TI internal hanya satu hari downtime seperempat (biasanya hari Minggu). Hari ini adalah hari penerapan dan ditandai dengan versi utama baru setiap saat.

Beberapa program memiliki ketergantungan eksternal yang paling penting, karena pengguna harus memperbarui keduanya secara bersamaan. Jika Anda memiliki Word-addon yang hanya berfungsi dengan Word 2010 dan yang lain untuk Word 2013, Anda mungkin ingin menyinkronkan nomor versi utama Anda dengan MS-Word. Di sini, angka-angka utama sangat penting, karena beberapa pengguna Anda akan "berada di belakang" jadwal pembaruan normal Anda, karena mereka belum memperbarui ke versi Word terbaru (atau apa pun yang Anda andalkan: SAP, Dynamics, dll).

Kadang-kadang, faktor eksternal lainnya menentukan nomor versi. Jika Anda memiliki perangkat lunak fiskal, mungkin ada pembaruan tahunan yang sesuai dengan undang-undang perpajakan (yang cenderung berlaku pada 1 Januari). Sistem seperti itu akan memiliki versi utama yang berubah tepat setahun sekali - bukan karena itu adalah jadwal pembaruan, tetapi karena itu adalah hal lain yang penting bagi pelanggan: Jika Anda melakukan pajak tahun 2016, Anda lebih baik memiliki program yang diperbarui ke undang-undang pajak 2016.

Pada akhirnya, nomor versi bergantung pada begitu banyak faktor - seringkali khusus untuk satu domain - sehingga jumlahnya sendiri tidak memberi tahu Anda apa - apa tentang status basis kode Anda. Ini adalah pendekatan yang jauh lebih baik untuk melihat kapan, mengapa dan bagaimana penyebaran terjadi - dan bagaimana kelancarannya. Jika Anda dapat meluncurkan pembaruan besar ke 10.000 pelanggan dan melakukan beberapa panggilan telepon - Anda mungkin baik-baik saja. Jika Anda meluncurkan patch kecil untuk 10 pelanggan dan harus bekerja lembur karena itu, ada sesuatu yang mungkin salah.

Hazzit
sumber
3
"Ketika menggunakan versi semantik, masih ada keputusan yang harus dibuat perubahan mana yang dianggap" utama ", dan mana yang" kecil "." - Tidak, tidak ada; yang didefinisikan secara spesifik dalam spesifikasi. "Ada berbagai alasan untuk menabrak nomor versi - atau tidak menabraknya." - Tidak, tidak ada; hanya ada satu alasan untuk menambah bilangan utama (pertanyaan ini adalah tentang), dan itu didefinisikan secara spesifik dalam spesifikasi.
Jörg W Mittag
1
@ JörgWMittag Entah saya salah membaca, atau spesifikasinya mengatakan kapan Anda HARUS menabrak nomor versi, tetapi tidak mengatakan apa-apa tentang kapan Anda MUNGKIN.
Hazzit
-4

Konsensus tentang arti nomor versi memang mayor.minor.revision.buildnumber

Jika besar naik dengan cepat itu bisa jadi pengembang memiliki semua ide-ide baru ini dan bekerja sangat keras.

Namun di dunia bisnis mungkin ada alasan lain untuk menambah nomor versi utama. Suka

  • Penjualan menurun, klien / pengguna menunggu rilis besar besar berikutnya sebelum meningkatkan.

  • Kontrak mengatakan klien berhak atas pembaruan kecil. Vendor tidak dapat membebankan biaya untuk mereka sehingga beberapa perbaikan kecil dijual sebagai peningkatan produk utama.

  • Pesaing X telah berada dalam permainan sedikit lebih lama sehingga nomor versi utama mereka kebetulan lebih tinggi daripada Anda. Ini membuatnya terlihat seperti Anda tertinggal, Anda harus "mengejar ketinggalan".

Martin Maat
sumber
6
Pertanyaan ini ditandai dengan versi semantik , OP menyebutkan versi semantik dalam pertanyaan, dan telah menegaskan kembali dalam komentar bahwa mereka menggunakan versi semantik. Spesifikasi SemVer mengatakan dengan sangat jelas ketika versi-versi utama bertambah. Tidak ada "alasan lain" Anda yang berlaku.
Jörg W Mittag