Bazı işler için şirketiniz tarafından desteklenmeyen bir dil kullanmak uygun mudur?


27

COBOL, VB6, C # ve Java: Birkaç dili destekleyen bir şirkette çalışıyorum.
Bu dilleri birincil çalışmam için kullanıyorum, ancak Python'daki bazı küçük programları (örn. Scriptler) kodlarken kendimi sık sık buluyorum çünkü bu tür bir görev için en iyi araç olduğunu gördüm.

Örneğin: Bir analist bana bazı DB tablolarını doldurmak için karmaşık bir CSV dosyası veriyor, bu yüzden Python'u ayrıştırmak ve bir DB betiği oluşturmak için kullanırdım.

Sorun ne?
Gördüğüm en temel sorun, bu hızlı ve kirli komut dosyalarının birkaç bölümünün yavaş yavaş önem kazanması ve:

  1. Şirketim Python'u desteklemiyor
  2. Sürüm kontrollü değiller (Onları başka şekilde yedekledim)
  3. Arkadaşlarım Python'u tanımıyor

Analistler bile e-posta ile gönderme yapmaya başladılar ("dışa aktaran betiği başlat ..."), bu yüzden başlangıçta düşündüğümden daha sık ihtiyaç duyuluyor.

Bu senaryoların sadece ana projenin parçası olmayan araçlar olduğunu eklemeliyim; sadece daha az zamanda önemsiz görevleri yerine getirmelerine yardımcı olurlar. Kendi küçük işlerim için çok yardımcı oluyorlar.

Kısacası, kaza geçiren bir piyango kazanan olsaydım , iş arkadaşlarımın bu senaryolar olmadan projeyi canlı tutmaları gerekirdi; Örneğin CSV hatalarının düzeltilmesi için daha fazla zaman harcarlardı.

Bu ortak bir senaryo mu? Yanlış bir şey mi yapıyorum? Ne yapmalıyım?


22
Eğer iş arkadaşlarınız sadece başka bir dilde olduğu için bir senaryo
çözemezlerse

1
Chad ile aynı fikirdeyim. Python sözde koda yaklaştığı kadar yakın.
İş

2
@Che eheh güzel biri ama sorun başka olabilir; Python sdk, geliştirme makinesinin varsayılan kurulumunun bir parçası değildir. Yüklemek için doğru sysadmin'e bir sürü kahve verdim;).
systempuntoout

3
@systempuntoout, geliştiriciler bilgisayarlarında istedikleri her şeyi yasal sınırlar dahilinde yükleyebilmeliler. Bu yüzden, PowerShell Windoze'ye önceden kurulmuş ve Python yerine kullanmaya çalıştım, ama aynı değil. Kenar davaları, basit bir şey yapmaya çalıştığım her seferde beni tokatlıyor. Python sadece işleri halleder ve eğer kurumsal dronlar bunu alamazsa - çok kötü!
İş

1
Onları kaynak kontrolüne koy. Sadece bir yerlerde küçük bir köşe, ama onları içine koy.

Yanıtlar:


42

Bu noktaya gelmemesi gerektiği için durumu resmileştirmelisin. Ancak, bu şeyler olur, bu yüzden patronunuza kişisel senaryolar için bu senaryoları yarattığınızı, ancak daha geniş bir dolaşımda "kaçtığını" açıklamanız gerekir. (Gerekirse) bunu daha önce dikkatine sunmadığınız için hatalı olduğunuzu kabul edin.

En azından senaryolar kaynak koduna "tam olarak" konulmalıdır - o zaman en azından müsait değilseniz (ne sebeple olursa olsun) iş arkadaşlarınızın komut dosyalarına erişimi olacaktır.

Öyleyse, patronunuzu Python'un bunlara gideceğiniz yol olduğuna ikna etmeniz ya da onları desteklenen bir dilde tekrar yazmak zorunda kalacağınızı kabul etmeniz gerekir. Senaryoları belgeleme ve Python'daki iş arkadaşlarınızı eğitmenin maliyeti, yeniden yazmakta olduğundan daha düşükse, tartışmayı bile kazanabilirsiniz.


8
+1, katılıyorum. Bu tür bir şeyin nasıl kolayca gerçekleştiğini görebiliyorum, ancak OP'nin parçası üzerinde "kötü bir şey" veya "bir hata" olması gerekmez. Muhtemelen OP, "tek seferlik" mini bir projeyle görevlendirildiğinde başladı ve proje masasını hızla temizlemek için iyi bir araç olan python'u seçti - ama sonra kendini tekrar ve tekrar görevini yaparken buldu ...
Angelo,

Bunu şimdi yaşıyorum. Bazı berbat eski C kodlarını bulmama yardım etmek için Python'da bir konsept kanıtı hackledim ve aslında tüm karışıklığı eski C kodunun yerine koydu. . Bazı Python'ları korumayı başardım, Python + Flask'ı ve yöneticimi kullanarak küçük bir web uygulaması yazdım ve sürekli çalışan C kodunun işlemlerini analiz etmek için kullanıyorum. Bu yüzden hala Python'un buralarda resmen kabul edileceğine dair umut var. :)
John Gaines Jr.

6

Ne yapman gerektiği konusunda sana tam bir cevap veremem . Başlamak için kullanabileceğiniz yalnızca tek bir öneride bulunabilirim:

Komut dosyalarını tüm (gerekli) geliştiricilerin erişebileceği bir havuza yerleştirin. Ancak, bu komut dosyalarını ilk önce kendi amacınız için yazdığınızı , yani size verilen bir görevi yerine getirdiğinizden emin olun . Ardından, başkalarının yararlanmalarına izin vermek için yalnızca bu komut dosyalarına göz attığınızı ekleyin.

Ondan sonra sadece diğer insanların buna nasıl cevap verdiğini görmeniz gerekir.


Mümkün olduğunca bunları yorumlayın. Ne yaptığınızı anlamaya çalışmak yerine, neler olup bittiğini hızlı bir şekilde görmenize yardımcı olur.
JD Frias

5

Çalıştığım yerde benzer sorunlarla karşılaştım. "PHP nedir?" Diye duydum birkaç yıl önce. MS yığının dışında bir şey öğrenmeyi anlamıyor ya da umursamıyorlar. Eğer python iş için doğru bir araçsa, denetçilerime bu konuda sadece bilgi vereceğim ve python'un neden doğru seçim olduğunu açıklamaya ve açıklamaya çok hazırım. Sinir bozucu olacak, ama çoğunun python'un metin işleme için iyi bir seçim olduğu konusunda hemfikir olacağını düşünüyorum.


5

Yapmanız gereken ilk şey, takım ve patronunuzla konuşmak. Şu anda çok büyük bir kamyon faktörüne sahipsiniz (eğer bir kamyonete çarptıysanız, başka hiç kimse senaryolarınızı kolayca koruyamaz). Bu görevleri yapmak için komut dosyalarına sahip olmak önemlidir, ancak bu komut dosyalarını düzenlemek ve sürdürmek için gereken herkesin de çalışması önemlidir. Python kullanmanın nasıl değer kattığını açıklamanız gerekiyor - zamandan, emekten, kaynaklardan, paradan, vb.

İkinci olarak, projenin sürüm kontrolüne alın. Şimdi. Bir proje için ürettiğiniz hiçbir şey, o projenin sürüm kontrolü dışında hiç olmamalıdır.

Boşluğa hazırlıklı olun - insanlar genellikle değişmekten hoşlanmazlar. Kendi başınıza kaçmak, desteklenmeyen ve bilinmeyen (ekip / kuruluş) teknolojilerini kullanmak, en azından diğer geliştiricilere danışmadan ve herkes için bu görevleri otomatikleştirmenin en iyi yolunu (sadece proje için değil) belirlemekten kötü bir fikirdi. kullanmak.

Bence bu muhtemelen iyi bir durum

Bağışlanmak, izin almaktan daha kolay.

İşi bitirmiş gibisin, ama şimdi tepkilerle ilgilenmek zorunda kalacaksın.


4
"" "Kendi başınıza kaçmak, desteklenmeyen ve bilinmeyen (ekip / kuruluş) teknolojilerini kullanmak, en azından diğer geliştiricilere danışmadan ve bunları otomatikleştirmenin en iyi yolunu (sadece proje için değil) belirlemeden kötü bir fikirdi. herkesin kullanabileceği görevler. "" "- katılmıyorum. Joel Spolsky, bu rotaya giderse Excel için VBA oluşturamazdı. Bu şimdiye kadar eşsiz bir örnek değil.
İş

@Job Excel için VBA'nın geliştirilmesinin kesin koşullarından söz edemiyorum, ancak bu gelişmiş Ar-Ge veya prototipleme gibi görünüyordu. Gelişmiş Ar-Ge ve üretim sistemleri arasında bir fark var. Asla karanlıkta çalışamazsınız, yalnız ve takımınızdan izole edilemez. Yeni teknolojiler sunmaya karşı değilim, ancak herkesin bu yeni teknolojilerin ne olduğunu, faydalarını, sakıncalarını ve bir projede nasıl kullanıldığını bilmeleri önemlidir. Yalnız ve karanlıkta bir şeyler yapmak genelde kötü bir fikirdir ve bir projeyi riske sokar.
Thomas Owens

@Thomas Ben takımım
systempuntoout

@systempuntoout Bu şimdi doğru olabilir. Ama 6 ay içinde olacak mı? Ya da bir yıl? Yazılım geliştirme, şu anda yalnız olsanız bile, asla yalnız bir görev olarak kabul edilmemelidir - gelecekteki geliştiricinizi veya işinizin koruyucusunu düşünmeniz gerekir.
Thomas Owens

@Tamam, haklısın; Yukarıdaki bazı yorumlarda belirtildiği gibi, C # 'da (Şirket destekli dil) birçok komut dosyası
yayınladım

3

Baş parmağımın kuralı:

Başkalarının çalışmalarını potansiyel olarak etkileyebilecek herhangi bir şey, akranlarınız ve ASAP üstlerinizle tartışılmalıdır.

Ancak, yalnızca sizin için ve sizin için, firmanızın altyapısına veya güvenliğine bir zarar vermediği sürece, işi yapmak için istediğiniz kadar özgürsünüz.


1
Sizin için mi yoksa başkaları için mi olduğunu nereden biliyorsunuz? İş yerinde, yeniden atanabilir veya istifa edebilirsiniz. İş yerinde ürettiğiniz hiçbir şey (çoğu durumda) size ait değildir, ancak şirkete veya müşteriye aittir. Eğer anlayamıyorlar veya koruyamıyorlarsa, kaybedilen zaman, onu geliştirmek için harcadığınız zaman artı başka birisinin anlaması için gereken zamandır (ve belki de yeni bir çözüm geliştirmek). İş yerinde üretilen her şey başkaları için bir şey olarak görülmelidir.
Thomas Owens

1
Bu işte çalıştığınız süre boyunca kendi kişisel üretkenliğinizi arttırdıysa, şirket daha sonra bir başkası tarafından tekrar kullanılıp kullanılmayacağına bakılmaksızın, o senaryodan zaten bir değer aldı.
Nate CK

@Thomas Owens - genellikle bir defalık işler vardır - bir kez yapıldılar mı, yapıldılar - ya da yapışkan bir şeyden geçmek için geliştirme sürecinde yaptığınız kendi saldırı ve testleriniz - tekrar yapıldıktan sonra , yapıldılar - etkili bir şekilde atılabilir.
Vektör

Ve başka birinin daha sonra aynı veya benzer bir işi yapması gerekiyorsa (ki deneyimlerime göre çok muhtemel)? Tekerleği yeniden icat etmek zorundalar. Bir problemi çözmek veya bir kütüphane veya çerçeve öğrenmek için bir prototip çalışmanın olması bir şeydir. Bir işi yapmak için bir araç geliştirmek ve ardından sadece atmak için zaman harcayan başka bir şey. Sorunun bahsettiği araç türleri, potansiyel olarak birden çok kez yapılması gereken işler içindir ve başkaları bu görevleri yaparsa, onlara yardımcı olacak bir aracı olmadan (veya böyle bir aracı geliştirmeye ihtiyaç duyarak) zaman harcarlar. .
Thomas Owens

@Thomas Owens - onaylandı - “potansiyel olarak başkalarının çalışmalarını etkileyebileceğini” söylediklerime dahil edildi.
Vektör

2

İki seçeneğiniz var:

  1. Standart yapmak
  2. Standart bir araca çevir

Organizasyona bağlı olarak # 1 zorlu olabilir (sonuçta standart teknolojilerin listesini sınırlandırdıktan sonra birleşik bir eğitim patlamasını önler ve beceri gereksinimlerini destekler).

İkinci seçenek, yeteneklerinizin gelişimine yardımcı olacaktır ve sıkı çalışmanın bir kısmını yapmak için üçüncü tarafları (ve muhtemelen ticari lisansa sahip lisanslı açık kaynakları) bulabilirsiniz. Örneğin, "LINQ to CSV" araması bazı yararlı sonuçlar almalıdır.

BTW, VB6'nın geliştirici araçları (IDE, derleyici) desteklenmiyor (güvenlik düzeltmeleri bile yok) bu nedenle standartın yine de güncellenmesi gerekiyor. (VB6 çalışma zamanı, geçerli Windows sürümlerinin bir parçası olarak kuruludur ve kuruluma dahil edilmiştir). Bu belki de # 1 yaklaşımı için bir yardımcı olarak kullanılabilir: standart araç setinin tedarikçi bağımlılıkları nedeniyle hareketli bir hedef oluşturması gerekir.


2

Size bir görev verilirse ve zamanında başarabilmenin tek yolunu seçtiyseniz, gerçekten bir seçeneğiniz yok. Yetkili kişilerin ne yaptığını bilmelerine izin vermenin akıllıca olacağını düşünüyorum. Gerekli kaynak kontrolünün dışına çıkmamalısınız (kesinlikle işe yaramadığı sürece?) Test ve dokümantasyonu.

Bazen bir şirket, tek bir geliştiricinin yeni bir geliştirme alanına bakmaya başlamasına izin vermek zorunda kalabilir. Ne yazık ki, kod, başkalarının hız kazanabileceğinden daha hızlı şekilde üretime girebilir.


İster inanın ister inanmayın, bu soruyu gönderdikten ve bir sürü anlayışlı öneri aldıktan sonra, C # dilinde birkaç komut dosyası yazdım.
sistem 09:00

1

Kabul etmeliyim ki, 20 farklı dilde çalışmanın kokuyor, çok.

Sen C dll çağıran Java ikili çağıran Perl komut dosyasını çağıran Python komut dosyasını çağıran bir Bash komutunuz var ...

Sonra bir şey tüm boru hattındaki fana vurur ve siz de devam edersiniz - WTH IS DAT KODEZ? Özellikle Perl'de ... Ve basit hata ayıklama, örneğin kodlama problemi, kabus gibi bir karışıklığa dönüşüyor. 7 dilden 5'inde etkili bir şekilde hata ayıklayamazsınız ve bu gerçek bir acıya dönüşür.

Ya da basit bir değişiklik eklemek zorundasınız, ancak 10 hata yaratıyorsunuz çünkü Perl'de var, Java'da var.

Ve bu 7+ dil zinciri her seferinde bir adım başlar.

Dikkatli bir şekilde bas, burada ejderhalar ...


Doğru aletle çalışmak pis kokmaz, şeyleri inşa etmenin Unix tarzıdır. Windows yolu, Excel'i başlatmaktır. Çekiç ve çivi Eski bir hikaye ...
mouviciel

1

Bunlar kendiniz için kullandığınız araçlarsa, sizi daha üretken kılan her şeyi yapmakta özgürsünüz.

Aslında, sonuçta kollarınızın bir uzantısı olacak bu tür araçları kullanmanız ve kullanmanız teşvik edilmelidir .

Sonunda, hangi dilde yazıldığına bakılmaksızın bu tür araçlara sahip olmanın önemini anlayacak ve çalışma ortamlarında uygulamaya başlayacaklar.


İş yerinde, hiçbir şeye "kendin için" muamelesi yapman gerektiğini düşünmüyorum. Bir projeyi destekleyecek araçlardır ve bu proje üzerinde çalışan bir ekip vardır. Yarın istifa edebilir, kovulabilir, atanabilir veya ölebilirsin, şimdi sorumlulukların başkasına düşüyor. Araçlarınızı kullanamaz ve bakımlarını yapamazlarsa, bunları yapma çabası boşa harcandı (şirkete para kazandı).
Thomas Owens

3
@ Tomoş: Kendim için yaptığım senaryoları ve benim kişisel kullanımlarımı inceliyorum. Onlar kollarımın ve aklımın bir uzantısı. "Böyle düşünemezsin, sadece böyle düşünebilirsin" demek gibi. Bence sizden ne isteniyorsa, ne yapmanız istendiğini yapamadığınız sürece önemli değil.
Jose Faeti

Bu benim için son derece profesyonelce ve etik dışı. Bir yazılım mühendisinin etik sorumluluklarından biri, halkı riske atmadığı sürece müşterinin ve işverenin yararına hareket etmektir. Diğer bir etik sorumluluk da meslektaşların adil ve destekleyici olmasıdır. Araçlarınızı bir proje için hazır bulundurduğunuzda saklamak bu ilkelerin her ikisini de ihlal eder.
Thomas Owens

3
@Tomas: Proje için belirli bir programlama dili yazmaktan bahsetmiyordum. "Tek bir komutla 10000 dosyayı yeniden adlandır" gibi bir şeyden bahsediyorum, aptal programcıların tek tek yaptıkları bir şey, kendim tarafından yazılmış bir komut dosyasıyla bunu yapabiliyorum. Projeye özel olarak dahil olan hiçbir şeyle etkileşime girmiyorum. Projeye özgü araçlar DEĞİLDİR.
Jose Faeti

3
@Tomas: Mesele böyle bir yardımcı program olup olmadığını bilmek değil, bu tür yardımcı programları kullanarak işinizi nasıl otomatikleştireceğinizi bilmek. Günlük işlerinizde size yardımcı olmak için her zaman yeni bir senaryoya ihtiyacınız olacak. Bir programcıyı mevcut araçları veya başkaları tarafından yapılan araçları kullanmaya zorlamak, bir kuşun kanatlarını kesmek gibidir. Böyle bir yerde çalışmayı hayal edemiyorum. Neyse, puanlarını anlıyorum. OP zaten bu durumda olduğu için cevabım arttı, bence en iyisi, gerekli olan en kısa sürede belirli bir takımı yapma / kullanma hakkındaki düşünceyi tüm ekiple paylaşmak ve daha sonra karar vermek olacaktır.
Jose Faeti

1

Sth. Yaparak kod yazmanız istendiğinde, dil genellikle belirtilir veya ima edilir (kurumlarda kural).

Ancak, verileri DB'ye içe aktarma gibi bir kereye mahsus bir görevi yapmanız gerektiğinde, doğru ve hızlı bir şeyler yapmanız gerektiğine göre, fikrinize en uygun olan aracı seçmekte özgürsünüz, ve sonuç önemlidir. araçlar değil.

Bu yüzden bu kuralı kullanırdım:

1) Veri alma gibi bir işlem yapmanız istenirse, tools / dil / etc. Bu benim için en uygun ve görev için en hızlı olanı olurdu.

2) Bazı verileri içe aktarma gibi bazı görevleri yerine getiren bir araç yazmanız istenirse, yöneticiyle hangi dili / aracı kullanacağımı tartışacağım (örneğin standart bir dil kullandığım zamanlar hariç, örneğin şirket kullanırken [neredeyse] ] yalnızca Java).

3) Görev tek seferlik görünüyorsa, ancak tekrarlanabilir hale geldiyse, yönetici ile konuşarak 1) 'den 2)' ye değiştirmek ve tercih ettiğinizden şirket destekli dilinize yeniden yazmak zorundasınız.


0

Sanırım karar verecek bir durumda değilsin (yoksa soruyu sormayacaksın). Patronunuz bu konuda ne düşünüyor? Onunla konuşmalı ve onu Python'un gideceğin yol olduğuna ikna etmeye çalışmalısın ...

Tabii ki, mesele ayrıldığınızda ne olacağı ile ilgili. Kodu koruyamamak, Python'u kullanmayı bırakacak kadar iyi bir neden olabilir. Veya meslektaşlarınızı bu dilde eğitmeye başlayabilirsiniz ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.