Üst düzey yazılım geliştirmenin dinamik doğası ile nasıl başa çıkıyorsunuz? [kapalı]


25

Kendimi yüksek seviye bir yazılım geliştiricisi olarak görüyorum. Okumayı çok seviyorum ve kariyerim boyunca bana yardımcı oldu. Sanırım iyi yapıyorum.

Şu anda, yeni şeyler öğrenmek için çok zaman harcıyorum. Şu anda kod yazmaya gelince emmiyorum, ama bir aileye başlamak üzereyim ve düzenli olarak 14-15 yıllık deneyime sahip birçok yaşlıyı görüyorum - ki yeni şeyler öğrenmeyi kestikleri için - şimdi emiyorlar programlamada. Bir zamanlar rakamlara ilham veriyorlardı, ama artık değiller.

Temellerin hiçbir zaman değişmediğini iddia edebilirsiniz, ancak Delphi'yi 10 yıl boyunca kodladığınızda ve birdenbire herkes .NET çerçevesini kullanırken fark yaratıyor gibi görünüyor. Deneyimli bir geliştiricinin yeni bir çerçeve öğrenirken daha az zaman alacağı doğrudur, ancak yine de zaman ve çaba gerektirir.

Bir yazılım geliştirici, bir aile kurmak gibi sizi zorunlu olarak işten çıkaracak şeyler üzerinde yoğunlaşırken, işin taleplerini nasıl yönetiyor?


1
Ne, tekilliği yönetemeyeceğini mi düşünüyorsun? Herhangi bir iyi geliştirici yapabilir! - şaka, beni dinlemeyin ...
Klaim

Yanıtlar:


30

Söylediğiniz bir şey dikkat çekti: "Düzenli olarak 14-15 yıllık deneyime sahip birçok yaşlıyı görüyorum ... şimdi programlamayı emiyorlar". Bu, insanları deneyimle boyamak için kullandığınız oldukça geniş bir fırça darbesidir. Dikkate alınması gereken birkaç şeyi belirtmek isterim:

  • Daha genç / daha az deneyimli uygulayıcılar, yaşlılarının X ya da Y'yi yapmada başarısız olduklarına dikkat etmeyi sevdiklerini, bu deneyimlerin bunların kötü fikirler olduğunu göstermediğini göstermiştir. Yine de her yeni nesil uygulayıcı bu hataları tekrar etmek istiyor gibi görünüyor. Bu fenomen, sadece programlama değil, tüm meslekler için ortaktır.
  • Birkaç yıl çalışan tüm insanlar deneyimli, olgun veya iyi değil. Daha iyi olmak için çaba harcıyor. Gençken harcadığınız çok fazla çaba, daha sonra yararlanabileceğiniz iyi bir deneyim bütünü oluşturur.

Belki de bahsettiğiniz insanlar asla iyi değildi. Sadece düşünerek bakıyorlar, neden zor şeyler yapmakta ısrar ediyorsunuz?

Ancak, bir aileye başladığınızda yeni oyuncaklara ayak uydurmak için daha az zamanınız olduğu doğrudur. Aslında var az gençken çocuklarınızın senden daha yaşlandıkça zaman. Oyuncaklar seni daha iyi bir programcı yapmaz. Alet de yapmaz. Seni iyi yapan şey, problemleri çözme ve çalışan bir çözüm oluşturma yeteneğidir. Seni harika yapan, başkalarına iyi olmayı öğretme yeteneğidir. Tecrübe parlamaya başlar.


1
Olumsuz oyda daha fazla detaylandırmak ister misiniz? Söylediklerimi beğenmeyebilirsin, ama doğru.
Berin Loritsch

4
Sahip olduğu algısı , bilmecesinin büyük bir kısmı. Tek yaptığım doğrudan bu algıyla başa çıkmaktı. Kısacası, daha bir tecrübeli olmak için onun yeteneği benden daha aracı kovalayan ilgilenen kulüpler iyi geliştirici. Hatta harika olabilir . Tüm tecrübesi ona eski geliştiricilerin emdiğini söylerse bu olmayacak. Bu, istediği yere ulaşmak için çaba harcayan korkunç bir göstericidir.
Berin Loritsch

1
@Berin Loritsch: Bu adil bir nokta. Amacın iyiydi. // Amerika Birleşik Devletleri'nde, çok fazla insan, genelleme yapmak için başkalarını azarlamak için kendilerini geziyor. Cevabınız için istisnalar aldım çünkü bunu yapıyormuşsunuz gibi görünüyordu.
Jim G.

1
Umarım, zamanla öğreneceğiniz şey, yeni teknolojileri öğrenmeye ne zaman zaman harcayacağınız ve ne zaman görmezden geleceğinizdir. Alt satırda, o zaman değerli bir kaynaktır. SOAP / XML RPC ilk çıktığında, gerçekten ne olacağını söylemek için çok erken oldu. Şimdi kemerlerimizdeki birkaç yıl boyunca, bazı acı verici dersler aldık ve bu yaklaşımı REST tabanlı servislerle değiştirdik. Ayrıca, biz yaşlı çocuklar, öğrenmeye zaman ayırmaya değer olanı bulmak için sınırsız enerjili gençlere ihtiyacımız var. Tetiği çekmemiz biraz daha yavaş olabilir, ancak hız kazanmamız uzun sürmüyor.
Berin Loritsch

2
@Berin Loritsch: Belki şimdi anlıyorum. Aslında, problem çözme söz konusu olduğunda sadece sallanan bazı yaşlılar (şimdiki patronum da dahil) gördüm. Bu çerçeveyi kullanarak kolayca X yapabileceğinizi söylediğimde sevinçten atlamıyor, ancak gerçekten yararlı olduğunu görünce kullanmaktan korkmuyor. Belki de iyi olmayan diğer yaşlılar iyi değillerdir, çünkü hiç olmadılar. Yeni teknolojiler yüzünden iletişimsiz oldukları için değil. Şimdi çok daha iyi hissediyorum. (Umarım yazdıklarım anlamlıdır)
Hemant

20

Geleceği tahmin etmek zor. Ancak bir şey, kesinlikle teknolojiden bağımsız olarak en değerli olanıdır.

Bir geliştiricinin sorunları çözme yeteneğidir .

Bir geliştirici kalitesinin çoğu teknolojiden bağımsızdır. Örneğin, analitik yetenek bildiğim en önemli niteliktir. Matematik öğrenme gibi. Bu sadece zamansız.


1
Kullanılabilir araçlar / beceriler zaman Evet, üstelik yeteneği / dürüstlük bilmek değil problem çözme. Böylece gidip yeni şeyler öğrenirsiniz ve sonra "sorunu çözme yeteneğine" geri dönersiniz.
Peter Rowell

1
eh ... Bu biraz belirsiz ve tbh, biraz kopukluk. Eğer bir dev hala vb6'da "problem çözmekten" hala mutluysa ... aslında kodlarıyla çalışmak istemiyorum. Güncel kalmak, geleceği tahmin etmek değildir, zaman / iş gerektirir ve bir aileniz olduğunda bunun için daha az fırsat vardır.
Steven Evers

5

Olumlu ya da somut bir düşüncem olmasını isterdim - ama bir programcının nasıl güncel kaldığını ve iş / aileyi nasıl dengeleyeceğini programlayıcıdan programlayıcıya nasıl değiştirdiğini düşünüyorum.

Rastgele düşünceler:

  • Her yazılım projesi veya şirketi mutlak en son teknolojiye ihtiyaç duymaz - yazılımda bile. Değişim kanama kenarında en çarpıcıdır - kanama kenarının biraz gerisinde çalışan şirketler genellikle büyüme ve değişim için bol miktarda fırsatlara sahiptir, ancak derhal sürekli değişim için yaygın acil talep değil.
  • Bir programcı ne kadar deneyimli olursa, en son / en iyi kelimelerin yerine deneyimlerinden daha fazla yararlanabilmelidir. Sektördeki 20+ yıldan beri en çok hayran olduğum insanları, en son C # olayının 80'lerin sonlarında C ile yaşadıkları problemin mükemmel cevabı olduğuna dair tonlarca metafor olduğunu fark ettim. daha az araştırma ile masaya daha fazla anlayış getirmek.
  • Programcıları ekipte her değerlendirmek zorunda kaldım, işleri halletme ve başkalarıyla iyi oynama becerisi, programcının işe geldiği teknolojilerin kapsamına girdi. Her ne kadar sektör birçok rakip, yeni dil, API ve araç geliştirecek olsa da, projenin bir anda yalnızca rakip kullanması ihtimali yüksektir . Ancak işleri halletmek ve başkalarına da aynısını yapmalarına yardım etmek asla modası geçmez ve nasıl yapıldığının çok daha yavaş bir şekilde geliştiği - IM, sosyal medya, akıllı telefonlar ve dijital çağdaki her şeyin programlamanın bu yönünü değiştirmeyeceği değil de.

Kanama kenarının biraz gerisinde olan bir şirkette çalışmak 3-4 yıl demek ilginç olabilir. Başkalarının yaptığı hataları daha net görebiliyor, daha olgun araç ve uygulamalardan yararlanabiliyorsunuz.
Michael K,

Katılıyorum. Aslında kendimi biraz zorluyorum ve denemek zorunda kalmadan önce başkalarının kafalarını bir süre daha çarptığını bilmek hoşuma gidiyor. :)
bethlakshmi

5

Birincisi, Microsoft, bu yazılımı çalıştırmak için yazılım geliştirme araçları ve platformları satma işinde. Bu, ihtiyaç duyulup duyulmadıklarında değişiklik yapmalarını teşvik eder. Bu, tüm değişikliklerin işe yaramaz olduğunu söylemek değildir, sadece mesleğimizde çok daha istikrarlı olan birçok alan var. Tecrübe ile hangi grupların hemen atlamaya değer olduğunu ve hangisini olgunlaşmayı bekleyebileceğinizi daha iyi anlayabilirsiniz.

İkincisi, deneyim sadece zaman gerektirir. Şu anda kötü olan 15 yıllık deneyime sahip çoğu geliştirici, 15 yıl önce kötüydü. Beceriksizlikle yeterince açıklanabilecek olan şeyleri yaşamaya karıştırmayın.

Üçüncüsü, ihtiyaç duyulduğunda en son ve en iyisini kullanamayan bilgiyle modası geçmiş bilgileri karıştırmayın. Dışarıda ne olduğunu bilmek genellikle yeterlidir. Mesela, yakın zamana kadar web programlama bilgim 90'ların sonundaydı, ancak ağabeyim için bir web sitesi oluşturmak istediğimde, CSS, jQuery ve içerik yönetim sistemleri gibi "yeni moda" teknolojileri kontrol etmek için yeterince bilgim vardı ve oldukça iyiydi. Birkaç hafta içinde hıza kadar. Başka bir deyişle, son 10 yılda bir şeye ihtiyacınız olmadıysa, şu an hızınızı almak istediğiniz bir acil durumun olması muhtemel değildir.

Son olarak, ebeveyn olmak gerçekten de büyük bir zaman bağlılıktır, fakat birçok çocuksuz insandan daha az zamanın düşündüğü görülmektedir. Ebeveynler hala kitap okumayı, TV izlemeyi, oyun oynamayı, internette gezinmeyi ve hatta bazen ders almayı başarabiliyorlar. Shocker, biliyorum. Siz sadece bunu daha küçük bölümlerde yapın ve öncelikleri yapın. Tamamen pes ettiğim tek şey, tekrarları izlemektir.


3

Sizi temin ederim ki, on ila on beş yıldan sonra zayıf programlama becerileri sergileyen insanlar hiçbir zaman yazılım geliştirmeyi içselleştirmediler. Bir takım setine hakim olmak, yazılım geliştirme sanatında uzmanlaşmakla aynı şey değildir.

Otuz yılı aşkın bir süredir kod yazıyorum. Dış yükümlülükler ve / veya çıkarlar nedeniyle kariyerimi otopilot'a dahil etmek zorunda kaldığım birkaç dönemden geçtim. Bir yaş olarak yapmayı öğrenmek zorunda olan şey, bir teknoloji vagonu üzerine erken atlamaktan kaçınmaktır. Çoğu teknoloji, yutturmaca kadar yaşayamıyor. İş dışında yükümlülükleri olan yaşlı bir uygulayıcı olarak, birinin zamanının cimri olması gerekir. Deneyimli bir uygulayıcı yeni bir teknolojinin olgunlaşması için birkaç yıl bekleyebilir, çünkü yazılım geliştirme sanatında ustalaşmıştır.


Yani olgunlaştıklarında yeni teknolojilerle güncel kalmakta zorlanmıyorsunuz?
Hemant

1
Bu endüstri döngüseldir. Yeni teknolojilerin çoğu yeniden paketlenmiş eski fikirlerden biraz daha fazlasıdır. Eğer birinin temelleri güçlü ise, uyması gereken bir sorun olmaz. Unutmayın, bir yazılım mühendisi olarak nezih bir yaşam kazanmak için teknolojinin en ileri noktasında olmak zorunda değildir.
bit twiddler

2

Yılların tecrübesiyle:

  • Diller değişti (genellikle nispeten yavaş).
  • Pratik olarak çözülebilen sorunların yelpazesi büyüdü (biraz daha hızlı);
  • Çözeltilerin büyüklüğü ve karmaşıklığı arttı (nispeten hızlı);
  • Olan bir şey olmuştur flavor of the day(bazen iyi, genellikle kötü).

Desenler üzerine bir tartışmada belirtildiği gibi, dörtlü çete desenleri icat etmedi. Halen uygulanmakta olan çözümler için terminoloji ve şablonlar buldular.

Diğer birçok alanın aksine, hala yaygın olmayan pratik bir çok şey var. Bir çok ileri teknoloji ürün gelip gittiğini gördüm. Bunların birçoğu zaten pratikte teknikleri yeniden şekillendirdi ve bunlar genellikle bir dereceye kadar başarılı oldu. Diğerleri az ya da çok uzaklaştı ve çoğu yeni yaklaştı. (Son zamanlarda 5. nesil bir dil gören oldu mu?)

Gördüğüm en etkili programcılar, kanıtlanmış bileşenleri seçerek bir çözüm olarak birleştirebiliyorlar. Bu nadiren, genellikle proje riskini artıracak herhangi bir son teknoloji içerir. Daha önce yapılmış olan bir işi geliştirme yeteneği, mümkün olanın kapsamını arttırmamızı sağlar.

Programlama dilleri nispeten az aileye düşme eğilimindedir. Bir ailedeki bir dile aşinalık, benzer dillerle çalışmayı kolaylaştırır. Dilde mevcut olan kütüphaneleri anlamak ve bunlardan yararlanmak, verimliliği ve güvenilirliği büyük ölçüde artırabilir. Genel olarak, uygun kütüphaneleri olmayan yeni bir dilin üzerinde uygun kütüphaneleri olan daha eski bir dili seçerdim.

Yeni teknolojileri uygularken Because We Cansendromu önlemek için önemlidir . Yeni bir teknoloji eklemek, yılın tadı olduğundan, çözdüğünden daha fazla soruna neden olma eğilimindedir. Teknolojinin ne zaman gerçek bir sorunu çözeceğini ve ne zaman karmaşıklık katacağını bilmek yararlı bir beceridir.

Gerçekten iyi bir programcı yeni sorunları çözecek ve geri kalanı için mevcut çözümleri kullanacaktır. Çok az sayıda şirketin kanama teknolojisine, hepsinin de katı çözümlere ihtiyacı var.

Genelde ustura bıçağından aşağıya kaydım pişman olurum. Kanıtlanmış bir teknolojiyi kullanarak hiç pişman olmadığımı hatırlamıyorum. Bununla birlikte, var olan bir şeyi newyeniden paketlemek olarak tanımlanan şeylerin çoğu . Genellikle, bu yeniden paketleme, işlerin uygun şekilde anlaşılmasını ve uygulanmasını kolaylaştırır.


2

Kimse her şeye ayak uyduramaz. Muhtemelen Microsoft tekliflerine ayak uydurmakla meşguldün. Ruby'ye RAILS ve Python ve NoSQL veritabanları ve Hadoop ve mobil uygulama oluşturma ve CSS ve HTML5 ve jQuery ve ExtJS ve ... hakkında baktınız mı?

Bir süredir yazılımdayım. Devasa paralel veritabanlarının yeni fikirleri gibi gerçekten yeni teknolojilerle yetişmeye çalışıyorum ve çirkinleri (örneğin MFC, WinForms, SOAP, XML, EJB'ler) ve önemsiz şeyleri görmezden geliyorum. Çoğunlukla biz sadece yeniden paketlenmiş ve nihayet kabul edilen eski fikirleri görüyoruz. İşlevsel programlama? 1977'de INTERLISP kullanıyordum. Cep telefonu uygulamaları? En az 30 yıldır yaptığımız aynı olaya dayalı kullanıcı arayüzü ve 2D grafikler. Elbette, küçük bir dokunmatik ekran için kullanışlı bir uygulama tasarlamanın bir sanatı var, ancak programlama hiç de yeni değil.


1

@Amir ile yeteneğinizin dilbilgisi alanınızı değil problem çözme konusunda hemfikirsiniz, ancak endişenizi takdir ediyorum:

Size mevcut dil bilgisini seçme özgürlüğüne sahipseniz, ilk baskıya mümkün olan en yakın olanı seçin (örn. C ++ tipinde bir dil bilgisi), böylece işiniz yeni bir alana girdiğinde öğrenme eğrisi daha az olur - çünkü üstünüzdeki soyutlamalar. Şu anda sadece yüksek seviyeli dillere yatırım yapıyorsanız, bir soyutlamayı aşağı çekmek çok daha zordur (yalnızca algılasanız bile).

Eğer bu beslemeyi almadıysanız, işyerindeki 8 saatinizi tam anlamıyla kullanın. Tutkunuz yüksekse "sıkışıp kalmazsınız" ve çözmeniz gereken ilginç problemleri her zaman doğal olarak daha fazlasını öğrenmenize yol açar. .


1

İşinize ve istediğiniz işlere bağlı olacaktır. Geliştiricilerin hala eski teknolojileri kullandığı yerler var. Hala devam etmek için bir sürü COBOL (Bir şeyler değiştiğinden eminim.).

Anlattığınız gibi önemli bir anahtar yapan bir şirkette çalışmak bazı insanları işten çıkarabilir. Bazen şirket, kendi zamanınıza göre öğrenmenizi gerektiren eğitim almak için yatırım yapar.

Bir aileye sahip olmak iş tercihlerinizi sınırlayabilir. Seni daha az mobil yapabilir. Maaşınızın yarısına büyük bir maaş günü ümidiyle işe başlayabilir misiniz - belki çocuklar ve ipoteklerle değil.

Yeni olanlar her zaman daha iyi değildir ve birçoğu kalıcı değildir.


1

Tıp alanında değilim, peki ya geliştirici ile doktor arasındaki analoji? Her iki alan da son 20 yılda muazzam değişiklikler gördü ve değişimin hızı her zamankinden daha hızlı. Tüm doktorlar yetişiyor mu? Hayır. Tüm geliştiriciler devam ediyor mu? Hayır. 14-15 yıllık deneyime sahip geliştiriciler veya doktorlar hakkında genelleme yapabilir misiniz? Daha fazla deneyim, benzer sorunlara daha iyi cevaplar vereceğiniz anlamına gelir. Tecrübe ilgi çeker mi? Uzun vadede değil.

Yüzmeye devam etmesi veya ölmesi gereken bir köpekbalığı gibi düşünün. Öğrenmeye veya ölmeye devam edin (veya geliştirme kariyerinin en fazla 10-15 yılda doruğa ulaştığı yönetime geçin).


Yaşadığınız durumdan emin değilim, ancak Avustralya'da tıp uzmanlarının kayıtlarına devam etmeleri için devam eden eğitim ve muayeneye katılma zorunluluğu vardır (ve böylece tıp uygulama yeteneğini).
Sedat Alien

0

Aklımın arkasında da aynı endişelerim var, ancak bu konudaki son düşüncem, adapte olma ve sadece adapte olma yeteneğinizi tahmin etmeye çalışmaktan vazgeçmektir. Bunu devam edebileceğimi farz edersem, genelde yaparım. Modası geçmiş olmaktan endişe ediyorsam, bu kendimi tatmin eden bir kehanet yapabilir.

Dediğin gibi, parmaklarının ucunda kal. Ve yetişemiyorsanız, fazla terlemeyin. Teknolojinin tam bir çember etrafında dönmenin eğlenceli bir yolu var ve kendinizi ana akımda mükemmel bir performansla geri döndürebilirsiniz.

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.