Son zamanlarda, küçük bir geliştirici olarak ilk işime başladım ve bu küçük şirkette bana danışmanlık yapmaktan daha kıdemli bir geliştiricim var. Ancak, kabul edemediğim şeyler hakkında bana tavsiyede bulunacağı birkaç kez var (uzmanlar tarafından yazılan konuyla ilgili birkaç iyi kitapta öğrendiklerime karşı çıkıyor, bazı Soru-Cevap sitelerinde sorduğum sorular da aynı fikirde ve yoğun programımız göz önüne alındığında, muhtemelen uzun tartışmalar için zamanımız yok.
Şimdiye kadar, onu dinleyerek, güncel iyi uygulamalar olarak öğrendiklerime dayanarak bir kontrpuan yükselterek bu sorundan kaçınmaya çalışıyorum. Orijinal noktasını tekrar yükseltir (çoğu zaman en iyi uygulamayı söyler, daha sürdürülebilir, ancak daha ileri gitmedi), bir not aldım (kontrpuana karşı yeni bir noktaya değinmediği için), düşün ve evde araştırma yapın, ancak herhangi bir değişiklik yapmayın (hala ikna olmadım). Ama son zamanlarda bana bir daha yaklaştı, kodumu gördü ve neden onun önerisiyle değiştirmediğimi sordu. Bu 2-3 hafta içinde 3. kez.
Küçük bir geliştirici olarak, ona saygı duymam gerektiğini biliyorum, ama aynı zamanda bazı tavsiyelerine katlanamıyorum. Yine de projeyi daha da kötüleştireceğini düşündüğüm değişiklikleri yapmaya baskı yapıyorum. Tabii ki deneyimsiz bir geliştirici olarak, yanılmış olabilirim ve yolu daha iyi olabilir, bu istisna durumlardan biri olabilir.
Sorum şu: üst düzey bir geliştiricinin tavsiyesinin iyi, kötü veya belki de iyi, ama bugünkü bağlamda modası geçmiş olup olmadığına karar vermek için ne yapabilirim? Ve eğer kötü/modası geçmişse, ona bir kıdemli olarak saygı duyduğum gerçeğini korurken 'baskılarına' rağmen onu uygulamak için hangi taktikleri kullanabilirim?
İlk olarak, üst düzey bir geliştirici olarak, projelere liderlik ettiğim gençlerin endişelerini doğrudan ve doğrudan bana getirmelerini bekliyorum. Eğer aynı fikirde değillerse, bu benim için çok uygundur. Bazı durumlarda, onların kaygıları hakkında harekete geçeceğim. Çoğu durumda, endişeleri
kenara attı akıl yürütmenin kısa bir açıklamasını bir kenara bırakın, geliştiricinin kendisine saygısızlıktan değil, örneğin:
Bunlar sadece kafamın üstünde düşünebileceğim şeyler. Bir fikrin, uygulamanın, kavramın senden daha yüksek biri tarafından reddedilmesinin veya atılabilmesinin birçok nedeni vardır. Birçoğu tatsız, ama hepsi hepimizin insan olduğumuz ve hepimizin fikirleri olduğu gerçeğine dayanıyor. Onun görüşü şu anda sayısal olarak sizinkinden üstün.
Bu kavramları göz önünde bulundurarak endişelerinizi kıdemli geliştiriciye getirmeye devam etmelisiniz. Boşlukları doldurabilecek başka bir üst düzey geliştirici bulun. Birçok üst düzey geliştirici bulundukları yerdedir çünkü yazılımdan insanlara göre daha iyidirler. Bazıları bulundukları yerdedir çünkü stajyerken kimin öpüştüğünü biliyorlardı. Birisine rehberlik etmenin ne demek olduğunu gerçekten anlayan birini bulun ve dürüst fikirlerini alın. Sizinle aynı fikirde olmayabilir ve sahip olmadığınız boşlukları doldurabilirler. Sizinle hemfikir olabilirler ve amacınızı artırmaya veya durumunuzu iyileştirmeye yardımcı olabilirler.
Hiçbir zaman herhangi bir ayaklanma yapmamalısınız. Kalbinize yolunuzun doğru olduğuna inansanız bile, takip etmeniz için bir talimat verildi ve bunu izlemelisiniz (açıkça yasa dışı olmadığı sürece). Bu talimatları uygularken sorun yaşıyorsanız, nedenini anlamaya çalışmak isteyebilirsiniz çünkü bu davranış modelini, herhangi bir yazılım üreten birçok şirkette çok yaygın olarak keşfedeceksiniz.
En iyi seçeneğiniz işinizi etik ve profesyonel olarak yapmaya devam etmektir. Tamamlamanız istenen yazılımı örnek bir şekilde edinin ve terfi ederek durumdan kaçın. Promosyonlar gelmezse, diğer departmanlarda veya şirketlerde fırsatları takip etmek için bol miktarda referansınız ve deneyiminiz olacaktır.
Kıdemli geliştiriciye saygı gösterin. O, projenin başarısı için senden daha fazla çizgide. Sorumluluğu olduğu için otoriteyi de alır. Eğer bir şeyi değiştir diyorsa, o zaman yap.
Bununla birlikte, zaten sahip olduğunuz bir sorunla karşılaştığınızda endişelerinizi sunmaktan çekinmeyin.
Son olarak, onunla oturun ve burada gönderdiğiniz aynı soruyu ona açıklayın. Belki büyük bir şeyi kaçırıyorsunuzdur, belki de tavsiyelerinizin zayıf olduğunu düşünüyorsanız, önerilerinize daha fazla açacaktır.
Bu olduğunda, yapmanız gereken şey kıdemli geliştirici ile bir görüşme yapmak. Belki de kod veya teknik/iş gereksinimleri hakkında bilmediğiniz bir şey biliyordur. Eğer öyleyse, öğrenmelisiniz.
Bunu özel olarak yapın. Zorlayıcı bir otorite olarak görülebilir ve bu tür şeyler en iyi bire bir yapılır. Kıdemini kabul ederek ve saygı göstererek uzlaşma ve işbirliği yapma isteğini gösterin, ancak sorularınızı yanıtlama konusunda ısrarcı olun. Duruma kavgacı değil, işbirlikçi bir çerçeveden yaklaşın. Sizden size rehberlik etmesini isteyebilirsiniz.
Günün sonunda, kendi fikirlerinizi (adil olmak gerekirse, nispeten yeni ve denenmemiş) onunla dengelemeniz gerekir. Belki de haklısınız, ancak daha deneyimli insanlardan öğrenmek için elinizden geleni yapmalısınız, böylece daha bilinçli bir karar verebilirsiniz. İyi bir üst düzey geliştirici, genç geliştiricilerle bile işbirliği yapma, akıl hocalığı ve öğrenme fırsatını memnuniyetle karşılar ve fikirlerinin yapıcı bir şekilde zorlanmasını memnuniyetle karşılar, çünkü bazen yanlış olduklarını da bilirler.
Sık sık anlattığınız şey sağduyu yaklaşımından geçer. Üst düzey geliştiricinin proje hakkında daha fazla bilgi sahibi olabileceğini , ancak doğru şeyleri yapmanın yolu hakkında daha fazla bilgi sahibi olamayabileceğini unutmayın. Size ne söylediğini ölçmelisiniz - söylediği şey onun bahis iddialarının karşısında uçarsa size kötü tavsiyeler veriyor (yani ondan daha üst düzey insanlar; şirket ... Yazılım geliştirme yapmanın doğru yolu hakkında veya en azından endüstri tarafından kabul edilen en iyi uygulamalarla ilgili sık sık kitap yayınlayan veya yazan tanınmış "ünlü" geliştiricilerden bahsediyorum.
Üst düzey bir geliştiriciden (veya herhangi bir geliştiriciden) bir "kötü tavsiye" örneği: Gevşek bağlantının ne olduğunu ve neden iyi bir şey olduğunu tamamen bilmiyorsanız ve tüm kodu yazmanız söylendiğinde, diyelim ki, kod -Bir ASPX dosyasının arkasında, üst düzey geliştiricinin clueless olduğu ve tavsiyelerinin dinlenmemesi gerektiği açıktır.
Öte yandan, size sistemdeki belirli bir modülün nasıl çalıştığını söylüyorsa, çoğu zaman tekrar tekrar dinlemek en iyisidir, size söylediklerini uygun geliştirme ilkeleri karşısında tükürmez.
İşte benim kuralım: Bir şirketteki kıdemli bir geliştirici, en uzun süreye sahip olan geliştirici olabilir; gerçek bir yeteneği olmayabilir. Alanınızdaki en saygın geliştiricilerin söylediklerine aykırı şeyler mi söylüyor (ondan çok daha fazla deneyime sahip olan ve çok daha yetkin ve saygın olan insanlar)? Eğer öyleyse, çok aşırı koşullar olmadığı sürece tavsiyesinin kötü olması ihtimali vardır.
Aşırı önyargılı bir bakış açısı için aşağı inişler/anlaşmazlıklar tamamen bekleniyor.
Eğer kıdemli size endüstrinin en iyi uygulamasını görmezden gelmek için iyi nedenler veremiyorsa, orada zamanınızı boşa harcamayın. Asla ilerlemeyeceksin çünkü çok tehdit ediyorsun ve yine de kötü kod yığınını korumak için zaman harcamak istiyor musun?
Çoğu geliştirici kolejden ayrıldıklarında okumayı bırakır. Yapmadın, bu yüzden zaten ilk% 10'dasın. Bugünlerde çok fazla fırsat var. Şehrinizde iş piyasası yoksa, daha iyi bir kasaba arayın.
Vay canına, yeteneklerinizi göstermek ve göstermek için harika bir fırsat. Kariyerin başlarında amirim olan, karar veremeyen bir kişi vardı, herhangi bir karar, bu yüzden bir sonraki üst seviyedeki işin nasıl yapılacağını öğrenmek için bu fırsatı kullandım. Beni terfi ettirdi. Aynısını yapmalısın.
Üst düzey geliştiricinin avantaj noktasını anlamak zor olabilir ve evet, işleri yanlış yola yönlendiriyor olabilir, ancak büyük projeler söz konusu olduğunda tutarlılık daha önemlidir.
Tamamı kendi kodlama stillerini, standartlarını, metodolojilerini ve tasarım modellerini takip eden 50 geliştiriciye sahip olmak tamamen kaos olacaktır. İşler yanlış yapılıyorsa, sürekli olarak yanlış olmak birçok farklı yanlış türden ve doğru yapılmış bazı şeylerden daha iyidir.
Bakım yapma, özellik ekleme veya "yanlış" olanı düzeltme zamanı geldiğinde, mevcut tasarımdaki sorunların önceden bilinmesi çok daha kolaydır.
Saygıyla katılmamanız iyidir ama sonunda sıraya girmeniz en iyisidir. Bir takımda hile yapan hiç kimse takım oyuncusu olarak görülmez.
Üst düzey bir geliştirici olarak bu tür pasif agresif nit toplama beni çılgına çevirecek ve yüzleştikten sonra beni kötü bir inceleme yapmaya itecektin. Mükemmel çözüm, ekibin birlikte yaşayabileceği çözümdür.
Tarza gelince, bu, stil rehberiniz ve oluşumunuz tarafından belirlenen en iyi uygulamalar tarafından belirlenmelidir. Eğer tutkulu iseniz, ancak bir karar onunla canlı olarak alındığında ve bulunduğunuz takımın sınırları içinde çalışıyorsanız.
Çok iyi bir durumda değilsiniz, ancak HLGEM'in de işaret ettiği gibi, bu pozisyonları kılık değiştirmiş nimetlere dönüştürebilirsiniz. Sorunuz çok yönlü, bu yüzden bölümlere yaklaşacağım.
Şüpheliyim, bilmiyor. Aynı zamanda, bana kibir olabileceğini göstermeye çalışıyor, böylece sorular için ona pek yaklaşmıyorum.
Bu çok doğru olabilir. Sektörde yıllardır ve yetenekli yazılım liderleri olan geliştiricilerin döküntüsü var - bir gelişimden veya mentörlük açısından ( fark). Deneyim, yeni zorluklarla mücadele etmek ve yeni fikirler denemek ve yeni beceriler öğrenmekle elde edilir, ancak programcıların çoğunluk, hayatlarını Kurumsal Ofis'in bir kanadında geçirir, Bordro Uygulaması üzerinde sadık Visual Basic ile çalışır ve = Java araçları, soğuk, gri ofisleri ile dünya yarışını asla görmezler.
bunda yanlış bir şey yok. Birçok geliştirici için tüm istedikleri ve durumdan mükemmel bir şekilde memnun oldukları için, geliştiricilere liderlik etmek yerine, gelecek nesil programcıları teşvik etmek için ideal bir durum değildir.
Bravado ve kibir, yetersizlikleri örtmeye çalışan bir savunma mekanizması olabilir. Nasıl hallediyorsun? Yapma onunla yüzleş - başın beceriksizse ve patron durumu düzeltmek istemiyorsa onunla yaşamak zorunda kalacaksın. Bu, yuvarlanmak ve ölmek anlamına gelmez, ancak iyi bir ipucu olmak için zorlamak olamazsınız.
Ancak, sadece kodumu inceler ve yorumlarının çoğu kodlama yönergeleriyle ilgilidir.
İyi bir programcı olamayacağından beni haklı gördüğünüzü söyleyen budur. Bu şu an senden daha iyi bir programcı olmadığı anlamına gelmiyor (en azından sektörde olmaktan çok daha fazla deneyime ve maruziyete sahip olacak) ama yine de, bu bir etkin kurşun. Kılavuz ilkeler iyi ve iyidir, ancak kodun işlevi, etkinliği ve verimliliğinden sonra gelir.
Böyle bir durumda ne yapmalıyım?
Yöneticime bu durum hakkında bilgi verdim ve her seferinde "evet" dediği halde, liderimi değiştirmesini talep ettim, ancak ciddi bir işlem yapmıyor.
Tüm bu hususları yöneticiye ve yedeklemek için özel örneklerle numaralandırdınız mı? Eğer ona gidip "Yeni bir ipucuna ihtiyacım var" derseniz, sizi ciddiye almayacak ve teknik bir sorundan ziyade "kişilerarası bir sorun" olarak algılamayacaktır. Bu durumda birçok patronun tepkisi, "kendini halledeceği" ümidiyle onu görmezden gelmektir.
İşte bazı öneriler.
Belirli bir sorunu çözmenin daha iyi bir yolu varsa, sadece DO IT.
Kodunuz/çözümünüz en iyi argümanınız olsun. Aksi takdirde size söylenenlere sadık kalın.
Durumda
ben küçükken kodun belirli bir bölümünün en iyi olmadığı bir durum vardı. Sadece tartışmak yerine, onu geliştirdim SONRA sonuçları kıdemliime gösterdi. Kabul etti, çünkü kod her zaman kral.
Tabii ki deneyimsiz bir geliştirici olarak, yanılmış olabilirim ve onun yolu daha iyi olabilir, bu yüzden sorum, üst düzey bir geliştirici tavsiyesinin iyi veya kötü/modası geçmiş olması durumunda daha iyi karar verebilmem için hangi yolları yapabileceğimdir.
Deneyimli bir geliştirici olabilirsiniz. Bunu yapana kadar, bir genç olarak sezginin doğru olup olmadığını yargılamak için donanıma sahip olacaksın ve o zaman önemli olmayacak.
Bu arada Joel Etherton'un cevabını okuyun.
"kendi yöntemiyle uygulamaya" çalışmamanızı şiddetle tavsiye ederim.
Şimdiye kadar, doğru şeyi yaptığınız anlaşılıyor. Mütevazi ve bir kontrpuan getirdin. Sorunuzdan yöntemine katılmadınız mı, yoksa bir alternatifi de karşı çıkıp sunmadığınızı anlatamadım. Alt satırda, başka birinin yaklaşımını vurmaya çalıştığınızda her zaman net ve düşünülmüş bir alternatif sunun. Görebileceği gibi, işe yarayabilecek iyi bir fikriniz var ve işe yarayan bir fikri var.
Herhangi bir pozisyonda, her zaman alt-optimal işleri yapmak zorunda kalırız. Gerçekten hoşlanmıyorsanız, yaptığınız gibi yapabilir ve yükseltebilirsiniz. Bundan sonra, patronun yolu veya otoyol. Daha parlak tarafta, bir çocuk olarak kötü karar verme riskinin çoğundan yalıtılırsınız.
Savaşları seç. Eğer bir saatlik çalışma hakkında konuşuyorsanız, yolunuzu çalışana kadar zaman zaman kodunuzu değiştirmeniz gerekecektir. Bir dahaki sefere büyük bir proje aldığınızda, başlamadan önce fikirlerinizi sunma şansını önceden isteyin. Ekstra zaman ayırın ve harika bir demo veya prototip yapın.
Şok edici bir şekilde yaptığım şey, sadece sormayı bırakmak. Başka bir seçenek verildiğinde, sadece araştırıyorum ve kendi yolunu yapıyorum ama buna kendi yetenekimi ekliyorum. Yeteneklerinizi geliştirmek ve hala eski okulu tutma ihtiyacını yatıştırmak için bir öğrenme deneyimi olarak kullanın.
Sonunda her üst düzey geliştirici, yeni şeyler yapmanın yollarına dikkat etmez. Zaman zaman 20 yıl önce başlattıkları dil için harika olan eski okul yollarına sahipler, ancak bugünün dünyasında hileli veya "kötü bir kokusu var" olarak kabul ediliyorlar.
Bu, devam etmenin korkunç bir yolu gibi gelebilir ve öyle. Ama aynı zamanda yaşlılarımdan bir şeyler yapma yolundan çok şey öğrendim. Ama bu gerçekten sadece benim düşüncem. Sonunda işinizde mutlu olmalısınız ve dikkat dağıtıcı unsurları ve gerilimi düşük seviyede tutmalısınız. Ve şeylere itiraz etmeyerek stresin aşağı gittiğini göreceksiniz.
Orada kıdem yüzünden yaşlı insanlara güvenme. Otoriteye mümkün olduğunca sık meydan okuyun. Yetkili bir makam herhangi bir soruyu ikna edici bir şekilde cevaplayabilmelidir. Onu en başta otorite yapan şey bu, değil mi?
Birisi hayatı boyunca batıl inançlara sahip olduğu için haklı olduğu anlamına gelmez. Unutmayın, orta çağda insanlar dünyanın düz olduğuna inandılar ve bu kendi kendine dürüst eşeklerin bazıları şüpheleri öldürmenin haklı olduğunu hissettiler. Şüphelilerin haklı olduğu ortaya çıktı. Kötü yorumlar için çok.
Asla kötü bir derlemeden korkmayın. Görme engelli bir adama güvenir misiniz?
yukarıdaki iyi yanıtlar, "en iyi uygulamalar" veya "daha sürdürülebilir" gibi bir yanıtın bir şeyler öğren için bir fırsat olduğunu ekler. "Farkı anlayabilmem için bana neden bu yolun en iyi olduğuna dair bir örnek verebilir misiniz?" veya "Hangi durumlarda bu şekilde başka bir şekilde daha sürdürülebilir olur, böylece böyle planlamayı öğrenebilirim?"
Kıdemli haklıysa, size bir örnek vermek kolay olacaktır. Eğer bir papağansa ... ona ciyaklamayı durdurmak için bir kraker ver ve en iyi olduğunu düşündüğünü yap. Aksi halde sipariş edilene kadar.
Yaşlıların rolü akıl hocasıysa, neden sorulduğunda açıklayacaktır.
HLGEM ve Jarrod'un daha önce söylediği gibi, bu gerçekten kılık değiştirmiş bir nimet. Her iki yanıtı da harika ve bazı noktalar eklemek istiyorum.
Potansiyel müşteriniz alan adınızda olmadığından, olası satışınız ara katman yazılımı hakkında fazla bir şey bilmediği için uygulamanın bir kısmı için önemli kararlardan bazılarını alabilirsiniz. Ayrıca yöneticinizle uygulamanın nasıl geçmesi gerektiği, ürün kullanıcılarının ne istediği ve yöneticinizin ürün ekibi tarafından kendisine sunulan bir durumu nasıl ele almak isteyeceği konusunda da kapanışınız var. Bir uygulama hakkında kaç kişinin bu tür bilgileri alacağını söyle.
Büyük bir ekipte olduğunuzda takım arkadaşlarınızdan ve/veya liderinizden yardım alacağınızdan emin olabilirsiniz, ancak yöneticinizin nasıl düşündüğü veya ürün ekibinin nasıl düşündüğü hakkında bilgi sahibi olmayacaksınız çünkü bu tür şeyler genellikle liderliğinizden geçer ve bir takım bazı üst düzey geliştiriciler. Bir kişinin projelerinin taşınması biraz zor olduğunu kabul ediyorum, ancak madalyonun diğer tarafı çok büyükse neden bir şansı kaçırıyorsunuz. Ne öğrenebileceğinizi öğrenin, yapabildiğinizin tadını çıkarın ve çok zorlaşırsa, Jarrod'un dediği gibi yöneticinizi ikna edin veya duruma bağlı olarak yeni bir iş/proje bulun.
Bir saniyeliğine yönetimin gerçekten işi yapmak için ne kadar yetenekli olduğunuzu anlamadığını düşünüyorsanız, muhtemelen yanılıyorsunuz. Yönetim muhtemelen muhtemelen, sizi değiştirir ve işinizi devralırsa liderinizin tamamen işe yaramayacağını anlar.
Onların yerini değiştirmedeki GERÇEK nedenler, onlara sunduğunuz tüm zorluklara rağmen, hala iş için en iyi kişisiniz. Açıkçası, çalışmanızı başkalarına teslim etme riskine çok fazla değer veriyorlar.
Yönetimin zekasını hafife alma ...
Çoğu geliştiricinin onlara kredi vermesinden çok daha akıllılar. Yönetmeye başlayana kadar bunu anlamadım. Muhtemelen ayrıca, potansiyel müşterilerinizin ne kadar işe yaramaz olduğunun farkındadırlar, ancak muhtemelen bu sorunu çözmek için güçsüzdürler.
Sizin için bir resim çizeyim, şirkette 5 yıllık tecrübeye sahip A Adayı yetersiz. Yönetici bunu bilir, üst yöneticisine A Liderini bırakmasını önerir. Üst yönetici neden bu kadar beceriksiz olup olmadığını yıllar önce ele almadığını sorar. Müdür A, özellikle A Lead'in faydası olmayan bir şişirilmiş maaşı olduğu için şimdi kötü görünüyor ...
İşte bir başka potansiyel senaryo, A Lideri önemli biriyle yakın arkadaşlar. Politik olarak üstlenemeyecek kadar sıcak,
Her iki şekilde de, büyük organizasyonların halının altındaki beceriksiz insanları süpürmesi, onlara ÇOK ÇOK zarar veremedikleri yılların "deneyimine" uygun yoğun iş ve sahte güç vermeleri daha kolay olduğu gibi uzun süren bir hata ile . Ne yazık ki birçok kuruluş bunu yapmayı tercih eder aslında problemlerle ilgilenir.
Elbette bunun nedeni, bu tür bir organizasyondaki yöneticinin, bu tür insanların organizasyona getirebileceği uzun vadeli sorunları ele almaktan ziyade, kötü yeteneklerle başa çıkmak için her zaman kısa vadede daha iyi olmasıdır.
Bu nedenle, kısa görüşlü ve potansiyel olarak etik dışı olsa da, birçok geliştiricinin aslında kredi verdiğinden biraz daha akıllı olduğunu itiraf etmelisiniz.
Tüm bunların açık bir şekilde ortaya çıkarılması gerektiğini düşündüğüm bir akım var: kavgacı olma. Onunla olan ilişkinizi koruyun. Tavsiyesini bir tuz tanesi ile almak ve kitaplarda ve bunun gibi sitelerde doğrulamak harika, ama ona saldırmayın. Üst düzey bir geliştiriciyse ve birçok projeden geçiyorsa, aptal değil ve ondan öğrenecek çok şey var. Daha önce yaptığınız gibi göründüğü gibi, bakış açısını anlama arzunuzu ifade edin. Yanlış olduğundan ve haklı olduğunuzdan emin olsanız bile, tam tersi olasılığını kabul edin (bunu zaten anladığınız anlaşılıyor). Tartıştığınızı açıkça belirtmeye çalışın, çünkü onu yanlış kanıtlamaya çalıştığınız için değil, bakış açısını daha iyi anlamak istiyorsunuz.
Ona bir soru sorduğunuzda hemen size geri dönmezse ya da cevabı belirsiz ve/veya yararsızsa, sizi uçurduğunu varsaymayın. Burada daha önce de belirtildiği gibi, meşgul ve/veya stresli olabilir.
Sabırlı olmak da harika. Kafanızda farklı yapılması gerektiğini düşündüğünüz şeylerin bir listesini tutun ve uygun zamanda sunun. "En iyi uygulama" ifadesinin yanı sıra öneri için gerekçeniz olduğundan emin olun. Ve işleri doğru yapmaya ve hata yapmamaya dikkat edin, böylece daha sonra argümanlarınızı yaparken güvenilirliğiniz olur.
Şimdiye kadar, onu dinleyerek, bir karşı puan yükselterek, sorunu ortadan kaldırmaya çalışıyorum, orijinal noktasını tekrar yükseltiyor (çoğu zaman en iyi uygulama, daha sürdürülebilir ama daha ileri gitmedi). .. bunu evde düşün, ama ... hala ikna olmadım. Ama son zamanlarda ... kodumu gördü ve neden onun önerisiyle değiştirmediğimi sordu. Bu 2-3 hafta içinde 3. kez.
(İşlemler için biraz düzenlenmiştir.)
Bu kısım beni ilgilendiriyor. Doğru olup olmadığınızı görebilmenin bir yolu onun ne dediğini anlamaktır. Okuduğum şey (kendi tarihimle, diğerleri farklı olabilir), mentorun ne dediğini anlamayan ve açıklama istemeyen bir genç geliştiricidir. Bunu çözmenin bir yolu, ondan netleştirmesini istemek: bu bundan daha iyi bir uygulama nasıl? Veya bu neden kodumuzdan daha sürdürülebilir? Eğer bunun cevabını bilmiyorsanız, gerçekten iyi tavsiyelerde bulunup bulunmadığını bilmiyorsunuz.
Beni gerçekten endişelendiren kısım, sizden birkaç kez değiştirmenizi istediği ve siz değiştirmemeniz. İşte onun yanından bakmanın bir yolu: Değişikliği yapmanızı istiyor, nedenini soruyor, size (aklına geçerli) bir sebep veriyor ve değişikliği yapmayı reddediyorsunuz. Açıklık istemezsiniz, bu yüzden sebebini anladığınızı varsayar ve değiştirmek için çok tembel veya çok inatçıdır - ikisi de üst düzey bir geliştiricinin sizi düşünmesi için iyi bir şey değildir. Güven bana, soru sormak bu şekilde itibar kazanmaktan daha iyidir.
Birkaç düşünce:
1/Çalışıyor mu? Yolu çalışıyor mu değil mi? Yolunun daha düşük olmasının nesnel bir nedeni var mı?
Objektif bir nedenden dolayı, belirsizlik olmadan ölçülebilen bir şey kastediyorum (performans, hatalar, kod uzunluğu ...) Çözümleri işe yarıyorsa ve bunun zayıf bir çözüm olduğunu gösteren nesnel bir ölçüm yoksa, yolunu yapın. Onun yolu daha iyi ... çünkü muhtemelen kod tabanının geri kalanıyla daha tutarlı ve işinizi kullanması/yeniden kullanması daha kolay olacak. Hoşuna gitmeyebilir, ama bununla ilgili değil, değil mi?
Çalışmazsa veya önemli metriklerde düşük performans gösterirse, uygulayın, çözümünü çözümünüzle karşılaştırın, sonra ona yolunu denediğinizi söyleyin, ancak iyi performans gösteremediğini (metrikleri verin) ve ona sorun. uygulamanızda bir hata yaptıysanız veya farkında olmadığınız bir gereklilik varsa
2/Yıldız programcılar diyor ki ... Neden lanet olsun? Ünlü programcıları planlama, tasarım, OOP vs prosedür, birim testi, istisnaların ele alınması, kaynak kontrolü, ve benzeri gibi) birçok temel konuda birbirleriyle derinden çelişkili bulacaksınız.
2 çözüm arasındaki işlenebilirlikteki tek fark, bunu kimin tercih ettiği ise, atlayın. Hoşunuza gitmeyen bir paradigmada çalışarak gereken zihinsel egzersizden faydalanabilirsiniz.
Sadece sizin gibi olmak istediğiniz kişilerden tavsiye almanız gerektiği fikrine dayanarak, cevap onun gibi olmak istiyorsanız kıdemli tavsiyenin iyi olmasıdır.
Tüm kariyeriniz boyunca böyle insanlarla uğraşacaksınız. Ve herhangi bir kodlama problemine en iyi yaklaşım hakkında katılmayacağınız birçok kişi olacaktır. Yıllar boyunca benim için işe yaradığını düşündüğüm en iyi şey, bir konuya baskı yapmaya devam ederse, onlarla birlikte olun ve onlara çeşitli olası çözümler arasında çözümlerini düşündüğünüzü ve çözümün sizin Bu durumda en iyi yaklaşım olduğunu düşündüğünüz yerdi.
Şimdi, her zaman tavsiyelerine karşı seçim yaparsanız, zaman zaman sadece birkaç karıştırılmış tüyleri düzeltmek için zaman zaman onların "tavsiyelerini" vermeniz ve kullanmanız gerekebilir. Her seferinde girdilerini reddettiğinizi hissetmedikleri sürece, bu, aranızdaki barışı korumak için uzun bir yol kat edecektir.
Ayrıca üst düzey bir geliştirici olduklarını ve bu ortamda sizden daha uzun süredir çalıştıklarını düşünün. Gerçek hayat kodlaması çoğu zaman en iyi uygulamalar veya topluluk tarafından kabul edilen standartlarla uyumlu değildir. Belirli bir şeyi tam olarak ifade edemedikleri bir şekilde yapmanızı tavsiye etmelerinin bir nedeni olabilir. Bu nedenle, bunlara katılmıyorsanız bile, yalnızca çözümünüzün daha iyi olduğuna inandığınız gerçeğine dayanarak tavsiyelerini elden atmamaya dikkat edin.
Her şey denge ile ilgili. Ve sadece kodlama dengesi değil, takım dengesi. Birçok proje, geliştiricilerin bunu yapamayacağı için değil, dostane bir şekilde birlikte çalışmanın yollarını bulamadıkları için başarısız oldu.
Kişisel deneyimimden, jzd tarafından gönderilen bir kişiye ek bir cevap olarak düşünülmesi gereken bazı şeyler sunmak istiyorum ...
Bir profesyonel randevuda, kıdemli biri tarafından mentorluk yapmam gerekiyordu. Bazı şeyler biliyordu ama dürüstçe o kadar da değil, maalesef bilmiyordu, bu yüzden cevaplarına son derece güveniyordu. Bir şekilde söylediklerinin yanlış olduğunu hissettim. Yaptığı şeyler aldığım MS sertifikasında belirtilen en iyi uygulamalara karşı olduğunu kanıtladı :-). Bundan sonra başka şirketlerde çalışan diğer insanlara sormaya başladım (stackexchange o zamana kadar çalışmıyordu ve cevap vermiyordu) ve blogları okumaya başladım.
Yanlış olsaydım harika olurdu, çünkü sadece davranışımı değiştirirdim, ama değildim.
Son birkaç yıldır bir şey fark ettim, neredeyse çalıştığım her şirket, üzerinde çalıştığım hemen hemen her projeyle, neredeyse her yeni işe alımla (beceri/deneyim seviyesinden bağımsız olarak) 'farklı' bir şeyler yapmak istiyor.
Kodlama standartları ya da genel mimari ya da dil ya da metodoloji olabilir. Ama bu her zaman bir şeydir. Çoğu zaman, sadece 'Son kullanıcılarımız için her şey daha iyi belgelenmemeli mi?'
Sana tavsiyem o adam olma.
Bir gün, bu kararları almak için işe alınan ve ödenen bir üst düzey erkek olacaksınız. O gün geldiğinde git! O güne kadar konumunuzun ne olduğunu anlayın. Bir patronum var, endişelendiğim kadarıyla tüm işim patronumu mutlu etmek. Bu, maaş derecemin dışında verilen kararları ikinci olarak tahmin etmek değil. Gerçekten emin değilseniz, patronunuzla/amirinizle konuşun ve öğrenin.
Genel olarak konuşursak, herkesin eski bir yaklaşıma sahip olan eski bir yaklaşıma sahip olması, eski yaklaşımdan sonra takımın yarısından, yeni bir yaklaşımdan sonra takımın 1/4'ünden ve son teknoloji geliştirmeye çalışan takımın 1/4'ünden daha iyidir. , yepyeni bir yaklaşım.
Sorunlarımın çoğunu forumlara göndererek ve başkalarından yanıt alarak sıraladım ve yaklaşık 1 yıldır bu şekilde hayatta kalıyorum.
Böyle bir durumda ne yapmalıyım?
Dürüst olmak gerekirse, birçok teknik iş böyle. Gerekirse zor sorunları kendiniz (internet ve sakinleri yardımıyla) çözebilecek bir kendinden marş olmanız gerekir.
Kod incelemeleri alma ve mimari tasarımlar konusunda yardım alma açısından bakıldığında, iyi yöneticilerim olsa bile, "statik değişkenler bir s_ öneki olmalıdır.".
Öğrenme ve öğrenmeyi öğrenme fırsatını kullanın; bunlar geleceğe kullanabileceğiniz bir beceri olacak.
Bu konuda tamamen farklı/tartışmalı bir fikrim var.
Çoğu zaman insanlar çoğu endüstride karı en üst düzeye çıkarmak ve kaybı en aza indirmekle ilgili nihai hedefi izlemez. Bunun kalpsiz geldiğini biliyorum (dolayısıyla olumsuz noktalar), ancak sonuç üretmeyecekseniz deneyim ve sagacity çok az önemlidir.
İnsanlar, şirketin doğrudan sonuçları üzerinde çok az etkisi olan, tartışmak için son derece dolaylı şeylerle yakalanabilirler.
Bir şey hakkında haklı olduğunuzu düşünüyorsanız, en iyi bahisiniz bunun nasıl daha iyi ölçülebilir üretileceğini göstermektir sonuçlar.
[Yeniden yayınla: çünkü bir şekilde burada ikinci bir hesap oluşturdum]
Ama son zamanlarda bana bir daha yaklaştı, kodumu gördü ve neden sorduğumu sordu öneri.
Bunların öneri veya sipariş/talimat/talimat/direktif/herhangi bir şey olup olmadığı konusunda net olmalısınız.
Öneri = Bence bu şekilde yapmak daha iyi; ama bu senin seçimin.
Sipariş/vb. = Bu şekilde yapılmasını istiyorum; ve bu benim seçimim.
Gerçekten bir öneri ise, istediğiniz gibi yapın ve kodunuzun durmasına izin verin. Bu bir emirse (ve bu mentorun bu şekilde sizin üzerinde yetkiniz varsa) - söyledikleri gibi yapın.
ahhh. Bu soru bana birçok şeyi hatırlatıyor. Öncelikle tüm işyerimdeki yöneticilerden biriyle anlaşamadığımı söyleyeceğim. Bir kişilik meselesi değildi. Bu bir iletişim meselesiydi. XYZ ve bu özel yöneticinin ABC olarak söylediklerimi keseceğini söyledim. Ben bir yıl daha o yönetici ile çalıştı sürece ben iyi iletişim mümkün olmaz.
Geçen hafta sonu. Bir adam benimle singletonlar hakkında tartıştı/katılmıyordu. İyi olmadıklarını ve ASLA kullanılmaması gerektiğini ve kesinlikle kullanmak için hiçbir sebep olmadığını söyledim. Argümandan birkaç gün sonra onu http://www.gmannickg.com/?p=24 ve bağlantı verdiği daha ayrıntılı makale ile ilişkilendirdim. Başka bir programcı (DudeB) günü o sadece uygun olduğunda (ki ben asla 'ekledi') singletons kullandığından söz. DudeB bu konuda bir şey söylemedi ama DudeB, DudeB'in tüm iş parçacıkları singleton'a eriştiği için bellek çekişmesi olan bir projede olduğunu söyledi. Bundan bahsettikten sonra, makaleyi gösterdikten ve bellek tartışmasından bahsettiğim adam, singleton hakkında konuşmayı sevmediğim için kabul ettiğim konusunda anlaşmaya varmamız gerektiğini söyledi (henüz bu d'oh'u yazıyorum)
Nokta. Bazen bu adam gibi yanlış olabilirsiniz (belki birisi bir yorumda benimle singleton hakkında anlaşamaz). Üst düzey programcım olan müdürüm ile olan durumumda sadece açıkça istediğim şeyi yaptım ve bu işyerinde kaliteyi bir daha ciddiye almadım. İzin verildiğinde ne yapmayı tercih ettiğimi yaptım ama her zaman istediğim şeyi yaptım ama katılmıyorsam en az bir kez getirirdim.
Ben başlangıçta bunu denemek ve dışarı sopa, günün sonunda kıdemli biraz daha deneyim ve saygı kazanana kadar direncinin nafile olması muhtemeldir. Bunu bir öğrenme deneyimi olarak kullanın ve hala aynı şekilde hissediyorsanız 2+ yıl içinde başka bir şirkete geçin. İşte o zaman yeni işvereninizi etkilemek için sizin ve yaşlılarınızın iyi fikirlerini bir arada kullanabilirsiniz. Elbette, kariyerinizde daha önce kötü kararlar olarak algıladığınız nedenlerin bazılarını anlamaya başlayabilirsiniz ve bir noktada sizin için çalışan bir genç geliştiriciniz olabilir.
Bir şeyleri tam olarak istendiği gibi sorgularken sorun yok. İyi bir üst düzey kişi, işleri yapmadan önce, iş nedenleriyle, hatta sadece göreve bağlı nedenlerle yapmanın doğruluğu konusunda sizi her zaman ikna edemeyebilir; ancak endişenizi kabul etmek için zaman ayırmalı, sorunu çözemediklerinde itiraf etmeli ve başka bir zamana dokunmalıdır.
Son işimde, benden sadece bir ay boyunca orada olan başka bir geliştiriciyle birlikte çalıştım. Benzer sistemler üzerinde çalışan diğer şirketlerde mevcut tecrübeleri vardı. Çok sakindi ve düz başlıydı. Yine de bana yerli bir yazılım geliştiricisi olmayan izlenimi verdi. "Yerli" derken, zamanla yavaş yavaş bir geliştirici pozisyonuna düştü. Bazı alanlarda iyi okunduğunu söyleyebilir, ancak bazı temel özellikleri yoktu. Görünüşte basit bazı problemlerle mücadele ettiği açıktı. Yazılımı istediğini yapmasını sağlayabilirdi, ama sadece "anlamadı".
Kişisel olarak, "yolum daha iyi çünkü bunu bir kitapta okudum" zihniyeti asla aşamadım. Bu, orada çalışırken açıkça itiraf ettiğim bir şeydi. Birçok yönden, önceki deneyimlerim beni pozisyon için kötü bir uyum haline getirdi. "Çok ileri" olduğumdan mı yoksa farklı bir yoldan mı olduğumdan emin değilim.
O ve ben sürekli birim testlerinin nasıl yapılacağını tartıştık. Maymun yamasıyla çok beyaz bir kutu yaklaşımına inanıyordu. Alay ve bağımlılık enjeksiyonu ile desteklenen kara kutu testini tercih ederim. Yaklaşımının kırılgan testlere yol açtığını düşündüm, ancak eminim ki bazı görüşlerim C # 'daki arka planım tarafından sallandı. Her zaman Python'da çalışmıştı. Kim haklıydı? İkimiz de? Hiç birimiz?
Şirketler, geliştiricileri kıdemli statüye yükseltirken daha dikkatli olmalıdır. Bir işte yeterli deneyim kazanmak çok zordur. İyi bir üst düzey geliştirici, hangi araçların mevcut olduğunu ve diğer mağazaların benzer sorunları nasıl ele aldığını bilmelidir. İlk işimi terk edene kadar (üst düzey bir geliştiriciydim) modern web siteleri oluşturmayı, düzgün bir şekilde sürekli konuşlandırmayı, kaynak kontrol dallarını yönetmeyi, dağıtılmış hizmetleri oluşturmayı veya NoSQL veritabanlarını kullanmayı öğrendim. Gerçekten kıdemli bir geliştirici olmak için yeni felsefeler, teknolojiler ve süreçler öğrenmeniz gerekiyor.
Sonuçta, benden daha uzun süre orada kaldığı altı ay ona avantaj sağladı. Her zaman kendi isteğine göre eğildim ve yolunu test ettim. Profesyoneller bunu yapar. Öğrenmek için oradaydım. Yine de, oldukça geliştirici olmayanların çoğunda olduğu gibi, bir yönetim pozisyonuna girdi. 3 haftadan kısa bir süre içinde bir toplantı yaptık ve bir karton kutu ile çıktım. Şimdi kovulduğuma sevindim çünkü o yer beni gözyaşlarına sıkıyordu.
Bu bir kişisel gelişim ortamı değildi. Ne yazık ki, yardım amaçlı politikalar çok sıkı takip edildiğinde üretkenliğe zarar vermeye başlar. Ben orada sadece satır aralığı ve adlandırma kuralları hakkında yorum almak için, diğerleri kodumu incelemek için bekleyen saatlerce oturup. Politikaya aykırı önerilerde bulunmaya başladığımda ... Birdenbire isyancı, naysayer ve kışkırtıcı olarak etiketlendim.
Anladığım kadarıyla, geliştirici lideriniz aslında sizi izlemek için orada "çünkü bir geliştiriciyi tamamen kendi başına bırakmak sorumsuz olurdu". Ama işinizi gerçekten nasıl yargılayacağına dair bir fikri yok.
Onunla onunla konuştun mu? Belki de bunu yapmaktan yoruldu.
Tavsiyeye ve yardıma ihtiyacınız varsa, bunun yerine projenizde bir takım arkadaşınızın sizinle birlikte çalışması daha iyi ve daha verimli bir çözüm olmaz mı?