Bir programcının bir dil ve çerçeve seçiminde ne kadar özgürlüğü olmalıdır?


67

Öncelikle C # odaklı bir şirkette çalışmaya başladım. Java ve JRuby'yi seven birkaç kişi var ama programcıların çoğunluğu C # gibi. İşe alındım çünkü web uygulamaları geliştirme konusunda çok deneyimim vardı ve JRuby on Rails veya nodejs gibi yeni teknolojilere yaslandım.

Kısa bir süre içinde pek çok işin yapılmasına odaklanan bir web uygulaması inşa eden bir projeye yeni başladım. Yazılım lideri, raylar yerine mvc4 kullanacağımı belirledi. Tamam olabilir, mvc4'ü bilmeme dışında, C # bilmiyorum ve web uygulama sunucusu ve ön uç kullanıcı arayüzü oluşturmaktan sorumlu olan tek kişi benim.

Mvc4 kullanmak yerine zaten çok iyi bildiğim bir çerçeve (Raylar) kullanmak mantıklı olmaz mıydı? Kararın arkasındaki mantık, teknik liderin Jruby / rayları tanımıyor olması ve kodu tekrar kullanmanın bir yolu olmamasıydı.

Karşı argüman:

  • Koda katkıda bulunmayacak ve açıkçası
    bu projede gerekli değil . Bu yüzden, JRuby / rayları bilmesi ya da bilmemesi farketmez.

  • JRuby'nin kodu alabileceği ve tam tersi şekilde kullanabileceği çok sayıda java uygulamasına sahip olduğumuz için kodu yeniden kullanabiliriz. Aslında, yalnızca Java kütüphanesini JRuby on Rails uygulamasında çalıştırmak yerine, bir Java kütüphanesini C # 'ya dönüştürmek için bazı kaynaklar ayırdı. Çünkü Java ya da JRuby'yi sevmiyor.

Çok sayıda web uygulaması geliştirdim, ancak yabancı bir şey kullanmak bazı sıkıntılara neden oluyor ve alıştığım kadar kısa sürede harika bir uygulama oluşturamıyorum. Bu iyi olurdu; Yeni teknolojilerin öğrenilmesi bu alanda önemlidir. Sorun şu ki, bu proje için çok fazla şey yapmamız gerekiyor.

Bir geliştiricinin hangi noktada araçlarını seçmesine izin verilmelidir? Bu şirkete bağlı mı? Şirketim emiyor mu yoksa bu normal mi? Daha yeşil meralar var mı? Buna yanlış mı bakıyorum?


45
Bunun gibi bir konuda “emirlere meydan okumak” kariyer sınırlayıcı bir hareket olabilir.
Dan Pichelman,


39
Şirketler araçları standart hale getirmeyi seviyorlar çünkü hem App satın alma açısından hem de şirket kaynaklarını yönetmede maliyetleri düşürüyorlar. Lisans yönetimi aslında oldukça zaman alıcıdır. Ek olarak, eğer herkes kendi dilini / araçlarını kullanırsa, insanları işler arasında karıştırmak çok daha zorlaşır. Son olarak, müşteri adayınızla ilgili şikayetleriniz, tercih ettiğiniz aracı neden kullanmak istediğinizle aynıdır. Mvc4'e aşina değilsiniz veya beğenmiyorsunuz. Sw kurşunu liderdir, bu yüzden onların fikrini değiştirebilecek bir argüman sunmadığınız sürece çağrılarıdır.
Dunk

22
Tüm bunlar iş görüşmeniz sırasında ele alınmalıydı.
user16764 16:13

30
Bir Are programcı veya Ruby programcısı ? Dillerin tıpkı araçlar gibi olması gerekir. Bazılarının güçlü veya zayıf yönleri vardır, ancak bunlardan en iyi şekilde faydalanmak için ustalara kalmıştır. Şirket bariz nedenlerden dolayı standart bir araç seti dikte etti.

Yanıtlar:


98

Takım liderinizle konuşmanız ve şöyle bir şey söylemeniz gerektiğini söyleyebilirim:

Sizin bir .NET mağazası olduğunuzu biliyorum, ama aslında Java / JRubyRails becerilerim için işe alındım. Zaten bildiğim bu araçları kullanarak bu yeni uygulamayı X zamanında oluşturabilirim. İstediğiniz gibi C # / mvc4 öğrendim, ancak >> X miktarını alacak . Ne istiyorsun?

Bu vs "-hired-için (assumedly)-you-sen- becerileri" konusunu gündeme getirmektedir "beceri ihtiyaçları karşılayan bir-an" ve ayrıca yeni beceriler öğrenmeye istekli olduğunuzu gösterir, ancak bu edecektir almak Bu araç setinde yeni olduğunuz için yeni uygulamayı geliştirmek için daha uzun. Ve do yeni beceriler öğrenmeye istekli olduğunuzu göstermek istiyorum. Yeni beceriler öğrenmeye açık olmamak, becerilerinize ihtiyaç duyulmadığında istihdamınızın sona ermesini sağlamanın iyi bir yoludur.

Sonunda sorunuza gelince:

Bir geliştiricinin hangi noktada araçlarını seçmesine izin verilmelidir? Bu şirkete bağlı mı? Şirketim emiyor mu yoksa bu normal mi? Daha yeşil meralar var mı? Buna yanlış mı bakıyorum?

Genellikle şirkete bağlıdır. Bir şirket MS araçları satın alır ve VisualStudio platformunda ve .NET çerçevesinde her şeyi standartlaştırırsa, bir geliştirici Linux ve C kullanmakta ısrar ederse çok garipleşebilir. Üreticilerin, aynı olduğu sürece, geliştiricilerin Vi ve Emacs'ı seçmelerine izin vermek gibi, editörler hakkında daha az telaşlı olduğu durumlar olabilir. Bazı şirketlerin geliştiricilerin Windows ve Linux'u seçmelerine bile izin verdiklerini biliyorum, ancak çalıştıkları dilin her iki işletim sistemi için de çok iyi desteği ve çalışma süreleri var.

Şirketler bunu neden yapıyor? Tutarlılık bir nedendir. Uygulama, çeşitli geliştiricilerin favori dillerinde / çerçevelerinde yerleşik, farklı araçlarda inşa edilmiş ve çok farklı sistemlerde test edilmiş bir ikili dosya parçası olduğunda hata ayıklamak çok zor olabilir. Tüm geliştiriciler çoğunlukla benzer kurulumlarda çalışırsa , bu tür sorunlar çözülür.

Sizin durumunuzda, bu şirkette standart olmayan teknolojide çalışmak için işe alınmışsınız gibi geliyor. Bu bana garip geliyor ve neden onları istedikleri konusunda sizi işe alan kişiyle konuşmak isteyebilirsiniz .


31
"Bu yeni uygulamayı, zaten bildiğim bu araçları kullanarak X zamanında oluşturabilirim. İstediğiniz gibi C # / mvc4'ü öğrenebilirim, ancak >> X zaman alacaktır. Ne istiyorsun?" - Mükemmel cevap. Bir maliyet yitimi biçiminde çerçeveleyin.
Christian Ternus

Kabul. Her şey ekonomi ile ilgili. Bakış açınıza ekonomik bir dönüş yaptıktan sonra, gerçek olan HERHANGİ bir lider sizi duyacak ve duruşlarını yeniden gözden geçirecektir. Tradeoff'u açıklayın: Örn .: Daha fazla zaman, işlerin daha sonra geleceği anlamına gelir, sonuca varabilecekleri bir gelir isabeti anlamına gelebilir . Bazen, özünde 'takas' hedefine giden yolu göstermeleri gerekir.
Doktora

6
+1. Bu cevabın beni tatmin etmemesinin tek yolu öğrenme yönünü hafifçe vurgular. Öğrenmeye istekli bir geliştirici, bir şey hakkında her şeyi bilen ve değişmeyecek olandan çok daha değerli bir varlıktır .
Corey

7
+1 Ayrıca, kurşun her ne kadar MVC ile devam etmeyi seçerse, OP'nin çökertilmesi ve projeyi MVC'de yapması gerektiğine (ima edilen) dikkatini çekerim.
Dan Lyons

"Bazı şirketler geliştiricilerin Windows ve Linux'u seçmelerine bile izin verdi" - ve ayrıca Ruby dünyasında da Mac kullanıcıları bulursunuz. (Şirketim çoğunlukla bir Ruby mağazasıdır, ancak editör veya işletim sistemi üzerinde herhangi bir kısıtlama yoktur - ve şu anda Linux ve Mac kullanan geliştiricilere sahibiz, şu anda Windows makineli geliştiricilere sahip değiliz).
Ben Lee

140

Bir geliştiricinin hangi noktada araçlarını seçmesine izin verilmelidir?

Takımını etkilemediğinde.

Buna yanlış mı bakıyorum?

Kesinlikle.

Evet, kısa bir son tarihin var. Evet, Rails'te daha hızlı halledebilirsiniz. Ancak şirketin bir bütün olarak uygulamayı konuşlandırması ve sürdürmesi gerekiyor. Eğer şirket iyi bir C # geliştiricisinin kararlılığına sahipse, korumak için bir C # uygulamasına sahip olmak muhtemelen daha ucuz (ve daha iyi kalite veriminde) olacaktır.

Sizin DBA ve diğer yönetici personel muhtemelen bu yığının aşina olan ve dağıtmak ve güncellemek üzere kullandığı süreçler var olduğunu yığını. Kodu daha hızlı halledebilseniz bile, profesyonel bir web uygulamasını çalıştırmak ve çalıştırmak için gereken tüm masrafları hesaba katmanız daha uzun sürebilir.

Unutmayın, uygulamanızı korumak için yazmaktan çok daha fazla zaman harcayacağınızı unutmayın. Bu maliyet için optimize edin.


19
Mükemmel cevap. Bu durumda 'En İyi' , özellikle ilk programlayıcı için, ilk geliştirme için en hızlı olanı optimize etmek anlamına gelmeyebilir . İş açısından bakıldığında, uygulama bakım modunda çok daha fazla zaman harcayacak ve tüm ekip tarafından desteklenecektir , bu yüzden çerçeve kararını vermesi gereken şey budur.
Eric King

4
Bence bu genellikle sağlam bir tavsiye. Cevap olarak seçmedim, çünkü benim özel durumumda endişelerin çoğu geçerli değil. Dağıtımı ayarlamaktan ve uygulamayı dağıtmaktan sorumlu olacağım. Koruma kısmına kesinlikle katılıyorum, bu geçerli bir konudur. Birisinin kodu güncellemesi gerektiğinde birkaç yıl sonra nerede olacağımı kim bilebilir.
Spencer,

2
Olasılık, JRuby / Rails becerileriniz için aslında işe alınmamış olmanızdır, ancak Web Uygulamaları oluşturma konusundaki deneyiminiz için işe alındınız ve aradıkları şey MVC4 ve C # bağlamında faydalanmaktır.
Jay Stevens

İyi puanlar verirken, o yığında deneyimi olmayan ve büyük olasılıkla ilgisini çekmeyen adamın bunu yapması bir anlam ifade etmiyor. Neden C # adamlarından birini yapmıyor? Tek yapacakları, bu herifin projelerini elinde tutamayacağını hissetmesini sağlamak, yanmış hissetmesini sağlamak ve şirketten ayrılmasını sağlamak.
s73v3r

@ s73v3r - OP'nin neye bulaştığını bildiğini umuyorum. Açıkçası, eğer bir C # devs (ve codebase) boatload'ınız varsa, görüşme sırasında Rails'e görünmelidir. İşi aldıysa ve daha sonra işe alındığı şeyi yaptığını
söylerse

41
  1. Görünüşe göre "yeni" teknolojilere adapte olma yeteneğin yüzünden işe alındın. C #, bu konuda farklı değil. Yeni bir şey öğrenme fırsatı bulmak istemediğinizden emin misiniz?

  2. ASP.NET MVC, Ruby on Rails'e birçok yönden çok benzer.

  3. Sonsuza dek bir salyangoz hızında olmayacaksın. Zaten ROR biliyorsanız, ASP.NET MVC sizin için bir cinch olacaktır. Hile C # öğreniyor.


18
+1, kendinizi tek bir dile / çerçeveye bağlamak aptalca. Yeni şeyler öğrenmek için para kazanma şansını yakala. Ve .NET devam eden birçok aktif ve ilginç gelişime sahiptir.
jozefg

Benzer olduklarına katılıyorum ancak çok fazla zaman kazandırabilecek önemli farklılıklar var. Proje için sınırlı sayıda saat verildiğinde, bence raylar en doğru seçimdir. Bu soruda bahsettiğim gibi yeni şeyler öğrenmeye karşı değilim.
Spencer,

Öğe # 1 açık değil - OP, Java / JRuyb / Rails / nodejs deneyimleri nedeniyle işe alındıklarını söyledi: web uygulamaları geliştirme konusunda çok deneyimim olduğu ve JRuby on Rails gibi yeni teknolojilere yöneldiğim için işe alındım veya düğümleri. OP, uyarlanabilirliklerinden ya da uyarlanabilirliklerin işe alınma nedenlerinden bahsetmemektedir.
SinirliFormsDesigner'la

2
+1, kabul etti, "L1 dilinde A'nın nasıl yapıldığını gayet iyi biliyorum ama tamamen L2 dilinde yapamıyorum" türünün argümanlarını hiç anlamadım.
Shivan Dragon

2
@ Spencer: Bizden tavsiye aldığınızda ve her kişi size aynı tavsiyeyi verdiğinde, muhtemelen tavsiyeyi kabul etmelisiniz. Kabul ettiğinizde cevaplara karşı çıkmanın bir anlamı yoktur, ancak soruyu sormak, doğru cevabın ne olduğunu bilmemenizdir.
Andrew Coonce

21

Java / JRuby ile kaldığınız için argümanlar

Muhtemelen, patronun üretmeni istiyor. Şirkete değer katabilmeniz için sizi kiraladılar. Onlar aşina olmayan bir çerçeve kullanmanızı zorlayarak onlar anlamak emin olun olacak size neden:

  1. Sonuçları daha yavaş bir şekilde üretin
  2. Daha düşük kaliteli kod oluşturun

En iyi programcılar bile yeni diller / çerçeveler ile ısınma süresi gerektirir.

MVC4 ve C # Öğrenmek İçin Argümanlar

Yeni diller öğrenmek iyidir. Yeteneklerinize programcı olarak yatırım yapmak, yalnızca öğreneceğiniz dil / platform yakın gelecekte kaybolacaksa ve Microsoft birlikte devam ederken, bunun bir sorun olduğunu sanmıyorum. C # ve MVC'nin ikisi de boru hattında daha da fazla güncelleme ile ikisini de iyileştiren son güncellemelere sahiptir.

Sizi, şahsen daha iyi bir geliştirici haline getirmek, sizi bu duruma tekrar sokmanıza engel olacak. En iyi kısım? Patronunuz, bu şeyleri öğrenmeniz için size para ödeyecek, bu da kendinizi daha fazla para kazanmanız için ödeyeceğiniz anlamına geliyor.

Alt çizgi

Bu mücadeleyi kazanabilirsin, ama hoşnutsuz meslektaşlarınla ​​çalışmaya başlayacaksın. Sadece her birinin avantajlarını ve dezavantajlarını menajerine anlat ve sonra diğer taraf daha mutlu olacak.


11
+1, "Kendine daha çok para kazanman için para kazandığın anlamına gel".
GrandmasterB

Bunun (ve cevapların birçoğunun) işaret ettiği gibi, zamanınızdaki ilk yaratılış ile başkalarının konuşlandırma / bakım arasında bir sapma var. Pointy-Hairs'ın bu ticareti yapmaya istekli olup olmadığını görmek için iyi (ama saygılı) bir çaba gösterin, ancak yalnızca kararlarına saygı göstermiyor ve şirket zamanında yeni bir şeyler öğrenmek için para almanın tadını çıkarın.
brichins

@brichins: Bu cevap büyük sorunlardan biri aslında olduğunu düşünüyorum gelmez sen öyle söylediklerini işaret!
ruakh

@ruakh Bu yorumu açık bırakmak için hangi cevabı bulmakta güçlük çekiyordum - haklısınız, bu belirli bir tradeoffa değinmiyor (sonuçta ortaya çıkabilecek işyerindeki gerginliği işaret etmesine rağmen). Muhtemelen, OP'nin tüm karar vericilerle (kimsenin kafasını geçmeden) konuştuğundan emin olması gerektiğini de söylemeliydim, böylece proje son teslim tarihine ulaşmadığı zaman, kibarca iletebilir " Muhtemelen öyle olur. Belki bir sonraki proje için Ruby'yi deneyebiliriz. ”
brichins

18

Bir geliştiricinin hangi noktada araçlarını seçmesine izin verilmelidir?

Adı geçen geliştirici yazılım lideridir.

Kuşkusuz, üretkenlikten endişe duyuyorsanız farklı araç setini kullanmak için dava açabilirsiniz (ve yapmalısınız), ancak sevmeyeceğiniz bir cevaba hazır olun. Liderinizin belirli bir araç seti kullanmanızı istemesi, mevcut mimari ile uyumluluk, bakımla ilgili endişeler, lisans sorunları, vb. Gibi nedenlerle çok iyi bir sebep olabilir.

Btw, ifade

kısa sürede çok fazla şey yapmaya odaklanmak

yazılım endüstrisindeki mide ekşimesi ve kargaşanın başka herhangi bir şeyden çok daha fazla sorumluluğu var.


2
+1 "Ne zaman söylenen geliştirici yazılım kurşun. Kesinlikle. Bazen, amacınızı tartıştığınızda ve Lideriniz sizinle aynı fikirde değilken, Liderinizin büyük resmi daha iyi görebilmesi nedeniyle. Bu, bu durumlardan biridir.
Andrew Coonce

Aynı fikirde olmamak, anlaşamamak. Bu şekilde, astlarınızı, nasıl karar vermeyi ve onlar için sorumluluk almayı unutacak olan takipçilerinin başkasına götürmezsiniz. Eğer istiyorsan - tamam. Bence takımın lideri olarak insanların senden daha zeki olacağı yerler var. Ama evet, bazı insanların bununla bir problemi var ve bu trajik.
JensG

"Yazılım endüstrisindeki diğer her şeyden daha fazla mide ekşimesi ve kargaşanın sorumluluğuna" yanıtını ciddiye güldüm. Daha iyi ifade edemedi!
Alexus

11

JRuby ya da Java programcısı olarak işe alındığınızı söylemediğinizi unutmayın.

İşte bu yüzden işe alındığınızı söylediniz: “[B] çünkü web uygulamaları geliştirme konusunda çok deneyimim var ve çünkü JRuby on Rails veya nodejs gibi yeni teknolojilere yöneliyorum.”

Başka bir deyişle, web deneyiminizi ve yeni teknolojileri öğrenme isteklerinizi seviyorlar .

Şimdi sizden web deneyiminizi kullanmanızı ve yeni bir teknoloji öğrenmenizi istiyorlar .

Öyleyse soru şu, bunu yapacak mısın yoksa yapmayacak mısın?


9

Yazılımın En Büyük Harcama Bakımında

En büyük masrafın (% 80) yazılımın bakımında olduğunu okudum. İlk gelişme, toplam geliştirme maliyetinin yalnızca% 20'sidir.

Kendi dilinde (İngilizce değil) kod ve yorumlar geliştiren bir geliştirici hakkında bir yazı okudum ve diğer ekip üyeleri kodu geliştirip sürdürdüğünde, dil imkansızdı çünkü dil (herhangi bir programlama dili değil) yabancıydı. onlara.

Benzer şekilde, kendi seçtiğiniz bir programlama dilinde kod geliştirirseniz, diğer ekip üyelerinin bakımı zor olacaktır.

Çözüm: Çift Programlama

İşvereninizden sizi, gerekli programlama dilini bilen ve birlikte çalışabilecek başka biriyle eşleştirmesini isteyin. Birbirinizden öğrenebilirsiniz ve ikinizden biri şirketten ayrılırsa diğeri kodu bilir.

"Çift Programlama" konulu Wikipedia Makalesi: http://en.wikipedia.org/wiki/Pair_programming


3
Sadece anlayacağınız bir şey yazarsanız, sonsuza dek sürdürmek zorunda kalacaksınız.
jwernerny

6

Birçok şirket, her zaman yaptıklarını veya "güvenli" olanı yapmayı tercih eder. Java ve PHP'nin hala popüler olmasının bir nedeni var. Şu anda, inde.com'daki "COBOL" kelimesini aramak, gerçekten kendisi için konuşması gereken 2144 listeleri döndürür. Endüstri iyi kod umurunda değil, mümkün olduğu kadar uzun süre süt verebilecek kod umurunda (bu C # 'nın kötü olduğu anlamına gelmiyor, gerçekten değil).

Bunun hakkında bir düşünün: kod size üstün gelecek. Başka birinin kodunuzu korumaya devam etmesi iyi bir şans ve C # Node.js ve Rails'ten daha güvenli bir bahis. 5 ya da 6 yıl içerisinde Ruby programcılarının sayısı yarıya düşerse, Perl ve bir noktada "o" web dili olarak kabul edilen herhangi bir dilin başına geldiğinde, bu beni şaşırtmazdı. Javascript'in kaybolması pek mümkün değil ama zaten webin bir tür ASM'si (veya hatta C'si) olarak kullanıldığını görmeye başlıyoruz - başka dillerin sunucu tarafında kod yazabilmesi için derleyebileceği bir ara dil çok iyi eski hale geldi.


4
Bu doğru olsa da, bir C # dükkanının, C # bilmeyen bir Ruby geliştiricisini işe alması, işe alındığı işin öncelikle C # geliştirmeyi içerdiğini açıkça belirtmeden işe alım uygulamasıdır.
Carson63000

5

Geliştiricilerin amaçlarını nasıl uygulayacaklarını seçme konusundaki temel endişem, normalde yalnızca kodu değiştireceklerini varsaymalarıdır. Şuna bakın, 12 ay sonra değişikliklere ihtiyaçları olabilir; müsait değilsin (şirketi terk etmiş veya gerçekten başka bir işle meşgul) ve başka bir geliştirici kodunu çalmak zorunda. Eğer bir C # mağazasıysa, araç setlerini kullanmak iyi bir ekip çalışmasıdır. Yeni teknolojiler araştırılmalı ve uygulanmalıdır, ancak yalnızca lider zamanın doğru olduğunu düşündüğü zaman, sadece bir tane değil birçok hedefe göz kulak olduklarından.


3

Arkanı dön lütfen. Bir Ruby geliştiricisi kiraladığınızı ve çalışmalarını Asp.net/MVC'de uygulamakta ısrar ettiklerini düşünün.

Onlara ne söylerdin? Bu bizim yığınımız dostum. Onunla yaşamayı öğren.

Altın kural, işte burada, altının sahibi olan kuralları yapar.


1
Peki neden Ruby'yi Ruby rolü için kullanmakta ısrar eden birini işe aldın?
Bobson 17:13

3
@Bobson, farklı teknolojilerle ilgili problemleri çözebilecek gibi görünen parlak bir genç programcı olduklarından, genel programlama problemlerini tatmin edici bir şekilde çözdüler ve işe başvurdular.

2
@Bobson: Şimdi, şirketlerin tercih ettiği dilde deneyimi olmayan geliştiricileri işe almaması gerektiğini savunuyorsunuz. Diğer herkes, diğer dili tartışıyor gibi görünüyor, yeni dili çok hızlı bir şekilde öğrenebileceklerini iddia ediyorlar, bu yüzden şirketin sadece belli bir dilde uzman olmadığı için iyi bir geliştiriciye geçmemesi gerekiyor.
Dunk

2
İşe alındım, çünkü web uygulamaları oluşturma konusunda çok fazla tecrübem var ve JRuby on Rails veya nodejs gibi yeni teknolojilere yaslanıyorum.” - bu bir XYZ geliştiricisi olarak işe alınmadı, bu "daha ileri teknolojilere sahip deneyime sahip bir web geliştiricisi olarak işe alındı" (şirketin gelecekte işleri güncellemekle ilgilenebilir).

3
@Bobson: Yeni bir şirkete işe alındığımda, sadece masaya ne getireceğimi bilmiyorum, aynı zamanda hangi projede çalışacağımı ve bu projede ne yapmamı beklediklerini de biliyorum. Eğer OP bu bilgiyi bulmak için canını sıkmadıysa, o zaman onun hakkında utanmalısın. Bununla birlikte, bunun gerçekten de mvc4 işlerini almanın küçük bir engel olacağı beklentisi ile içeri girip ekibe yardım edecek iyi bir geliştirici olduğuna inandıkları birini işe almak için bir şirket olduğunu düşünüyorum. Belki şirket bunu iyi açıklamadı, ancak OP de rolünü yapmadı.
Dunk

2

Birkaç çelişkili hedef vardır ve sorun en iyi uzlaşmayı bulmaktır. Son teslim tarihine sahibiz, belirli bir araç seti talep eden bir takım liderimiz var ve bu araç setiyle deneyimsiz bir geliştiriciye sahibiz, ancak (kısa bir süre içinde) bir süre içinde bir şeyler üretmeye mahkumuz.

Takım liderinin tam olarak bu araç setini (neden henüz bilmediğiniz bir nedenden dolayı sizi bu araç setine alıştırmak için kullanabileceğini) talep etmesinin bazı iyi nedenleri olduğunu anlamak önemlidir. İlk aşamada yapabileceğiniz en iyi şey, bu nedenlerin tam olarak ne olduğunu bulmaktır.

Konumunuza koymak için, takım lideriyle konuşmaya çalışacağım ve durumu sizin görüşünüzde olduğu gibi açıklamaya çalışacağım ve seçenekler ve hangi sonucun (kısa vadeli ve uzun vadeli ekonomik etkiler dahil) üretileceğini açıklamaya çalışacağım. bu seçeneklerin her birini takip ederek. Örneğin, daha deneyimli bir geliştirici, belki de bazı çift program oturumları veya benzerleriyle, sizi yönlendirmek için görevlendirilebilir.

Takım lideriniz tam bir moron değilse, proje ve şirketin genel hedefleri için mantıklı bir fikir birliği bulabilmelisiniz.


2

Bah. Herkes yanlış.

Bu tek platformlu insanlardan daha iyi bir geliştirici olun ve her zamankinden çok daha ilginç seçeneklere sahip olacaksınız. Yani, şimdilik, MVC'yi öğrenin. Ve kendi zamanınızda, sizi ilgilendiren platformlar hakkında daha fazla bilgi edinin. Düğüm becerilerinizi geliştirin. Biraz Django öğrenin. Hangi Java ya da MVC öncesi maruz kaldığınızı ve sonra kaçtığınızı düşünün, sonra kaçın, ama en azından bu platformların ne kadar gizli yanma nefreti önyargınıza soktuğunuzu düşündüğünüzü eleştirebilecek ve açıklayabilecek kadar bilgi edinin. (tamam, belki orada projeksiyon yapıyorum)

Ve şimdi önemli tavsiyeler için. Uzmanlıklarınızı geliştirmeye devam ederken diğer alanlardaki uzmanlığınızı çeşitlendirmeye devam ederseniz, sonuçta yılın herhangi bir zamanında yeni iş bulabileceğiniz bir yerde olacaksınız. çoğunlukla en az yarısı ilginç. Kendinizi bu yerde bulduğunuzda, bunu istediklerini söyledikleri bu işlerle uğraşmayın ve iki güne kadar uzun vadede gelecekte öngörülebilecek bir geri dönüş umuduyla THAT yapıyorlar. Sadece kibarca açıklayın ve özür dileyin; ama hayır, siz gerçekten yapmak istemediğiniz ve röportajınızda söylediğiniz kadar çok şey söylemediğinizden sonra! pozisyonunu size yanlış tanıdıkları ve kabul etmeyi reddettiği gerçeği.

Ama güven bana, yeni bir iş bulmak her zaman 5 dakikadan uzun süren herhangi bir süre boyunca ciddi şekilde tahriş ve mutsuz olmaktan daha iyidir. Ama elbette, önce bunu yapabilmek için aidatlarınızı ödemek zorundasınız. Bazı insanlar asla yapmaz. Bu yüzden en iyi bildikleri şeydeki her şeyi istiyorlar. Ve elbette diğer cevaplar pek de yanlış değil. Aptalca bir şeyi yapmaları gerekiyorsa, bir .NET mağazasının .NET ile gitmesi mantıklı geliyor.

Elbette, mantıklı olmayan, neden bir Rails / JS / UI dev ile çeşitlendirdikleri ve sadece MVC uygulamaları yapmasıdır. Ama şimdilik. Almanız ve aidatlarınızı ödemeniz gerekebilir. Ve söylediğim gibi MVC'ler o kadar da kötü değil. Tüm seçenekler göz önüne alındığında gerçekten kötü bir seçim ama kesinlikle en kötüsü değil. Oldukça basittir, gerçekte olan her şeyin üstüne 10.000 kat soyutlama atmaz ve birileri rahatsız edilebilecek olursa, sorumlu MS mühendislerinin isimlerini lanetleyeceğiniz şekilde müşteri tarafında o kadar bükülmez onları öğrenmek için.

Öyleyse, henüz yapmadıysanız ve şu anda sevdiğiniz şeylerin daha şüpheci bir gözünüz olduğunu bile görebilirsiniz, istediğiniz zaman gidebileceğiniz o yere gidin. Kendimi benim kadar bile raylardan hoşlanmayan buluyorsun. Ruby'de yanlış bir şey olmadığı için değil (tabiki tercümanı dışında).


1

Durumunuza bağlı olarak, sizi neden işe aldıklarını bildiğinizi varsaymak tehlikeli olabilir ve hatta yöneticinizin bunu bildiğini ve insanları becerilerinizle işe almanın iyi bir fikir olduğunu kabul etmek tehlikeli olabilir.

Yukarıdaki tavsiyeyi almanızı ve neden C # üzerinden JRuby ile devam etmeniz gerektiğine dair bir dava hazırlamanızı isterim, belki argümanınız ve zaman çizelgeleriniz eski yöntemlerden kopmak anlamlıdır. Sadece bunun iyi olup olmadığını varsaymayacağım, yöneticiye vereceğim ya da gerçekleri yönlendireceği ve karar vermelerine izin vermeyeceğim, bunun için büyük paralar ödeniyor, artı bir miktar CYA.


1

Dürüst görüşüme göre, iyi geliştiricileri mükemmelden ayıran şeylerden biri, yeni teknolojiye uyum sağlama yetenekleridir. Bugünün en iyi teknolojisinin yarın modası geçmiş olacağı hızlı tempolu bir dünyada yaşıyoruz. Dolayısıyla, adapte olmak istemeyen bir geliştirici, şirket için sınırlı kullanımdadır. Bu iyi olurdu, eğer iyi insanları bulmak ve işe almak gerçekten çok zor, ve bir şirket taşlarını bulduğunda, uzun vadede planlıyorlardı.

Teknoloji kapsamı dışında çalışan şirketleri gördüm ve aynı sebeple yapıyorlar. Yeni teknolojiye adapte olmalarını beklemek anlamına gelse bile harika geliştiricilere el ele geçirmek istiyorlar.

Şimdi senin durumuna. Gruptaki yeni bir adam olarak, söylediklerime ve üstlerime söylemediklerime çok dikkat ederim. Elbette, yeni ortamınıza uyum sağlama sürecinde olduğunuz varsayımına dayanarak çok şeyden kurtulacaksınız. Bununla birlikte, tercih ettiğiniz teknolojideki otorite ve inatçı sebatın altını kesmek, yalnızca üstlerinizin sizi işe almada bir hata yaptıklarını ve sizin rahat bölgenizi terk etmek istemediğinizi düşünmelerini sağlayacaktır.

Seçeceğiniz şey size kalmış, ancak yeni teknoloji öğrenmeye çalışmanızı öneririm. Acıtmayacak, söz veriyorum.


1

C # bilgisi eksikliğiyle ilgili görüşmeniz sırasında dürüst olduğunuzu varsayacağım, çünkü o zaman olmasaydınız yasal açıdan çok güvencesiz bir durumda olabilirsiniz.

İyi programcılar programlamayı bilir. Hiç kimse açıkça tüm dillerde ve çerçevelerde ustalaşmasa da, çoğu arasında oldukça fazla bir ortaklık vardır. Bugünlerde ana akım olandan (örneğin Lisp) çok farklı olan bir dilde çalışmanız istenmiyorsa, o zaman iyi bir programcının uyum sağlayabilmesi gerekir.

Doğal olarak bir öğrenme eğrisi var. İşveren sizi işe aldıysa, o zaman bu eğriyi makul bir süre içinde takip etme becerilerinize güvenmeleri gerekir (yine, C # bilmeme konusunda dürüst olduğunuzu varsayarak). C # dili yoğun biçimde Java'dan ödünç alır ve daha genel olarak, çoğu sınıf tabanlı programlama dili temelde oldukça benzerdir (prototip tabanlı bir dil olan ECMAScript'in üstüne kurulu olan node.js kodundan bahsettiniz, bu yüzden açıkça diğer programlama paradigmalarında rahat.

İyi programcılar, esnek olmanın yanı sıra, yeni şeyler öğrenmeye istekli olmalıdırlar. Yazılım geliştirmede, genellikle öğreniyorsunuzdur ya da ilgisiz oluyorsunuz.

Elbette, işvereniniz, C # bilmediğinizi bildiklerini varsayarsak, sizinle yarı yolda buluşmak zorundadır. Öğrenmeye istekli olduğunuzu gösterirseniz, bunun için size zaman ve kaynak vermek zorundadırlar. Seni derinlere atmak haksızlık ve gereksiz yere streslidir. Oturmanız ve amirinizle sakin ve rasyonel bir tartışma yapmanız gerekiyor. Eğer C # 'da istiyorlarsa, o zaman üzerinde çalışırken bir öğrenme eğrisi üzerinde olacağınızı kabul etmeye hazır olmalılar ve size sıkı son teslim tarihleri ​​getirmeleri haksızlık olur. Eğer son tarihler esnek değilse ve yüksek stratejik öneme sahiplerse, o zaman içinde işi bitirmek için bir miktar enlem yapabilmeniz için hazırlıklı olmaları gerekir. Ofislerinde daha çok kullanılan dilde olmaları gerekiyorsa, o zaman belki de şu anda uygulayabilmenizi isteyebilirsiniz. Son teslim tarihini karşılamaya aşinasınız ve bir sonraki projeniz C # 'da bir öğrenme alıştırması olarak yeniden uyguladıktan sonra ve dışsalları karşıladıktan sonra yazılımı iç gereksinimlere uygun hale getirmek için. Dediğim gibi, günümüzde daha çok kullanılan dillerin çoğunun ortak bir yanı var, bu yüzden çoğu zaman uygulama detaylarına iniyor.

Er ya da geç bir C # mağazasında çalıştığınızı kabul etmeye hazır olmalısınız ve bu nedenle kemerinizin altında C # bulundurmanız gerekir.


0

Belki de herkesin MVC'yi .NET ortamında kullanma şeklinden memnun değillerdir. Web formları gibi işlem yapmak çok fazla olabilir. OOP'da prosedürel geçmişe sahip bir kişi başladığında, her şeyi büyük bir sınıfa koyup her zamanki gibi iş yapmaya devam ettiğinde bu durum farklı değildir.

Bu ilk proje ideal durum değil çünkü bunun çok çabuk yapılmasını istiyorlar. Mümkün olduğunca hızlı bir şekilde .NET'te hızlanın ve özellikleri olabildiğince hızlı bir şekilde dağıtmaya başlayın. Bir şeyleri yapma şeklinizden hoşlanmayacaksınız, aklınızdan çıkarmaya çalışın, bu şeyleri yeniden değerlendirmeye başlayacak ve becerilerinizi başka bir dilde uygulamaya başlayacaksınız.

Umarım, daha fazla Ruby tarzında MVC4'ü kullanma şekliniz (herkesin tam olarak doğru yapmadığını varsayarsak), herkesi Webform zihniyetinden uzaklaştıracak ve kıracaktır.

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.