Teknik açıdan yetkin bir kıdemli yazılım geliştirici, geliştirmeyi sürdürmek için neler yapabilir [kapalı]


15

Diyelim ki 10 yılı aşkın bir süredir program yapıyorsunuz. Birçok dil biliyorsunuz, çok azı çok ayrıntılı seviyede. Çözümler için mimarlık tasarladınız, üzerinde çalıştınız ve daha büyük projeler teslim ettiniz. Kalıplar, en iyi uygulamalar, etkili kodlama yönergeleri, birim testi, çoklu iş parçacığı vb.

Ve sonra yavaşça, okuduğunuz kitapların çoğunun 100 sayfa metin başına daha az ve daha az değerli bilgi verdiği hissini geliştirirsiniz. Böylece azalan getiri vermeye başlarlar. Hala öğreniyorsunuz, ancak artık sıçramalar ve sınırlarla gelişmiyorsunuz.

Öğrenme neden eskisinden daha az üretken hale geliyor?

O zamanlar, düşünme biçiminizi değiştirir, yeni şeyler öğretir ve daha sonra mevcut mesleğinizi geliştiren ya da yeni bir şey icat etmesine / yönetmesine / inşa etmesine izin veren ufuklarınızı genişletirdi. Neden artık böyle değil?


9
SSS başına, bir sonraki adımda ne yapmanız gerektiği (proje, kitap, teknoloji veya dil) hakkındaki sorular konu dışıdır. Bakış açınızı anlayabiliyorum, ancak yazılım geliştirme ile ilgili bilmeniz gereken her şeyi muhtemelen bilemezsiniz. Senin problemin sıkıldın, belki de entelektüel bir rutinin içine düştün. O rut çıkmak için ilham şey çok bağlıdır size ve muhtemelen başkası için tamamen farklı bir şey olurdu. Ama cevap: rahatlık alanınızdan çıkın . Gömülü sistemler, matematik, grafikler veya ilginizi çeken şeyler hakkında bilgi edinin.
Caleb

2
Bu soruyu OP'nin bundan sonra ne yapması gerektiği ile sınırlı görmüyorum. Daha ziyade profesyonellerin çalışmalarını ilerletmek için mevcut genel yaklaşımlarla ilgilidir. Belki daha iyi ifade edilebilir, ancak "ne gerektiği gibi okumaz ben yanımda yapmak".
Frank

3
Dürüst olmak gerekirse, bugünlerde hangi soruların konu dışı olmadığını bilmiyorum. Son zamanlarda burada ilginç tartışmalar bulmak zorlaşıyor. Tamam, w / e, sadece konuyu kilitle ...
Coder

2
Sorunun yeniden açılabilmesi için düzenlenebileceğine inanıyorum . Anlayabildiğim kadarıyla, sunulan sorun: "azalan getiriler ... örüntüler, en iyi uygulamalar, etkili kodlama yönergeleri, birim testi, çoklu iş parçacığı oluşturma ..." Programcılar için oldukça konudur
gnat

2
Bir başkasına öğretmeye çalıştığınızda bir konuyu daha iyi anlayacaksınız.
JeffO

Yanıtlar:


23

İlk olarak, sorunuzun formüle edilmesine rağmen, özellikle yeni şeyler hakkında okuduğunuzdan daha hızlı ortaya çıkan alanımızda değil, herhangi bir çalışmanın sonu yoktur. Bununla birlikte, geliştirmek istediğinizde, göz önünde bulundurduğum aşağıdaki kategoriler var. En fazla fayda / YG için, elbette en zayıf alanınızdan bir şey seçmelisiniz.

Temel Bilgi

Programlama dillerini bilmesine ve pratik deneyime sahip olmasına rağmen, kişi temel temel konuların eksik kaldığı (özellikle kendi kendine öğrenilen) alanlara sahiptir. Veri yapıları, algoritmalar, önbellek stratejileri, karma işlevleri, ...

Bunun programlama dillerinin temellerini de içerdiğini unutmayın - derleyicilerden, optimizasyon tekniklerinden ve tip sistemlerinden kategori teorisine, monadlara ve benzerlerine kadar her şey.

Eğer iyi eğitilmişseniz, birkaç yıldır üniversite düzeyinde bir dereceye kadar devam etmişseniz, bu kategoride zaten güçlü olmanız muhtemeldir (elbette bitmiş olmaktan çok, ancak sağlam bir temel). Aksi takdirde, repertuarınızda eksik olduğunu bile bilmediğiniz bir şey olup olmadığını öğrenmek için bu alanlarda birkaç kitap okumaya çalışın. Bu kategori, kendinizi fazla tahmin etmenin en kolay yoludur.

Paradigmatik Bilgi

Her şeyi bildiklerini düşünen, ancak ana akım paradigmalar dışında tamamen cahil olan programcılar ortaya çıktığında her zaman şaşkınım. Nesne yöneliminin bunun sonu olduğunu düşünüyorsanız, bu sizin gelişim kategorinizdir. Fonksiyonel programlamanın da var olduğunu ve hatta mantık programlamayı duymuş olabileceğini düşünüyorsanız, yine de iyi bir seçimdir. Orada daha fazla paradigma var ve bunları öğrenmenin, programlama dünyasının yeni bir görünümüne benzer bir şey vermenin derin bir etkisi var.

Unutmayın: Neyin bir paradigma olarak kabul edilip edilemeyeceği konusunda genellikle (doğası gereği felsefi) argümanlar vardır. Bunlar tarafından takip edilemez. Amacınız ufkunuzu genişletmek olmalı ve başkaları X'i kendi başına bir paradigma olarak görsün ya da görmesin, bu şeyleri öğrenmek anlamına gelmez.

Uzman Bilgi

Hepsinin en kolayı ve aynı zamanda en az kullanışlı olanı. Tabii ki, kendinizi tek bir teknolojiye adayabilir ve tüm giriş ve çıkışlarını tanıyabilirsiniz, ancak fiyatı ödemeye hazır olmalısınız. Teknolojiler yaşlanıyor ve bunu giderek artan bir hızla yapıyorlar, bu da buraya yatırılan sürenin birkaç yıl boyunca değersiz olacağını neredeyse garanti ediyor.

Ayrıca geri dönüşün azalması sorunu da burada parlıyor. Doğası gereği bir konuda uzman olmak, o dar konu üzerinde sayısız saat harcamanız gerektiği anlamına gelir ve bu nedenle tanım gereği yeni bir şey öğrenmek uzun zaman alacaktır ve bu yeni şey, küçük bir bulmaca parçası olacak kimsenin hiçbir şey hakkındaki görüşünü değiştirmeyecek.

Alan Bilgisi

Çünkü işinizin etki alanı ya da sadece kişisel ilginize dayanıyor, ancak bilgisayar bilimi ve belirli bir etki alanı konusunda uzman olmak çok değerli ve ödüllendirici. Burada bilgisayar grafikleri veya yapay zeka gibi CS'nin yan alanlarından bahsetmiyorum. Bunun yerine, bilgisayarların herkesin hayatını ele geçirdiğini ve diğer tüm alanların bilgisayarlara ve girebileceğiniz bir alana maruz kaldığını fark edin.

Bu açıkça "alanınızın dışında" kategorisine girer, ancak keskin bir matematiksel "dış" değil, bir uygulama alanıdır. Tıbbı düşünün: Seni doktor olmanızı tavsiye etmiyorum. Bununla birlikte, bilgisayar bilimi hakkındaki mevcut bilginizi bu alanın sorunlarına uygulamak için tıbbın temellerini öğrenmek gerçekten değerlidir. Bu, görselleştirme tekniklerinden robotik üzerine uzman sistemlere ve yalnızca muhasebe / yönetim için veri yönetimine kadar uzanmaktadır. Bunların hepsini daha önce yapmış olsanız da, bunu başka bir alanda yapmak tamamen yeni bir deneyim haline gelebilir.

Yine de, bunun yönünüzde diğer kategorilere göre çok daha radikal bir değişiklik olduğunu unutmayın. Günlük işlerinizde bu alanla herhangi bir temasınız olmayabilir, bu da çekilmeyi son derece zorlaştırır. Hatta işleri değiştirmek anlamına da gelebilir. Ayrıca, yeni alanınız hakkında bir tür sertifikaya ihtiyacınız olacak - sonuçta o alan için tam bir acemisiniz ve o nişte uzman olma yolculuğuna başlayan disiplinlerarası çalışmalardan mezunlara karşı rekabet etmelisiniz.

Tamamlayıcı Bilgi

Mike Brown'un eklediği gibi, mevcut işinize bir şekilde eşlik eden, ancak kesinlikle gerekli olmayan bir bilgi alanı da vardır. Proje yönetimi hakkında bilgi edinmek için proje yöneticisi olmanıza gerek yoktur, ancak her zamanki gibi ek bilgi, diğer tarafın nasıl kenetlendiğine dair daha geniş bir fikir verecektir. Hatta bunu yumuşak becerilere odaklanma noktasına kadar genelleştirebiliriz. Sanırım diğer insanlarla gerçek bir proje üzerinde çalışan herkes bunların değerini biliyor.


+1, özellikle "Alan Adı Bilgisi" için - bu en azından benim için işe yarayan bir şey.
Doc Brown

1
Söylediklerinize% 100 katılıyorum. Daha derin temel bilgi ile yakından ilgileniyorum. Derleyiciler üzerine bir kursa kaydolduğum etkiye göre. Dokunmadığınız şey, ek bilgi olarak sınıflandıracağım şey: grafik tasarım, proje yönetimi, vb.
Michael Brown

Paradigma için +1 - 10 yıldır OOP / prosedür yapıyordum (ve bundan yoruluyordum) ve sonra fonksiyonel programlamayı öğrenmeye başladım ve gözlerim yepyeni bir dünyaya açıldı.
paul

9

Yazılımın sürekli geliştiğini düşünüyorum ve bu nedenle sürekli iyileştirmeye önem verilmektedir. Nereden geldiğini anlıyorum, son zamanlarda biraz benzer hissettim ve şimdi SQL Server'da bir MCSM takip ediyorum.

Bir sonraki yeni dili veya çerçeveyi veya şu anda "sıcak" olanı öğrenin. Her yıl, kendi başına bir vızıltı kelimesi haline gelen ya da kritik bir kütleye ulaşan bir teknoloji, çerçeve ya da dil vardır. Son birkaç yıldır bunlardan birkaçını düşünebilirim: node.js, Ruby, jQuery. Bu, muhtemelen diğer platformlar için düşünme biçiminizi de etkileyecektir, örneğin, ROR'un Grails ile Java'ya ne yaptığını görün.

Her zaman iyileştirme için yer vardır. Bence her konuda uzman olmanız pek olası değil ve çok okuyorum ve her zaman öğreniyorum. Her 100 sayfa için daha az ve daha az öğrenme hakkında söylediklerinize katılıyorum, ancak bir konu uzmanı olduğunuzda bu beklenmelidir.

Yapabilecekleriniz açısından, bazı öneriler:

  1. Topluluk değişikliklerini ve insanların neler "içine" girdiğini takip edin. En azından yeni yığınları öğrenin, en azından uygun olan yerlerde tavsiye edebilmeniz için yeterli

  2. Bilgilerinizi başkalarına verebileceğiniz böyle bir Soru-Cevap sitelerine katılın. Diğer insanların katkılarını okumak için zaman ayırırsanız, muhtemelen bir şeyler öğreneceksiniz ve en azından diğer insanların sahip olduğu perspektifleri göreceksiniz.

  3. Çalışmanızla bir ilişkisi olan bir hobi seçin. Üzerinde çarpı işareti olan çok sayıda hobi var, AI, lego beyin fırtınası, RaspPi vb.

  4. Bilginizin genişliğini artırmaya çalışmanın yanı sıra, derinliği artırmaya bakın. Örneğin, EF'in kapak altında nasıl çalıştığını öğrenin, böylece sadece garip köşe vakalarını çerçeveyi kullanmak yerine teşhis edebilirsiniz.

  5. Sadece öğelerinizi bildiğinizi kanıtlamak için üst düzey sertifika alma

Şahsen, şu anda fikrimi neyin açtığını söyleyeceğim. Her Yazılım Mimarının Bilmesi Gereken 97 Şey okuyorum ve sadece kısmen de olsa düşünüyorum ama bir sürü adaçayı tavsiyesi atıldı. Kitap, sağladığım bağlantıdan çevrimiçi okumak için ücretsiz.

Nihayetinde aldığım hobi açısından, kendi arabamı tam olarak korumamı sağlayan araç teşhisine (bilgisayarla birlikte) girdim. Aslında ellerimle çalışmak için harcadığım zamandan gerçekten keyif alıyorum.


Komik, 97 şey için yazarlardan birini biliyorum;)
Michael Brown

Güzel bir kitap.
Sam

Rica ederim. Harika değil mi?
Sam

1

Belli bir noktadan sonra, belirli bir konu hakkında geçici olarak yeni bilgiler almakta rahat olduğunuz hakkında yeterince şey öğrendiniz. Birincil alanınız hakkında daha fazla şey öğrenemeyeceğinizi düşündüğünüzde, birincil bilginizi tamamlayan ek bilgi edinme zamanı gelmiştir.

Benim için UX ve grafik tasarıma daldım çünkü bir geliştirici olarak beni sadece kodda zarif yapılar değil, aynı zamanda son kullanıcı için zarif arayüzler sağlamak için daha iyi hale getireceğim.

Yaklaşabileceğiniz diğer konular arasında proje yönetimi, iş analizi, sistem yönetimi ve yazılım süreci iyileştirme yer almaktadır. Kendinizi belirli bir alanda çalışırken bulursanız, o alanda daha derinlere dalmanız mantıklı olabilir. Örneğin, son zamanlarda finansal hizmetler sektöründe yoğun olarak çalışıyorum. Coursera'da finansal modelleme ve benzeri konularla ilgili kurslara kaydoldum.

Öğrenilecek her zaman daha fazlası vardır, sadece kutunun dışında düşünmek gerekir.


0

Bu sorunun iki kısmı var: öğrenmek neden daha zor ve ne yapabilirsiniz?

İlk bölüm oldukça basittir - daha gelişmiş konular daha zordur. Nasıl programlanacağını öğrenmek zor olduğu gibi, programların nasıl iyi bir şekilde tasarlanacağını öğrenmek, hatta büyük uygulamaların nasıl tasarlanacağını öğrenmek daha zordur. Mesele şu ki, ileri konuların daha zor olması, aksi takdirde ilerlememeleri. Onları öğrenmek için daha fazla zaman harcamanız gerekecek; onlara hakim olmak için daha fazla zaman ayırın.

Ne yapabileceğinize gelince, kıdemli bir yazılım mühendisi olmanın teknik yönlerine odaklanmış görünüyorsunuz. Ekibinizin yazılım oluşturmasına yardımcı olmak için dilleri ve çerçeveleri öğrenmekten çok daha fazla şey yapabilirsiniz. Diğer geliştiricilere rehberlik etme, müzakere gereksinimleri, proje yönetimi, program tasarımı, iletişim kurma, ekip normlarının uygulanması gibi yumuşak beceriler ... Bir geliştirici ekibinin sadece sizin değil, yazılım geliştirmede etkili olması için gerekli olan tüm önemli şeyler .


-3

Lambda The Ultimate sitesine her gittiğimde , bilgisayar bilimleri alanında her şeyi bildiğimi sanmıyorum / düşünemiyorum.

LtU size öğrenilecek kalan paradigma ve teorik bilgi için iyi bir başlangıç ​​noktası verecektir.

"Ne kadar az bilirsen, ne kadar az bildiğini o kadar çok bilirsin."


1
bu, "Öğrenim neden eskisinden daha az üretken hale geliyor?" sorusunu nasıl yanıtladı?
gnat

Çünkü oraya gittiğimde öğrenmem gereken yeni şeylerin% 90'ı gibi makaleler var. Bu tam olarak OP'nin şikayet ettiği şeydir: Okuduğu satır sayısı ile öğrenilenlerin, durumunda çok düşük olan oranı. Bu siteyi de bilmiyor musunuz?
Stephane Rolland

@gnat, ve siz şu hatayı soruyorsunuz : "Teknik açıdan yetkin bir kıdemli yazılım geliştiricisi gelişmeye devam etmek için ne yapabilir?"
Stephane Rolland

başlıktan sonra sorunun içeriğini okudun mu?
gnat

@gnat Evet, elbette sorusunu okudum: OP sadece nedenini sorarsa, bu aslında bir açıklamadır : 10 yıl sonra sözde kıdemli bir yazılım mühendisi, artık bir çok şey bildiği için artık ufkunu değiştirmeyen kitapları okur. Evet bunu okudum. Gülümsedim. Kendimi tekrarlıyorum "Ne kadar çok bilirsen, ne kadar az bildiğini o kadar çok bilirsin."
Stephane Rolland
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.