Apakah saya tetap bisa menggunakan bahasa yang tidak didukung oleh perusahaan Anda untuk beberapa tugas?

27

Saya bekerja untuk perusahaan yang mendukung beberapa bahasa: COBOL, VB6, C # dan Java.
Saya menggunakan bahasa-bahasa itu untuk pekerjaan utama saya, tetapi saya sering menemukan diri saya untuk mengkode beberapa program kecil (misalnya skrip) dengan Python karena saya menemukan itu menjadi alat terbaik untuk jenis tugas itu.

Sebagai contoh: Seorang analis memberi saya file CSV yang kompleks untuk mengisi beberapa tabel DB, jadi saya akan menggunakan Python untuk menguraikannya dan membuat skrip DB.

Apa masalahnya?
Masalah utama yang saya lihat adalah bahwa beberapa bagian dari skrip cepat & kotor ini perlahan-lahan menjadi penting dan:

  1. Perusahaan saya tidak mendukung Python
  2. Mereka tidak dikontrol versi (saya mendukungnya dengan cara lain)
  3. Rekan kerja saya tidak tahu Python

Para analis bahkan sudah mulai mereferensikan mereka dalam email ("luncurkan skrip yang mengekspor ..."), sehingga mereka dibutuhkan lebih sering daripada yang saya pikirkan.

Saya harus menambahkan bahwa skrip ini hanya utilitas yang bukan bagian dari proyek utama; mereka hanya membantu menyelesaikan tugas-tugas sepele dalam waktu yang lebih singkat. Untuk tugas kecil saya sendiri, mereka banyak membantu.

Singkatnya, jika saya adalah pemenang lotre yang mengalami kecelakaan , rekan kerja saya perlu menjaga proyek tetap hidup tanpa skrip tersebut; mereka akan menghabiskan lebih banyak waktu dalam memperbaiki kesalahan CSV dengan tangan misalnya.

Apakah ini skenario umum? Apakah saya melakukan sesuatu yang salah? Apa yang harus saya lakukan?

systempuntoout
sumber
22
Jika rekan kerja Anda tidak dapat menemukan skrip hanya karena menggunakan bahasa lain, Anda memiliki masalah yang lebih besar
CaffGeek
1
Saya setuju dengan Chad. Python sedekat mungkin dengan pseudo-code.
Pekerjaan
2
@Chad eheh bagus tapi masalahnya bisa jadi lain; Python sdk bukan bagian dari pemasangan default mesin pengembangan. Untuk menginstalnya, saya telah membayar banyak kopi ke sysadmin yang tepat;).
systempuntoout
3
@systempuntoout, pengembang harus dapat menginstal apa pun yang mereka inginkan di komputer mereka yang dalam batas hukum. Jadi, PowerShell sudah diinstal pada Windoze dan saya mencoba menggantinya dengan Python, tetapi tidak sama. Kasing tepi menampar wajah saya setiap kali saya mencoba melakukan sesuatu yang sederhana. Python menyelesaikan sesuatu dan jika drone korporat tidak menyelesaikannya - terlalu buruk!
Ayub
1
Tempatkan mereka di kontrol sumber. Hanya sebuah sudut kecil di suatu tempat, tetapi tempatkan mereka.

Jawaban:

42

Anda perlu membuat situasi menjadi formal karena seharusnya tidak sampai pada titik ini. Namun, hal-hal ini terjadi sehingga Anda perlu menjelaskan kepada bos Anda bahwa Anda membuat skrip ini untuk penggunaan pribadi, tetapi mereka "lolos" ke sirkulasi yang lebih luas. Akui (jika perlu) bahwa Anda salah karena tidak membawa ini menjadi perhatiannya lebih awal.

Paling tidak skrip harus ditempatkan di bawah kendali sumber "berjaga-jaga" - maka setidaknya jika Anda tidak tersedia (untuk alasan apa pun) rekan kerja Anda akan memiliki akses ke skrip.

Maka Anda perlu meyakinkan bos Anda bahwa Python adalah cara untuk melakukannya atau menerima bahwa Anda harus menulis ulang mereka dalam bahasa yang didukung. Jika biaya untuk mendokumentasikan skrip dan mendidik rekan kerja Anda di Python lebih rendah daripada biaya menulis ulang, Anda bahkan mungkin memenangkan argumen.

ChrisF
sumber
8
+1, setuju. Saya dapat melihat bagaimana hal semacam ini dapat dengan mudah terjadi tetapi tidak selalu berarti "hal buruk" atau "kesalahan" di pihak OP. Itu mungkin dimulai ketika OP ditugaskan dengan proyek mini "satu kali" dan dia memilih alat yang bagus, python, untuk dengan cepat membersihkan meja kerjanya dari proyek - tetapi kemudian mendapati dirinya melakukan tugas itu lagi dan lagi ...
Angelo
Saya menjalani ini sekarang. Saya meretas bukti konsep dengan Python untuk membantu saya mengetahui beberapa kode C lama yang jelek, dan benar-benar membuat seluruh kekacauan berfungsi sebagai pengganti kode C lama, tetapi diminta untuk menulis ulang kembali ke C setelah membuat perubahan baru berfungsi . Saya berhasil menyimpan beberapa Python, saya menulis aplikasi web kecil menggunakan Python + Flask dan manajer saya dan saya menggunakannya terus-menerus untuk menganalisis operasi kode C yang sedang berjalan. Jadi masih ada harapan bahwa Python akan diadopsi secara formal di sini. :)
John Gaines Jr.
6

Saya tidak bisa memberi Anda jawaban lengkap tentang apa yang harus Anda lakukan. Saya hanya dapat memberikan satu saran yang dapat Anda gunakan untuk memulai dengan:

Periksa skrip ke dalam repositori yang dapat diakses oleh semua (wajib) pengembang. Tetapi pastikan untuk mencatat fakta bahwa Anda pertama kali menulis skrip ini untuk tujuan Anda sendiri , yaitu untuk melakukan tugas yang telah diberikan kepada Anda. Kemudian tambahkan bahwa Anda hanya memeriksa skrip ini untuk memungkinkan orang lain memanfaatkannya.

Setelah itu, Anda hanya perlu melihat bagaimana orang lain meresponsnya.

Giel
sumber
Komentari mereka sebisa mungkin. Membantu dengan cepat melihat apa yang terjadi, daripada mencoba mencari tahu apa yang sedang Anda lakukan.
JD Frias
5

Saya mengalami masalah serupa di tempat saya bekerja. Saya mendengar "Apa itu PHP?" beberapa tahun lalu. Mereka tidak mengerti atau tidak peduli mempelajari apa pun di luar tumpukan MS. Jika python adalah alat yang tepat untuk pekerjaan itu, saya hanya akan memberitahu atasan saya tentang hal itu dan siap untuk banyak perbandingan dan menjelaskan mengapa python adalah pilihan yang tepat. Ini akan membuat frustasi, tetapi saya pikir sebagian besar akan setuju python adalah pilihan yang baik untuk manipulasi teks.

Ryan
sumber
5

Hal pertama yang perlu Anda lakukan adalah berbicara dengan tim dan atasan Anda. Saat ini, Anda memiliki faktor truk yang sangat besar (jika Anda tertabrak truk, tidak ada orang lain yang dengan mudah dapat mempertahankan skrip Anda). Sepertinya memiliki skrip untuk melakukan tugas-tugas ini penting, tetapi juga penting bahwa siapa pun yang perlu dapat mengedit dan memelihara skrip ini. Anda perlu menjelaskan bagaimana menggunakan Python menambah nilai - bagaimana menghemat waktu, tenaga, sumber daya, uang, dan sebagainya.

Kedua, masukkan ke dalam kontrol versi proyek. Sekarang. Tidak ada yang Anda hasilkan untuk suatu proyek yang seharusnya berada di luar kendali versi proyek itu, selamanya.

Bersiaplah untuk serangan balik - orang biasanya tidak suka perubahan. Menjalankan sendiri, menggunakan teknologi yang tidak didukung dan tidak dikenal (untuk tim / organisasi) adalah ide yang buruk, tanpa berkonsultasi dengan setidaknya pengembang lain dan menentukan cara terbaik (untuk proyek, bukan hanya Anda) untuk mengotomatisasi tugas-tugas ini untuk semua orang menggunakan.

Saya pikir ini mungkin kasus yang bagus

Lebih mudah untuk meminta maaf daripada mendapatkan izin.

Kedengarannya seperti Anda menyelesaikan pekerjaan, tetapi Anda harus berurusan dengan dampaknya sekarang.

Thomas Owens
sumber
4
"" "Menjalankan sendiri, menggunakan teknologi yang tidak didukung dan tidak dikenal (untuk tim / organisasi) adalah ide yang buruk, tanpa berkonsultasi dengan setidaknya pengembang lain dan menentukan yang terbaik (untuk proyek, bukan hanya Anda) cara mengotomatisasi ini tugas untuk digunakan semua orang. "" "- Saya tidak setuju. Joel Spolsky tidak akan dapat membuat VBA untuk Excel jika ia menggunakan rute ini. Sejauh ini ini bukan contoh yang unik.
Pekerjaan
@ Ayub Saya tidak bisa berbicara dengan keadaan yang tepat dari pengembangan VBA untuk Excel, tetapi kedengarannya seperti R&D canggih atau prototipe yang terlibat. Ada perbedaan antara R&D canggih dan sistem produksi. Anda tidak pernah bisa bekerja dalam kegelapan, sendirian, dan terisolasi dari tim Anda. Saya tidak menentang untuk memperkenalkan teknologi baru, tetapi penting bagi semua orang untuk mengetahui apa teknologi baru ini, manfaatnya, kelemahannya, dan bagaimana teknologi itu digunakan dalam suatu proyek. Melakukan sesuatu sendirian dan dalam kegelapan pada umumnya adalah ide yang buruk dan menempatkan proyek dalam risiko.
Thomas Owens
@ Thomas Saya tim
systempuntoout
@systempuntoout Itu mungkin benar sekarang. Tapi apakah akan dalam 6 bulan? Atau setahun? Pengembangan perangkat lunak, bahkan jika Anda saat ini sendirian, tidak boleh dianggap sebagai tugas solo - Anda harus memikirkan pengembang atau pengelola pekerjaan Anda di masa mendatang.
Thomas Owens
@ Thomas kamu benar; seperti yang dikatakan dalam beberapa komentar di atas, saya telah mem-porting banyak skrip dalam C # (Bahasa yang didukung perusahaan)
systempuntoout
3

Aturan praktis saya adalah:

Apa pun yang berpotensi memengaruhi pekerjaan orang lain harus didiskusikan dengan rekan dan atasan Anda SECEPATNYA.

Tetapi, jika itu untuk Anda dan Anda sendiri, selama itu tidak merusak infrastruktur atau keamanan perusahaan Anda, Anda bebas untuk melakukan apa yang Anda inginkan untuk menyelesaikan pekerjaan.

Vektor
sumber
1
Bagaimana Anda tahu apakah itu untuk Anda atau orang lain? Di tempat kerja, Anda dapat ditugaskan kembali atau Anda bisa berhenti. Apa pun yang Anda hasilkan di tempat kerja (dalam banyak kasus) bukan milik Anda, tetapi milik perusahaan atau pelanggan. Jika mereka tidak dapat memahami atau mempertahankannya, waktu yang hilang adalah waktu yang Anda habiskan untuk mengembangkannya ditambah waktu yang dibutuhkan orang lain untuk memahaminya (dan mungkin mengembangkan solusi baru). Segala sesuatu yang diproduksi di tempat kerja harus diperlakukan sebagai sesuatu untuk orang lain.
Thomas Owens
1
Jika selama Anda berada di pekerjaan itu meningkatkan produktivitas pribadi Anda, maka perusahaan telah mendapatkan nilai dari skrip itu dan itu bukan pemborosan, terlepas dari apakah itu akan digunakan kembali nanti oleh orang lain.
Nate CK
@ Thomas Owens - sering ada tugas satu kali - setelah selesai, selesai - atau retas dan tes sendiri yang Anda lakukan dalam proses pengembangan untuk melewati sesuatu yang lengket - sekali lagi, setelah selesai , mereka sudah selesai - sekali pakai efektif.
Vektor
Dan jika orang lain perlu melakukan tugas yang sama atau serupa nanti (yang sangat mungkin, dalam pengalaman saya)? Mereka harus menemukan kembali roda. Adalah satu hal untuk memiliki prototipe sekali pakai yang berfungsi untuk memecahkan masalah atau mempelajari perpustakaan atau kerangka kerja. Lain menghabiskan waktu mengembangkan alat untuk melakukan tugas dan kemudian hanya membuangnya. Jenis alat yang merujuk pada pertanyaan adalah untuk tugas yang berpotensi harus dilakukan beberapa kali, dan jika orang lain melakukan tugas itu, mereka membuang waktu dengan tidak memiliki alat untuk membantu mereka (atau perlu mengembangkan alat semacam itu) .
Thomas Owens
@ Thomas Owens - diberikan - itu termasuk dalam apa yang saya katakan 'berpotensi berdampak pada pekerjaan orang lain'.
Vektor
2

Anda memiliki dua opsi:

  1. Jadikan standar
  2. Terjemahkan ke dalam alat standar

Tergantung pada organisasi # 1 mungkin menantang (setelah semua membatasi daftar teknologi standar menghindari ledakan pelatihan dan persyaratan keterampilan dukungan kombinatorial).

Opsi kedua akan membantu keahlian Anda, dan Anda mungkin dapat menemukan pihak ketiga (dan kemungkinan open source dengan lisensi ramah komersial) untuk melakukan beberapa kerja keras. Misalnya pencarian untuk "LINQ to CSV" harus mendapatkan beberapa klik bermanfaat.

BTW, alat pengembang VB6 (IDE, compiler) tidak didukung (bahkan tidak ada perbaikan keamanan) sehingga kemungkinan standar tetap perlu diperbarui. (VB6 runtime didukung sebagai bagian dari — dan termasuk dalam pemasangan — versi Windows saat ini). Ini mungkin dapat digunakan sebagai penolong untuk mendekati # 1: set alat standar perlu untuk mencapai target bergerak karena ketergantungan pemasok.

Richard
sumber
2

Jika Anda diberi tugas, dan satu-satunya cara Anda dapat menyelesaikannya tepat waktu, Anda tidak punya pilihan. Saya pikir adalah bijaksana untuk membiarkan mereka yang bertanggung jawab tahu apa yang Anda lakukan. Anda tidak boleh keluar dari kontrol sumber yang diperlukan (kecuali itu benar-benar tidak berfungsi sama sekali?) Pengujian dan dokumentasi.

Terkadang perusahaan mungkin harus membiarkan pengembang tunggal mulai mencari ke area pengembangan baru. Sayangnya, kode ini dapat membuat produksi menjadi lebih cepat daripada yang dapat dilakukan orang lain.

JeffO
sumber
Percaya atau tidak, setelah memposting pertanyaan ini dan menerima banyak saran mendalam, saya telah mem-porting beberapa skrip dalam C #.
systempuntoout
1

Yah, saya harus akui bahwa bekerja dengan 20 bahasa berbeda bau, BANYAK.

Anda memiliki skrip Bash yang memanggil skrip Python yang memanggil skrip Perl yang memanggil Java binary yang memanggil C dll ...

Kemudian sesuatu mengenai kipas di seluruh saluran pipa, dan Anda pergi - APA ITU DAT KODEZ? Terutama di Perl ... Dan debugging sederhana, katakanlah, masalah encoding, berubah menjadi kekacauan mimpi buruk. Anda tidak dapat men-debug 5 dari 7 bahasa secara efektif, dan itu berubah menjadi sangat menyakitkan.

Atau Anda harus menambahkan perubahan sederhana, tetapi Anda membuat 10 kesalahan karena Perl memiliki gotchas, Java memiliki gotchas, dll.

Dan rantai 7+ bahasa itu mulai selangkah demi selangkah.

Tapak hati-hati, ini naga ...

Coder
sumber
Bekerja dengan alat yang tepat tidak berbau, itu adalah cara Unix membangun sesuatu. Cara Windows adalah meluncurkan Excel. Kisah palu dan paku
kuno
1

Jika itu adalah alat yang Anda gunakan untuk diri sendiri, Anda bebas melakukan apa pun yang membuat Anda lebih produktif.

Sebenarnya, Anda harus didorong untuk membuat dan menggunakan alat-alat tersebut, yang pada akhirnya akan menjadi perpanjangan tangan Anda.

Akhirnya, mereka akan menyadari pentingnya memiliki alat-alat seperti itu, tidak peduli bahasa apa yang mereka gunakan , dan akan mulai diterapkan di lingkungan kerja mereka.

Jose Faeti
sumber
Di tempat kerja, saya tidak berpikir Anda harus memperlakukan apa pun sebagai "untuk diri sendiri". Mereka adalah alat untuk mendukung proyek, dan ada tim yang mengerjakan proyek itu. Anda dapat berhenti, dipecat, ditugaskan kembali, atau mati besok dan sekarang tanggung jawab Anda jatuh ke orang lain. Jika mereka tidak dapat menggunakan dan memelihara alat-alat Anda, upaya yang dilakukan untuk membuatnya menjadi sia-sia (menghabiskan biaya perusahaan).
Thomas Owens
3
@ Thomas: Saya memperlakukan skrip yang saya buat untuk saya dan penggunaan pribadi saya sebagai milik saya. Itu adalah perpanjangan tangan dan pikiran saya. Itu seperti mengatakan "Kamu tidak bisa berpikir seperti ini, kamu hanya bisa berpikir seperti itu". Saya pikir itu tidak penting apa yang Anda pikirkan, selama Anda dapat melakukan apa yang diminta.
Jose Faeti
Bagi saya, itu sangat tidak profesional dan tidak etis. Salah satu tanggung jawab etis seorang insinyur perangkat lunak adalah bertindak demi kepentingan terbaik klien dan majikan, selama itu tidak membahayakan publik. Tanggung jawab etis lainnya adalah bersikap adil dan mendukung rekan kerja. Menyimpan alat-alat Anda untuk diri sendiri ketika mereka untuk suatu proyek melanggar kedua prinsip ini.
Thomas Owens
3
@ Thomas: Saya tidak berbicara tentang menulis bahasa pemrograman khusus untuk proyek ini. Saya berbicara tentang sesuatu seperti "mengganti nama 10.000 file dengan satu perintah", sesuatu yang dilakukan programmer bodoh dengan tangan satu per satu, sementara saya dapat melakukannya dengan skrip buatan sendiri. Saya tidak berinteraksi dengan apa pun yang secara khusus terlibat dalam proyek. Mereka BUKAN alat spesifik proyek.
Jose Faeti
3
@ Thomas: Intinya adalah tidak mengetahui apakah ada utilitas seperti itu, tetapi mengetahui bagaimana mengotomatiskan pekerjaan Anda dengan membuat utilitas tersebut. Anda akan selalu membutuhkan beberapa skrip baru untuk membantu Anda dalam tugas sehari-hari Anda. Memaksa seorang programmer untuk menggunakan alat yang ada atau alat yang dibuat oleh orang lain seperti memotong sayap ke burung. Saya tidak bisa membayangkan bekerja di tempat seperti itu. Pokoknya saya mengerti poin Anda. Jawaban saya muncul karena OP sudah berada dalam situasi itu, saya pikir yang terbaik adalah dengan berbagi pemikiran tentang membuat / menggunakan alat tertentu dengan semua tim segera setelah diperlukan, lalu putuskan.
Jose Faeti
1

Ketika Anda disuruh menulis kode melakukan sth., Bahasa biasanya ditentukan atau tersirat (aturan di perusahaan).

Tetapi ketika Anda harus melakukan beberapa tugas, seperti mengimpor data ke DB, Anda bebas memilih alat yang menurut Anda paling sesuai, karena Anda harus melakukan sesuatu yang benar dan cepat, dan hasilnya penting, bukan alat.

Jadi, saya akan menggunakan aturan itu:

1) Jika Anda diminta untuk melakukan beberapa tugas, seperti impor data, saya akan menggunakan alat / bahasa / dll. itu akan menjadi yang paling nyaman bagi saya dan akan menjadi yang tercepat untuk tugas itu.

2) Jika Anda disuruh menulis alat melakukan beberapa tugas, seperti mengimpor beberapa data, saya akan membahas bahasa / alat apa yang digunakan dengan manajer (dengan pengecualian ketika saya menggunakan bahasa yang tersirat standar, misalnya ketika perusahaan menggunakan [hampir ] hanya Java).

3) Jika tugas itu tampaknya hanya sekali, tetapi menjadi berulang, Anda harus berbicara dengan manajer untuk mengubahnya dari 1) menjadi 2) dan menulis ulang dari bahasa pilihan Anda ke bahasa yang didukung perusahaan.

Pelaut Danubia
sumber
0

Saya kira Anda tidak dalam posisi untuk memutuskan (atau Anda tidak akan mengajukan pertanyaan). Apa pendapat bos Anda tentang masalah ini? Anda harus berbicara dengannya dan mencoba meyakinkannya bahwa Python adalah cara untuk pergi ...

Tentu saja, masalahnya adalah tentang apa yang akan terjadi ketika Anda pergi. Tidak dapat mempertahankan kode mungkin merupakan alasan yang cukup baik untuk berhenti menggunakan Python. Atau Anda dapat mulai mendidik kolega Anda ke bahasa ini ...

Xavier Nodet
sumber