it-swarm-id.com

Apa perbedaan utama antara insinyur perangkat lunak dan pemrogram?

Apa perbedaan utama antara insinyur perangkat lunak dan pemrogram?

102
grokus

Saat merekrut, kami mencari perbedaan antara seseorang yang akan dapat membantu kami merancang sistem kami, menentukan proses, membuat spesifikasi teknis, menerapkan refactoring lanjutan, dll. Dan seseorang yang akan membantu kami menyelesaikan tugas pemrograman dari daftar periksa . Saya percaya Anda bisa memanggil yang pertama Insinyur Perangkat Lunak dan yang terakhir Programmer.

79
Nicole

Terserah perusahaan sebenarnya, karena saya tidak berpikir ada kerangka hukum untuk menegakkan denominasi atau yang lain, atau setidaknya tidak saya sadari dan ini mungkin berbeda dari satu negara ke negara lain (misalnya, penggunaan istilah "Insinyur" sebenarnya cukup diatur di Perancis, tetapi ada varian yang diperbolehkan untuk kasus "kasar").

Yang mengatakan tren umumnya seperti ini:

  • Posisi programmer biasanya adalah salah satu dari seorang profesional yang disewa untuk menghasilkan kode program komputer . Ini akan menyiratkan bahwa Anda tahu cara menulis kode , dapat memahami suatu algoritma dan ikuti spesifikasi . Namun, biasanya berhenti di sana dalam hal tanggung jawab.

  • A developer position biasanya dianggap super-type dari posisi programmer . Ini mencakup tanggung jawab yang sama, plus kemampuan untuk merancang dan merancang komponen perangkat lunak , dan untuk tulis dokumentasi teknis untuk itu (termasuk spesifikasi). Anda dapat - setidaknya secara teknis - memimpin orang lain (jadi, programmer), tetapi tidak harus tim (ada fuzz ...)

  • Posisi insinyur biasanya menyiratkan bahwa Anda adalah pengembang yang memiliki jenis gelar tertentu , sebagian pengetahuan teknik , dan mampu merancang sistem (seperti pada: kombinasi perangkat lunak komponen/modul yang bersama-sama membentuk entitas perangkat lunak keseluruhan). Pada dasarnya, Anda melihat gambar yang lebih luas , dan Anda dapat merancang dan menjelaskan dan memisahkannya menjadi modul yang lebih kecil .

Namun, semua ini bisa diperdebatkan, dan seperti yang saya katakan, tidak ada persyaratan hukum yang saya ketahui di negara-negara AS/Inggris . Yang sedang berkata, di Perancis Anda hanya dapat menyebut diri Anda seorang "insinyur" jika Anda berasal dari sekolah teknik (diakui oleh Komisi des Titres d'Ingenieurs atau sesuatu seperti itu). Anda tidak dapat mengatakan bahwa Anda memiliki "Gelar Insinyur", tetapi Anda dapat mengatakan bahwa Anda memiliki "Sarjana Teknik" jika Anda telah mempelajari disiplin yang berada di bawah portemanteau teknik dan teknologi.

Mungkin beberapa negara memiliki perbedaan yang sama, saya hanya tidak benar-benar tahu.

Kembali ke judul insinyur perangkat lunak ... Suatu kali, salah satu guru saya memberi tahu kelas kami - dan memang demikian - bahwa tidak ada hal seperti itu, pada hari ini, yang disebut "rekayasa perangkat lunak". Karena merekayasa sesuatu (baik itu bangunan, kendaraan, perangkat keras ...) berarti Anda mampu membayangkan desainnya dan semua fase produksinya, dan untuk memprediksi dengan akurat sumber daya yang Anda perlukan, dan dengan demikian biaya produksi.

Ini berlaku untuk sebagian besar disiplin ilmu teknik "benar". Ada fluktuasi, tentu saja (harga bahan akan bervariasi dari waktu ke waktu, misalnya), tetapi ada model teoritis yang sangat terbatas (untuk desain dan perencanaan) dan model empiris (untuk menjaga sebagian besar yang sebelumnya dalam keterbatasan yang dapat diakses) yang memungkinkan Anda untuk memprediksi tanggal penghentian proyek dan penggunaan sumber dayanya.

Masalah utama dengan perangkat lunak adalah bahwa itu belum ada di sana. Kami ingin membidik rekayasa perangkat lunak, tetapi sebenarnya kami belum ada di sana. Karena kami memiliki lingkungan yang sangat lancar dan dinamis, kendala yang sangat bervariasi untuk proyek, dan masih kurang matang dalam retrospeksi dalam proses kami. Tentu kita bisa mengatakan kita menjadi lebih baik (sangat bisa diperdebatkan dengan data-keras), tetapi kita hanya melakukannya sejak tahun 60-an (proyek sebelumnya sebenarnya lebih dekat dengan komputer hanya perangkat keras, sehingga lebih dekat dengan rekayasa nyata, ironisnya ). Padahal kami telah membangun kendaraan bermotor selama lebih dari seabad, kendaraan secara umum selama beberapa millennias, dan bahkan membangun lebih banyak millennias (dan sudah sangat bagus melakukannya di beberapa bagian dunia, membuat Anda merasa seperti kami Sedang anak-anak konyol bermain dengan mainan perangkat lunak mencolok baru kami sebagai perbandingan).

Kami gagal secara sistematis memprediksi tenggat waktu secara akurat , kami gagal memprediksi secara sistematis biaya secara akurat , kami gagal mengidentifikasi dan memitigasi risiko yang melekat dan eksternal secara efisien dan deterministik secara sistematis . Yang terbaik yang dapat kami lakukan adalah menghasilkan cukup baik tebak wakt, dan mengakomodasi beberapa penyangga, sambil mencoba yang terbaik untuk mengoptimalkan proses untuk mengurangi siklus dan overhead.

Tapi begini, mungkin itulah rekayasa. Dan itulah yang, ketika seseorang berbicara tentang "insinyur perangkat lunak", mereka harus memikirkan dan membidik.

Sehingga tampaknya tidak dapat dipertukarkan dengan tindakan sederhana dari rutinitas pemrograman, atau tindakan yang lebih maju dalam mengembangkan aplikasi.

Namun, semuanya adalah masalah tren. Akhir-akhir ini cukup umum untuk memiliki tim pengembang horizontal di mana semua orang di tim adalah Pengembang Perangkat Lunak Senior (ya, huruf kapital, karena itu membuat kita merasa istimewa, bukan?), Tanpa perbedaan usia yang nyata (cukup adil, dalam pendapat) dan tidak begitu banyak perbedaan keterampilan (uh-oh ...) dan tanggung jawab (sekarang itu tidak baik, selain murni untuk buzz PR).

Ini juga kadang-kadang hanya kekuatan kebiasaan dan spesifik untuk budaya dan jargon industri. Lebih banyak posisi untuk produksi perangkat lunak tertanam menggunakan judul untuk insinyur perangkat lunak. Sebagian besar karena itu mungkin akan menyiratkan bahwa Anda akan selalu harus berurusan dengan tingkat tertentu dengan perangkat keras juga di bidang ini, jadi Anda jelas berurusan dengan aspek-aspek lain dari produksi dan seluruh "sistem" yang Anda hasilkan. Bukan hanya bit yang menjadi gila di dalamnya. Di sisi lain spektrum, Anda tidak benar-benar melihat istilah insinyur yang digunakan dalam posisi produksi perangkat lunak keuangan. Ini karena evolusi mimetik dari industri ini dari salah satu pendahulunya (katakanlah, embedded engineering menemukan akarnya dalam rekayasa mobil, misalnya), atau karena mereka hanya ingin memberikan kredit/bobot lebih atau kurang untuk suatu posisi.

Dan untuk memastikan kehilangan semua orang dalam kabut, Anda kemudian akan menemukan judul lain mencampur keduanya (seperti "Software Development Engineer" atau "Software Engineer in Test"!), Dan kemudian yang lain menekankan bahkan jembatan yang lebih gila dengan domain lain (pikirkan "Arsitek Perangkat Lunak" dan bagaimana "arsitektur perangkat lunak" mungkin merupakan pencurian kosa kata yang tidak tahu malu). Dan teruskan mereka: Release Engineer, Change Development Manager, Build Engineer (yang itu juga ffaaarrrrrr di luar sana). Dan terkadang hanya "insinyur".

Harapan itu membantu, meskipun itu sebenarnya bukan jawaban.

Oh, dan itu berarti perusahaan baru Anda mencoba memikat Anda dengan gelar baru atau mereka tidak terlalu peduli dengan judul, atau bahwa Anda benar-benar akan memiliki posisi tingkat yang lebih tinggi. Satu-satunya cara mengetahui adalah membaca spec pekerjaan Anda, berbicara dengan mereka dan akhirnya mencobanya dan menilai sendiri. Saya harap ini opsi terakhir dan Anda senang dengannya (dan berpotensi menghasilkan lebih banyak uang). ;)

130
haylem

Insinyur perangkat lunak adalah orang yang bekerja di perusahaan yang menyebut orang yang menulis perangkat lunak untuk mereka "insinyur perangkat lunak."

Programmer adalah orang-orang yang bekerja di perusahaan yang menyebut orang-orang yang menulis perangkat lunak untuk mereka "programmer."

Ada juga pengembang, atau pengembang perangkat lunak. Mereka adalah orang-orang yang bekerja di perusahaan yang menyebut orang-orang yang menulis perangkat lunak untuk mereka masing-masing "pengembang" atau "pengembang perangkat lunak,".

81
Jer

Jadi ada "Software Engineer", "Programmer", dan juga "Developer", "Coder" dan Anda tidak akan pernah melupakan "pakar SOA"

Ini semua adalah istilah pemasaran untuk orang-orang yang tidak bisa mengatakan sesuatu yang berarti dalam CV mereka, seperti peran mereka yang sebenarnya (bukan hanya jabatan-pekerjaan) di posisi sebelumnya.

Pada iklan pekerjaan, perbedaannya tergantung pada orang SDM.

Intinya: setiap orang memiliki pandangan sendiri tentang "apa yang membuat karyawan yang baik-yang-bekerja-dengan-kode", dan beberapa suka mengasosiasikan keterampilan ini dan itu dengan judul ini dan itu.

Apa yang kamu butuhkan? Iklan pekerjaan harus deskriptif tentang keterampilan yang diperlukan, dan CV harus menjelaskan detail pengalaman kandidat.

15
Ken Egozi

Tidak ada perbedaan. Mereka adalah hal yang sama. Perusahaan, meskipun, mungkin memiliki deskripsi pekerjaan formal menggunakan istilah, dan kemudian mungkin ada beberapa makna spesifik perusahaan untuk istilah tersebut.

10
GrandmasterB

Pemrograman adalah tentang kode. Rekayasa perangkat lunak adalah tentang produk akhir.

8
darreljnz

Dalam beberapa yurisdiksi, "Insinyur" disertai dengan persyaratan menjadi insinyur profesional, yaitu memiliki P.Eng. desigasi di antara kredensial seseorang. Namun, di daerah lain mungkin tidak ada perbedaan karena saya adalah "Softwere Design Engineer" yang bekerja di negara bagian Washington beberapa tahun yang lalu.

3
JB King

Itu benar-benar tergantung pada bagaimana perusahaan menentukan posisi. Mungkin sebagai insinyur perangkat lunak Anda akan memiliki lebih banyak peluang keputusan desain, sedangkan sebagai pengembang mereka akan memberi Anda diagram UML dan Anda akan menulis program.

Tapi, tidak ada definisi yang nyata sehingga berdasarkan judul akan orang tahu apa yang Anda lakukan, atau seberapa berpengalaman Anda.

Ketika saya seorang arsitek/pengembang, gelar saya adalah ilmuwan komputer, tetapi saya hanya akan memberi tahu orang-orang bahwa saya adalah seorang programmer, karena dua yang pertama tidak mudah didefinisikan, tetapi kebanyakan orang tahu apa yang dilakukan seorang programmer.

Jika sebuah judul penting bagi Anda, maka terimalah yang baru, karena insinyur terdengar lebih tinggi daripada pengembang.

3
James Black

Saya tidak berpikir ada "perbedaan resmi", untuk pengalaman saya itu bisa berarti:

  • Beberapa perusahaan menggunakan insinyur perangkat lunak dan pengembang perangkat lunak untuk merujuk pada hal yang sama. Mereka hanya menggunakan istilah favorit mereka.
  • Lainnya menggunakan kedua istilah untuk posisi dalam yang berbeda, tetapi perannya berbeda dari perusahaan ke perusahaan! Dalam beberapa bisa hanya perbedaan pada fungsi (insinyur lunak. Akan bekerja pada pemeliharaan dan peningkatan sistem sementara pengembang akan bekerja pada produk perusahaan), atau bisa hierarkis (insinyur di atas pengembang), atau bahkan sang insinyur benar-benar bergantung pada T&J!

Juga, juga istilah mode yang berubah ... Pertama istilahnya adalah "programmer", kemudian "insinyur perangkat lunak" dan sekarang tampaknya "pengembang" ...

Lebih baik membaca deskripsi pekerjaan atau kepada seseorang di perusahaan tertentu

3
Khelben

Insinyur Perangkat Lunak cenderung bekerja pada sistem yang sangat besar dan membutuhkan waktu bertahun-tahun untuk dikembangkan, mis. 5 hingga 16 tahun misalnya. Programmer cenderung memiliki stereotip ini hanya coding dan tidak ada yang lain. Tetapi itu benar-benar tergantung pada organisasi tempat Anda bekerja dan bagaimana SDM memasarkan peran seperti dijelaskan di atas. Mereka pada dasarnya adalah hal yang sama. Hanya saja, jangan terlalu terikat pada judul karena itu identik.

2
Siamac Nikoo