Apa yang mendefinisikan peran "pengembang perangkat lunak"

10

Saya seorang pengembang perangkat lunak junior dan saya telah bekerja untuk sebuah perusahaan kurang dari setahun.

Sementara saya selalu berpikir menjadi pengembang perangkat lunak berarti mengembangkan perangkat lunak dan CODE sesuatu, tugas saya lebih pada jenis pekerjaan administrasi, seperti mengatur Jenkins, Replikasi SQL, dll.

Apakah jenis pekerjaan ini termasuk dalam peran Pengembang, atau pengembang hanya mengembangkan perangkat lunak? Haruskah saya berbicara dengan manajer saya tentang ini? Apakah ini cara yang umum bagi perusahaan untuk mengevaluasi keterampilan "mengembangkan"?

mrz
sumber
9
Tergantung pada siapa bos Anda yang berambut runcing.
Neil
Setiap perusahaan akan mendefinisikan peran sedikit berbeda. Tanyakan kepada manajer Anda apa tanggung jawab dan harapan yang diperlukan peran tersebut.
Bernard
4
Ada periode waktu ketika tukang kayu harus memuat kayu, mendorong gerobak dorong, dll. Itu semua adalah bagian dari pekerjaan. Jika Anda seorang tukang kayu yang tidak berpengalaman, Anda mungkin melakukan lebih banyak daripada tukang kayu senior.
Bryan Oakley
1
Pengembangan perangkat lunak> kode penulisan. Jika pengembang perangkat lunak tidak tahu cara mengatur / menggunakan dan / atau tidak tahu nilai (alat seperti) Jenkins, maka menurut definisi mereka akan menjadi (sangat) pengembang perangkat lunak junior. Pertimbangkan pelatihan di tempat kerja, dan anggap diri Anda beruntung bahwa Anda tidak bekerja di lingkungan di mana Anda harus menjalankan server CI Anda sendiri pada VM Anda sendiri yang dipertahankan pada waktu Anda sendiri untuk mempertahankan tingkat kualitas perangkat lunak yang diharapkan, namun dalam praktiknya tidak disarankan jika alat seperti ini tidak diizinkan dalam "proses" manual (kebanyakan manual).
michael

Jawaban:

11

Bagi saya sepertinya mereka merekrut seorang junior karena mereka tidak mampu membayar seorang senior, daripada karena mereka benar-benar menginginkan junior (seseorang yang dapat mereka investasikan dan dibimbing hingga mereka menjadi senior). Saya telah mengelola sebuah tim yang keputusannya dipaksakan kepada mereka oleh manajer yang tidak tahu lebih baik.

Dia berakhir dengan segala macam pekerjaan yang tidak menguntungkan seperti membuat video pelatihan untuk pengguna dan semacamnya dan saya masih merasa bersalah tentang hal itu sekarang, tetapi saya berada di bawah tekanan untuk menyampaikan dan harapannya adalah menambahkan kepala ke ruang pengembangan hanya akan mempercepat segalanya .

Sangat disayangkan, karena menempatkan Anda dan bos Anda dalam posisi yang sulit.

Dia mungkin tidak memiliki pekerjaan yang bisa dia percayai kepada junior, dan senior mana pun yang dia mungkin tidak dapat mengalihkan perhatiannya dari hari-hari mereka. Jalan keluar yang mudah adalah dengan memberikan banyak tugas-tugas non-pengembangan kepada junior, yang ia juga tidak benar-benar ingin menyia-nyiakan waktu pengembang senior.

Tetapi beberapa masalah muncul dari ini.

Pertama, jenis pekerjaan yang dia berikan kepada Anda benar-benar membutuhkan pengembang senior. Khususnya, server build harus dibuat oleh seseorang yang sedang membangun perangkat lunak dan tahu di mana titik-sakitnya.

Kedua, junior tidak menjadi lebih bermanfaat. Setelah lima tahun ini, Anda masih akan melakukan tugas yang sama, karena Anda masih tidak bisa dipercaya dengan pekerjaan pengembangan yang sebenarnya.

Ketiga, junior pada akhirnya akan (seperti yang Anda miliki) menyadari bahwa mereka tidak membantu karier mereka sendiri. Asumsi bahwa yunior berkualitas rendah, daripada rendah pada (dan mencari) pengalaman adalah kesalahan yang mengerikan, tetapi sangat umum, dalam industri ini.

Jadi, ya, duduklah bersama bos Anda. Tetapi pahami kesulitan yang dihadapi. Lihat apakah Anda dapat mencapai suatu pengaturan yang memecahkan masalah semua orang. Anda akan membutuhkan seorang mentor senior dan beberapa tugas Anda saat ini perlu diteruskan ke senior. Ini akan memperlambat proyek tetapi, dalam jangka panjang, itu akan membuahkan hasil. Itulah poin yang Anda butuhkan untuk menghubungi bos Anda, dan mungkin bos mereka. Juga, lihat apakah Anda dapat menemukan sesuatu yang dapat Anda tawarkan sebagai imbalan untuk mengurangi biaya.

Jika Anda tidak bisa maka Anda mungkin ingin mencari di tempat lain.

pdr
sumber
Ini BUKAN tugas "pengembang senior". (Jenkins) ini hanya mengikuti instruksi. Senior dev memutuskan jalan (dari pengalaman), junior dev mengikuti jalan. Jika pengembang junior mengeluh tentang pengaturan jenkins, saya akan mencari pengembang junior lainnya; waktu yang dibutuhkan untuk mengaturnya kurang dari waktu untuk mengirim pertanyaan ini dan membaca tanggapannya. (Saya tahu, karena saya telah mengatur hudson / jenkins berkali-kali. Dan replikasi basis data. Sooo berkali-kali.) "Lakukan saja," maka Anda akan tahu caranya. Jika Anda tidak pernah belajar bagaimana melakukan sesuatu, dan berharap untuk memimpin, Anda hanyalah seorang PHB dalam pelatihan.
michael
@michael_n: Sepenuhnya tidak setuju. Ada perbedaan antara pengaturan Jenkins dan pengaturan seluruh lingkungan pembangunan dengan cara yang mengurangi upaya dari semua pengembang, sambil memungkinkan penyebaran yang aman dan sekali klik, dll. Dan itulah perbedaan antara apa yang akan diberikan Junior kepada Anda dan apa yang Senior akan berikan kepada Anda, ketika diminta untuk membuat server build.
pdr
... namun saya setuju dengan Anda: "Ada perbedaan antara pengaturan Jenkins dan pengaturan seluruh lingkungan build." Persis. Jadi, saya kira itu tergantung jika Anda menafsirkan pertanyaan secara harfiah (saya lakukan). Memasang jenkins adalah sore; menyiapkan make / ant / maven build Anda membutuhkan waktu berhari-hari, dan dapat dengan mudah berubah menjadi minggu, & harus dilakukan dengan benar. Manajer yang baik dapat memecah hal-hal dan mendelegasikan berdasarkan pengalaman (dalam hal ini, saya telah menjadi manajer yang buruk di masa lalu, memilih untuk melakukan semuanya sendiri hanya karena itu sebenarnya akan lebih cepat. Tapi itu tidak skala, dan " tim "tidak berevolusi.)
michael
@michael_n: Lihat apa yang Anda maksud. Saya cenderung memiliki harapan yang lebih rendah dari seorang manajer, saya kira. Terutama orang yang mempekerjakan junior karena alasan keuangan, bukan perencanaan masa depan.
pdr
7

Saya menemukan istilah "Pengembang Perangkat Lunak" untuk menjadi identik dengan "Programmer". Jadi pengembang perangkat lunak adalah orang yang tanggung jawab utamanya adalah menulis kode. Dalam pekerjaan pertama saya, judul saya adalah "Pengembang", dan tanggung jawab utama saya adalah merancang dan membuat kode perangkat lunak. Tapi saya pikir tidak ada definisi pasti dari istilah itu. Ini digunakan secara berbeda oleh orang yang berbeda, sehingga artinya menjadi kabur.

Tetapi agar tim pengembangan dapat bekerja secara efisien, Anda harus mengatur hal-hal ini, server CI, replikasi SQL, Penempatan ke server uji, pemantauan server uji, pengarsipan bangunan, dll. (Mungkin tidak semuanya berlaku dalam situasi apa pun) .

Tugas-tugas ini akan memakan banyak waktu dalam fase awal proyek, tetapi akan memakan waktu lebih sedikit setelah Anda menjalankan setup yang bagus.

Sayangnya, pengembang lebih suka kode daripada mengelola membangun server. Oleh karena itu sering, tugas-tugas membosankan ini jatuh ke tangan pengembang junior, karena pengembang senior memiliki tugas yang lebih penting.

Saya belum pernah mengalami perusahaan yang menggunakan tugas-tugas ini sebagai sarana untuk mengevaluasi keterampilan.

Jika Anda tidak puas dengan tanggung jawab Anda saat ini, saya sarankan mengambil masalah dengan manajer lini Anda.

Pete
sumber
1
Ada perbedaan antara ketentuan menurut ini .
Bernard
1
juga menurut ini
smp7d
2

Tergantung. Tampaknya perusahaan yang berbeda mendefinisikan ini secara berbeda dan untuk beberapa itu adalah istilah umum untuk berbagai fungsi teknis. Bagi sebagian orang itu hanyalah sebuah gelar. Mengajukan pertanyaan yang sama sebelumnya, saya mendapat jawaban yang mirip dengan "Hanya pengembang yang memiliki kemampuan untuk melakukan ini di organisasi kami", saya akan mengatakan mungkin, tetapi itu tidak selalu membuatnya berkembang).

Jawaban teoritisnya adalah bahwa seorang pengembang (membandingkan dengan coder / programmer) adalah orang yang "memecahkan masalah" bahkan jika mereka tidak harus melakukan "pengkodean sesuatu".

Anda ingin kode lebih banyak, jadi mungkin meminta manajer Anda untuk lebih banyak tugas pengkodean atau untuk melakukan beberapa hal yang Anda lakukan dengan pengkodean? Anda menyebutkan hal-hal operasional, jadi mungkin beberapa dari mereka dapat dilakukan oleh kerangka kerja DevOps (periksa koki dan boneka ), yang akan membuat fungsi lebih efisien dan dekat dengan pengembangan.

Dimitrios Mistriotis
sumber
2

Hal ini tidak biasa untuk Pengembang diharapkan untuk memiliki beberapa keterampilan administrasi sistem. Sebagai pengembang senior, saya memperkirakan sekitar 5% dari waktu saya dihabiskan untuk tugas-tugas seperti itu.

Namun, jika Anda tidak melakukan apa pun coding, maka Anda mungkin harus berbicara dengan manajer Anda tentang mendapatkan tugas coding. Bagaimanapun, Anda ingin membangun pengalaman pengkodean. Anda juga lebih berharga sebagai programmer daripada sebagai administrator sistem.

Gustav Bertram
sumber
1

Kode tidak terlalu berguna jika tidak dibangun ke dalam aplikasi dengan benar, atau mengakses data yang benar, sehingga kegiatan yang Anda daftarkan tampak sangat sejalan dengan apa yang dilakukan pengembang. Saya harus menambahkan bahwa pengembang perangkat lunak juga sangat terlibat dalam dokumentasi dan pengujian. Ini adalah kegiatan yang diperlukan dalam pembuatan perangkat lunak.

Sangat bagus jika perusahaan Anda memiliki spesialis yang dapat melakukan hal ini untuk Anda, tetapi jika tidak, pengembang perangkat lunak bertanggung jawab atas semuanya hingga (dan mungkin termasuk) menyebarkan aplikasi ke dalam produksi dan mendukungnya di sana.

Matthew Flynn
sumber
0

Sangat umum bagi pengembang di perusahaan kecil hingga menengah untuk melakukan beberapa tugas administrator server / DBA / konfigurasi umum.

Namun, jika tugas-tugas ini mulai menjadi bagian terbesar dari tanggung jawab Anda, itu mungkin sesuatu yang perlu dikhawatirkan tergantung pada tujuan karir Anda. Meskipun Anda mungkin dapat berkembang dalam perusahaan tertentu sebagai teknolog umum, ketika Anda harus pindah ke perusahaan baru, hal itu dapat menyebabkan banyak masalah dalam transisi Anda. Jika Anda tidak melakukan pengembangan tradisional, Anda harus memastikan untuk menjelaskannya pada resume Anda. Jika Anda ingin mendapatkan pekerjaan dalam pengembangan langsung setelah bertugas di pekerjaan seperti yang Anda jelaskan, Anda mungkin harus menerima sesuatu yang Anda "overqualified" karena berdasarkan tahun di industri.

Di sisi lain, mungkin ada perusahaan yang mencari pengembang dengan beragam keterampilan. Tetapi dengan tren penulisan kode saat ini dalam wawancara, Anda juga harus memiliki keterampilan pengkodean terbaik, bahkan jika pekerjaan tersebut membutuhkan sedikit kode begitu Anda masuk.

Jika Anda tidak ingin terjebak dalam posisi Anda saat ini, saya pasti akan mencoba untuk memperbaiki situasi ini segera.

smp7d
sumber