paint-brush
En İyi Geliştiricileri Kalabalıktan Ayıran Nedir: 10 Kritik Özellikile@zawistowski
12,049 okumalar
12,049 okumalar

En İyi Geliştiricileri Kalabalıktan Ayıran Nedir: 10 Kritik Özellik

ile Wojciech Zawistowski10m2023/05/01
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Teknolojimizi ve sosyal becerilerimizi geliştirmek için çok çalışıyoruz. Ancak karakter özelliklerimizi, kim olduğumuzun değişmez bir parçasını, olduğu gibi kabul ederiz. Bu düşünce şekli zararlıdır. Başarılı bir yazılım geliştirme kariyeri için özellikleriniz becerilerinizden çok daha önemlidir. Ve onlar sizin kontrolünüz altındadır. Gerçek kıdemli geliştiriciler bunu kabul eder ve özelliklerini kasıtlı olarak geliştirirler. Bu onları kalabalığın arasından öne çıkaran ve kariyerlerini hızlandıran süper güçtür.
featured image - En İyi Geliştiricileri Kalabalıktan Ayıran Nedir: 10 Kritik Özellik
Wojciech Zawistowski HackerNoon profile picture
  • Teknolojimizi ve sosyal becerilerimizi geliştirmek için çok çalışıyoruz. Ancak karakter özelliklerimiz, zihniyetimiz, bunları olduğu gibi kabul ediyoruz. Kim olduğumuzun doğuştan gelen, sabit bir parçası. Ve böylece otomatik pilotta çalışmasına izin verdik.


  • Bu düşünce tarzı zararlıdır. Başarılı bir yazılım geliştirme kariyeri için zihniyetiniz yalnızca kritik öneme sahip değildir (belki becerilerinizden bile daha fazlasıdır), aynı zamanda kontrolünüz altındadır.


  • Gerçek kıdemli geliştiriciler, karakter özelliklerinin şekillendirilebilir olduğunu, zihniyetlerinin farkında olduklarını ve kasıtlı olarak bunun üzerinde çalıştıklarını kabul eder. Bu onları kalabalığın arasından öne çıkaran ve kariyerlerini hızlandıran süper güçtür.


  • Bu yazıda başarılı bir geliştiricinin en kritik 10 özelliğini, bunların neden önemli olduğunu tartışacağım ve bunları nasıl şekillendirebileceğinize dair birkaç ipucu paylaşacağım.

Bir Yazılım Geliştiricisi Olarak Başarılı Olmak İçin İhtiyacınız Olan 3 Şey

Profesyonel yazılım geliştirme, başarılı olmak için çeşitli yetenekler gerektiren karmaşık bir disiplindir. Bunları üç ana kategoriye ayırabiliriz:

Teknik beceriler

Bu en belirgin gruptur. Başarılı bir geliştirici olmak için programlama dilleri ve çerçeveleri, temiz kod ilkeleri, mimari, test etme, hata ayıklama vb. konularda iyi olmanız gerekir. Ayrıca araçlarınız konusunda da becerikli olmanız gerekir: sürüm kontrolü, komut satırı ve IDE.


Ancak teknik beceriler tek başına sizi profesyonel, takıma dayalı bir kurulumda ileriye götürmez. Bu yüzden yumuşak becerilere de ihtiyacınız var.

Hassas Yetenek

Büyük, ticari projeler üzerinde çalışabilmek için sağlam bir dizi sosyal beceriye ihtiyacınız vardır: ekip çalışması, iletişim, proje yönetimi ve planlama, uzaktan çalışma, kendi kendini organize etme, öğrenme, kişisel üretkenlik ve benzeri.


Birçoğumuz bu becerileri teknik olanlardan daha az eğlenceli buluyoruz ve bu nedenle onları sıklıkla ihmal ediyoruz; böylece sağlam, profesyonel geliştiricileri zaten kalabalıktan ayırabiliyorlar. Ama en azından onları kabul ediyoruz.


Bununla birlikte, aynı derecede önemli olan ancak neredeyse tüm geliştiricilerin, hatta diğer açılardan iyi olanların bile radarına girmeyen üçüncü bir kategori daha var.

Zihniyet

Zihniyet sosyal becerilere biraz benzer, ancak içerdiği "beceriler" daha temel, temel özelliklerdir: merak, sabır, empati, cesaret, uyum yeteneği vb.


Bir düzeyde, bu özelliklerin başarılı bir yazılım geliştirme kariyeri için önemli olduğunu biliyoruz. Ancak bunlar kişiliğimizin doğuştan gelen, sabit bir parçası gibi göründüklerinden, onları proje yönetimini veya kişisel üretkenlik tekniklerini öğrendiğimiz gibi kasıtlı olarak öğrenmeye çalışmayız.


Bu, beceri setimizin çok büyük ve önemli bir kısmını görmemizi engeller ve ilerlememize ciddi şekilde zarar verebilir.


[Profesyonel bir geliştirici olarak kariyerinizi ilerletmeye ilişkin daha kapsamlı bir bakış açısı için GitHub'daki "GERÇEK Kıdemli Geliştirici Olmaya İlişkin Kesin Kılavuz"a göz atın.]

Zihniyetinize Karşı Kör Olmak Neden Kariyerinizi Tehlikeye Atabilir?

Yazılım geliştirme karmaşık, bazen sinir bozucu ve inanılmaz derecede hızlı ilerleyen bir alandır. Bir geliştirici olarak öğrenmek, büyümek ve güncel kalmak (ve bu süreçte tükenmemek), karakter özelliklerinin belirli bir karışımını gerektirir.


Aynı zamanda %100 bir takım oyunudur. Yalnız kurt bilgisayar korsanlarının, teknik açıdan ne kadar iyi olursa olsun, profesyonel yazılım geliştirmede yeri yoktur. Ve bir takımda iyi işleyebilmek, görünüşte zıt olan başka bir dizi özellik gerektirir.


Zihniyet, becerilerden farklı bir şeydir. Çevik gelişim ilkelerini anlamak, uyarlanabilir ve sık değişime açık olmakla aynı şey değildir.


Hata ayıklama tekniklerini bilmek, tükenmeden veya cesaretiniz kırılmadan sorunu birkaç saat boyunca takip etmekten gerçekten keyif alacak merak ve ısrara sahip olmakla aynı şey değildir.


Ancak bu özellikler kişiliğimize sabit ve doğuştan gelmiş gibi görünse de, beceri olarak aynı derecede öğrenilebilirler.


Bir programcı için hangi özelliklerin kritik olduğunu anlamadan ve bunları zaman içinde kasıtlı olarak geliştirmeden, asla tam potansiyelinize ulaşamazsınız. Gerçek kıdemli geliştiriciler bunu biliyor, kendi zihniyetlerinin farkındalar ve sürekli olarak onu geliştirmek için çalışıyorlar.


Bu, en iyi geliştiricileri kalabalıktan ayıran, farklılaştırıcı, süper güçtür.


Tamam ama hangi özellikler en önemli? Ayrıntılara biraz daha derinlemesine dalalım.

Gerçek Bir Kıdemli Geliştiricinin 10 Özelliği

1. Merak

Yazılım geliştirmenin ne olduğunu bir cümleyle özetlemem gerekse, öğrenmeyle ilgili olduğunu söylerdim. Sürekli gelişen teknolojiler ve yazılım geliştirme süreçleri konusunda güncel kalmanız gerekiyor.


Karmaşık iş alanlarının (kariyeriniz boyunca birkaç tane) derin ayrıntılarını öğrenmeniz gerekir. Gereksinimleri analiz etmek ve açıklamak öğrenmektir. Araştırma öğrenmektir.


Performans optimizasyonu ve hata ayıklama (başka bir deyişle kodun iç işleyişine derinlemesine bakmak) aynı zamanda bir tür öğrenmedir.


Yazılım geliştirme aynı zamanda insanlarla (ve insanlar için ) çalışmakla da ilgilidir.


Farklı uzmanlıklardan ve geçmişlerden (bugünlerde, uzak çağda, büyük olasılıkla birden fazla ülke ve kültürden) gelen çok çeşitli insanlardan oluşan işlevler arası ekipler üzerinde çalışacaksınız.


"İş"i anlamanız gerekecek. Kullanıcının sıkıntılı noktalarını ve sorunlarını anlamanız ve çözmeniz gerekecek.


Sağlıklı bir merak dozu olmadan, tüm bu şeylerde yalnızca daha az etkili olmakla kalmayacak, aynı zamanda oldukça çabuk tükeneceksiniz.

2. Problem Çözmeye Yakınlık

Yazılım geliştirme devasa bir bilmecedir; çözülmesi gereken sonsuz bir sorun akışı. Geliştirici olarak işe alınmanızın nedeni şirketinizin ve müşterilerinizin sorunlarını çözmektir.


Bunu yapmak için organizasyonel sorunları (ekip olarak nasıl hareket edeceğiniz, işinizi nasıl organize edeceğiniz, hangi süreçleri kullanacağınız) ve teknik sorunları (mantık, mimari, performans vb.) çözmeniz gerekir.


Bu problemler, belirli bir fonksiyonun veya birim testinin nasıl tasarlanacağı ve adlandırılacağı gibi atomik problemlere kadar uzanan daha küçük, iç içe geçmiş problemlerden oluşur.


Bu tür bulmacaları çözmekten hoşlanmıyorsanız, sorunları parçalama ve çözme konusunda yeteneğiniz yoksa, yazılım geliştirme kariyeriniz zorlu olacaktır.

3. Sabır

Gerçek bir kıdemli geliştirici olmak, yıllar süren bilinçli pratik yapmayı gerektirir. Ayrıca yol boyunca birçok aksilik yaşayacaksınız. Kariyerinizi geliştirmek ödüllendirici ama aynı zamanda yavaş ve bazen acı verici bir süreçtir.


Mükemmelliğe ulaşmak ve zirveye ulaşmak için yaşam boyu adanmışlığa hazır olmalısınız. Ve bu çok fazla sabır gerektirir.


Sabır aynı zamanda işimizle ilgili birçok şey için de kritik öneme sahiptir: teknik destekle ilgilenmek, teknoloji konusunda pek bilgili olmayan kullanıcılarla çalışmak ve organizasyonel bürokrasiyle baş etmek. Ayrıca, problem çözmede harika bir yardımcıdır.


Ve teknoloji gibi hızla gelişen, sürekli değişen bir sektörde sabır olmadan çalışmaya devam edemezsiniz.

4. Kum (Tam Doğru Miktarda)

Yazılım geliştirme çok fazla ısrar gerektirir. Böcekleri avlamak. Yeterince belgelenmemiş API'lerin ve kitaplıkların şifrelerinin çözülmesi. Eski kodu çözme. Performans darboğazlarını takip etmek. Hatta uzun süreler boyunca derin bir odaklanmayı sürdürmek bile.


Ne kadar kıdemli olursanız olun, mücadele edecek, başarısız olacak, sıkışıp kalacak ve çok fazla hayal kırıklığına uğrayacaksınız. Ve içinden geçip yanmamak için çok fazla kuma ihtiyacınız olacak.


Ancak aynı zamanda doğru miktarda kumun ne olduğunu da anlamalısınız. Saatlerce ve günlerce başınızı verimsiz bir şekilde duvara vurmak ile yoldaki en küçük tümsekte bile hemen yardım isteyerek ekibinizi sürekli rahatsız etmek arasındaki tatlı nokta nedir?

5. Duygusal Zeka

Yazılım geliştirme insanlar ve ekipler etrafında döner. Meslektaşlarınızla bireysel düzeyde çok yakın çalışacaksınız: programları eşleştirin, birlikte hata ayıklayın ve kodlarını gözden geçirin.


Ayrıca onlarla bir ekip kurulumunda çalışacaksınız: grup olarak beyin fırtınası yapacak, planlayacak ve kararlar alacaksınız. Ve bu işbirliği karmaşıktır: Çalışmalarınız örtüşecek veya çatışacak ve farklı fikirleriniz olacak.


Yol haritanızı yönetimle müzakere edeceksiniz. Son olarak, harika bir ürün oluşturmak için kendinizi kullanıcılarınızın yerine koymanız gerekir.


Üstelik tüm bu insanlar hem teknik hem de teknik olmayan farklı geçmişlerden geliyor. Tutkuludurlar. Güçlü görüşleri vardır. Bazen zor karakterlere sahip olabilirler.


Ve bir geliştirici olarak başarınız, onlarla ne kadar iyi ilişki kurabildiğinize bağlıdır. Yüksek duygusal zeka olmadan bu kesinlikle imkansızdır.

6. Egonuzu Kontrol Altında Tutma Yeteneği

Yazılım geliştirme (ve genel olarak bir ekipte çalışmak) bir dengeleme eylemidir. Bir yandan uzmanlığınız için işe alınıyorsunuz. Güçlü fikirlere sahip olmanız ve teknoloji konusunda daha az bilgili veya daha genç insanlara rehberlik etmeniz bekleniyor.


Öte yandan, bakış açınıza meydan okuyacak ve grup kararları almak zorunda kalacağınız, aynı derecede deneyimli ve inatçı takım arkadaşlarınızla çalışacaksınız.


Bu süreçte egonuz sıklıkla incinecektir. Onu kontrol altında tutabilmelisiniz, ancak geri çekilmeden ve bağlantıdan kopmadan.


Sabit fikirli olmalısın ama fanatik olmamalısın. Güçlü bir bakış açısına sahip olun ancak onu zayıf tutun; aksi yönde ikna olmaya açık olun. Fikrinizi savunmaya hazır olmalısınız ama aynı zamanda küçümseyici ve zeki bir pislik olmamak için ne zaman vazgeçmeniz gerektiğini de bilmelisiniz.


Ekibe, işletmeye ve müşterilere saygı duymanız gerekir. Aynı fikirde olmayın ama taahhütte bulunun. Ve yapıcı (ve hatta tamamen olumsuz) geri bildirimleri nezaketle kabul edin. Aksi halde bir takımda etkili bir şekilde çalışamazsınız.

7. Uyarlanabilirlik

Yazılım geliştirmede her şey çok hızlı ilerliyor. Teknolojiler sürekli değişiyor. Yeni metodolojiler popülerleşiyor. Şirketler dönüyor.


Kariyeriniz boyunca projeleri, ekipleri, şirketleri ve iş alanlarını da değiştireceksiniz. Tek bir proje bile sürekli bir inceleme ve uyarlama eylemidir (özellikle çevik yaklaşımlarda). Ekibiniz de sürekli olarak kendini yeniden organize edecektir.


Çoğu insanın değişime alerjisi vardır. Değişim zordur. Rahatsız edici. Stresli. Adapte olmak ve değişime açık olmak sizi anında farklı kılacaktır. Bu sadece kıdem merdiveninin en üstüne çıkmanızı sağlamakla kalmayacak, aynı zamanda orada uzun süre kalmanızı da sağlayacaktır.

8. Güvenilirlik

Bunu bıktıracak kadar tekrarlıyorum ama yazılım geliştirme bir takım oyunudur. Meslektaşlarınız, yöneticiniz ve şirketiniz; hepsi üzerinize düşeni yapacağınıza güveniyor.


Mikro yönetime gerek kalmadan işinizi halledeceğinize ve sözlerinizi yerine getireceğinize güvenemezlerse, teknoloji uzmanlığınız ne olursa olsun, hiç kimse sizi gerçek bir kıdemli geliştirici olarak görmeyecektir.


Bu asla hata yapamayacağınız anlamına gelmez. Başarısızlıklar olur. Ve en iyi şirketler bunları değerli öğrenme fırsatları olarak görüyor.


Ancak bunu mümkün kılmak için, düşen topu alabilmeniz, zarif bir şekilde toparlanabilmeniz ve başarısızlığınızdan ders alıp gelecekte bunu tekrarlamamanız konusunda size güvenilmesi gerekir.

9. Pragmatizm

Profesyonel yazılım geliştirme bir ödün verme sanatıdır. Geliştirme hızı ve kalite arasında sürekli taviz vermeniz gerekir. Yeni ve gelecek vaat eden ile kanıtlanmış ve istikrarlı olanı dengeleyin.


Eksik ve aşırı mühendislik arasında ince bir çizgide yürüyün.


Profesyonel yazılım geliştirmede başarılı olmak için çok pragmatik olmanız gerekir. Hiçbir şeyin siyah ve beyaz olmadığını, hiçbir prensibin veya kalıbın her durumda geçerli olmadığını anlamalısınız.


Farklı yaklaşımlar, teknolojiler ve çözümler arasında seçim yapmak için mükemmel bir sezgiye sahip olmalısınız; köşeleri kesme konusunda rahat hissedin ancak bunun ne kadar olduğu konusunda iyi bir fikre sahip olun.

10. Olumlu Görünüm

Bir programcı olarak hayatınız güneş ışığı ve gökkuşağından ibaret değil. Sinir bozucu müşterilerle tanışacaksınız. Sıkı teslim tarihleriyle karşı karşıya kalın. Projeniz iptal edilebilir. Ekibinizle veya yönetiminizle aynı fikirde olmayabilirsiniz ancak yine de taahhütte bulunmanız ve yürütmeniz gerekir.


Ayrıca çirkin kodlarla da çalışacaksınız. (Evet, Google gibi en iyi şirketlerde bile her kod tabanının iyi ve kötü yanları vardır.)


Yorulursunuz, sinirlenirsiniz, üzülürsünüz.


Olumsuzluğun sizi ele geçirmesine izin verirseniz, eleştirmeye ve şikayet etmeye başlarsanız, sadece kendinizin motivasyonunu düşürmekle kalmaz, aynı zamanda ekibinizin moralini de bozarsınız ki bu da kariyerinizi fazla ileri götürmez.


Olumluya karşı önyargılı olmanız gerekir. İyimser ve neşeli olun. Her zaman olumlu bir sonuç arayın. Takımını toparlayan, kötü ruh halini ortadan kaldıran ve morali düzelten kişi olun. Bu sadece fark edilmenizi ve terfi etmenizi sağlamaz, aynı zamanda kariyerinizi daha keyifli ve sürdürülebilir hale getirir.

Bonus: Zihniyetinizi Kasıtlı Olarak Nasıl Şekillendireceğinize İlişkin Birkaç İpucu

Tabii ki, hem yumuşak hem de teknik beceriler geliştirilebilir. İletişimin yanı sıra hata ayıklamada da daha iyi olabilirsiniz. Peki ya merak ya da olumlu bir bakış açısı gibi görünüşte doğuştan gelen özellikler? Kendinizi gerçekten daha iyimser veya meraklı olmak için eğitebilir misiniz?


Evet yapabilirsin! Bu, birçok kitaba değecek kadar geniş bir konudur (Carol S. Dweck'in "Zihniyet" kitabı harika bir başlangıç noktasıdır). Ancak hemen birkaç ipucunu paylaşayım:


  • Zihniyetinizin sabit olmadığını ve özelliklerinizin şekillendirilebilir olduğunu kabul edin.


  • Kişisel farkındalık oluşturun. Farklı durumlarda nasıl tepki verdiğinizi gözlemleyin. Sizi belirli bir şekilde neyin hissettirdiğini anlamaya çalışın (meraklı mı yoksa sıkılmış mı, olumlu mu yoksa huysuz mu, istekli mi yoksa savunmacı mı).


  • Davranışlarınızı bir veya iki günlük perspektiften geriye doğru inceleyin. Fikriniz gerçekten pragmatik miydi, yoksa egonuz mu konuşuyordu? Nasıl farklı davranabilirdin?


  • Önceden hazırlamak. Bir dahaki sefere benzer bir durumda nasıl davranacağınızı önceden planlayın ve zamanı geldiğinde size planınızı hatırlatacak doğru tetikleyiciyi belirleyin.


  • İstediğiniz özellikleri geliştirmenize ve güçlendirmenize olanak sağlayacak durumlara kendinizi maruz bırakın. Bu tür fırsatları aktif olarak arayın.


  • Bir süre tek bir özelliğe odaklanın. Bu özelliği kullanma fırsatlarını bulmanızı ve bu özelliğe ilişkin kişisel farkındalığınızı artırmanızı kolaylaştıracaktır.


  • Yeniden çerçevele. Kendinizle nasıl konuştuğunuz konusunda bilinçli ve kasıtlı olun. Fikir aptalca değil, şaşırtıcı. Bu titreme endişe değil, heyecan. Sorun sinir bozucu değil, ilginç.


  • Yardım isteyin. Meslektaşınızdan veya yöneticinizden geri bildirim istemekten veya hatta istenmeyen davranışınızı yakalayıp işaret edecek "sorumluluk ortağınız" olmaktan çekinmeyin.


Ayrıca bilişsel önyargılar ve alışkanlık oluşturma hakkında da biraz bilgi edinmenizi tavsiye ederim. Bu, çok geniş bir bilgi birikimine sahip, iyi gelişmiş bir disiplindir ve keşfetmesi oldukça eğlencelidir.

Sonuç olarak

Gerçek bir kıdemli geliştirici olmak istiyorsanız eksiksiz bir geliştirici olmanız gerekir. Teknoloji becerileri, sosyal beceriler ve karakter özelliklerinin doğru karışımına sahip olmalısınız ve bu üçlünün hiçbir bölümünü göz ardı edemezsiniz.


Karakter özellikleri işin en zor kısmıdır. Çoğu geliştirici bunları ihmal ediyor çünkü ya bunların farkında değiller, hangilerinin önemli olduğunu bilmiyorlar ya da bunların şekillendirilebilir olduğuna inanmıyorlar.


Ancak bu hatalı düşünce tarzının üstesinden gelebilirseniz, eğer zihniyetinizi değiştirebilirseniz, onu kariyerinizi yükseltecek ve gerçekten öne çıkmanızı sağlayacak bir süper güce dönüştürebilirsiniz.