Üretken Veri Zekası

Deneyimli Bir Geliştirici Olarak En İyi Uygulamalarınızı Güncelleme

Tarih:


İçerik

  1. Giriş
  2. Temel En İyi Uygulamalar
  3. Sektör Trendlerini İzleme
  4. En İyi Uygulamalar ve Kariyeriniz
  5. Sonuç

1. Giriş

Yazılım hızlı ilerleyen bir sektördür. Bazı becerilerin ömrü aslında zamanla azalıyor gibi görünüyor; dillerin ve çerçevelerin sınırlı bir ömrü vardır. Bu nedenle, geliştirilecek en önemli alışkanlıklardan biri, mevcut 'en iyi uygulamalar' anlayışını sürdürmektir. En iyi uygulamalar, bir yazılım geliştirme ekibinin daha yüksek kaliteli yazılımı daha verimli bir şekilde üretmesine yardımcı olabilecek teknikler, yardımcı teknolojiler, alışkanlıklar ve platformların kalıplarıdır.

En iyi uygulamalar, kodun üretildiği zaman ve ortama bağlı olarak değişir. Staj yaptığım ilk şirket, dev şirketler için faks yönlendirme yazılımı üretti. Dağıtım süreci, yeni bir sürümü aktarmak için bir sabit sürücüyle sahaya bir mühendis göndermeyi içerebilir. Şu anda çalıştığım şirket, belirli bir günde kaç kod değişikliği yapıldığına bağlı olarak AWS'de barındırılan sunucularda günde birkaç kez kurulum yapabilir. Bu, bazı ortamlarda neredeyse anlık hale gelmek için son 25 yılda 'yayınlanma zamanının' nasıl sıkıştırıldığının bir örneğidir. Bu nedenle, çok hızlı değişiklikleri yönetmeye yönelik en iyi uygulamaların da gelişmesi gerekiyordu.

En iyi uygulamaları kullanırken, kod desteği ve teknik borç hem bireysel programcılar hem de bir bütün olarak şirketler için daha az zahmetlidir. En iyi uygulamalarla oluşturulan kod, daha uzun bir ömre sahip olma eğilimindedir ve bakım maliyeti daha düşüktür. Ek olarak, bu kodun devralınmasının, kodun başlangıçta çözmek için tasarlanmadığı sorunlara uygulanabilir bir çözüm olma olasılığı daha yüksektir. Ve belki de bir organizasyon için en önemlisi, geliştirici devir / sorumluluk paylaşımı çok daha kolaydır. Bazı geliştiriciler iş güvenliği için kod yazarken, kendi eskimişliğiniz için kodlama yapmak itibarınız ve kod güvenilirliğiniz için daha iyidir.

Temel en iyi uygulamalar, iyi bir programcının itibarının temelidir. İlk ve en önemli en iyi uygulama aslında oldukça mantıksızdır: daha az kod yaz. Bu, ortamları ve ortamlar arasındaki etkileşimleri olabildiğince basit ve güvenilir hale getirerek güçlendirilir. Bunu yaparken temel güvenlik hatalarından kaçınmaya çalışın. O halde ünite testi alışkanlığı edinin, çünkü herkes uyumayı sever… ve eğer ünite testleri yazmazsanız, güvenilir bir şekilde uyuyamazsınız! Son olarak, eğer yapabiliyorsanız, entegre bir bina ve test ortamı kurun. Herhangi bir en iyi uygulama yaklaşımının temel bir parçası haline gelmiştir.

Yine de, tüm bu uygulamaların zamanla değişeceğini ve gelişeceğini unutmayın. Bu nedenle, endüstri trendlerinin farkında olmak ve eğrinin ötesinde kalmak, hangi alışkanlıkları ve araçları benimsemeniz / geliştirmeniz veya köreltirmeye izin vermeniz gerektiğini bilmek için temelde önemlidir.

Bu nedenle, deneyimli bir geliştirici olarak, mevcut en iyi uygulamalardan haberdar olmak ve 'havalı çocukların yaptıklarını' zaten bildiklerinizle birleştirmek temel bir beceridir. Bu bilgiler için kişisel birincil kaynaklarım iş ilanları, yığın taşma anketleri ve çeşitli forum panolarıdır. Ancak neler olduğunu bilmek ve uygulamak ayrı görevlerdir.

Genel olarak, öğrenme en iyi uygulamaları uygulamak, daha zahmetli bir iştir. bilme Onlar ne. Bir alışkanlığı yeniden öğrenmek (örneğin, yeterli yorum kullanmayı hatırlamak) veya şu anda rahat olan bir ortamı yeniden inşa etmek için harcanan zaman, genellikle ön planda tutmak için maliyetli veya sinir bozucu görünecektir. Ve ne yazık ki öyle. Ancak yeni en iyi uygulamaları uygulamayı öğrenmenin birçok yolu vardır ve kesinlikle yapmaya değer.

2. Temel En İyi Uygulamalar

Yapılacak en iyi şeydeki karmaşadan bağımsız olarak, bazı şeyler her zaman çoğu geliştiricinin üzerinde anlaşacağı temel en iyi uygulamalar olacaktır:

  • Daha az kod yazın
  • Ortamları olabildiğince basit hale getirin
  • Standart güvenlik sorunlarından kaçının
  • Temel birim testleri yazın

Bu dört uygulama, daha sürdürülebilir ve yeniden kullanılabilir koda sahip olmanın merkezinde yer alır.

Daha Az Kod Yaz

Kod tabanları şişkinlik eğilimindedir. Sorunlarla karşılaşıldığında, kod çalıştırma üzerinde minimum etki ile mümkün olduğunca çabuk çözülme eğilimindedirler. Paydaş sorunlarını ele alan kritik kod parçalarının küçük şubelerle çevrili olduğu yerlerde çalıştım. Bu, elbette, bir değiş tokuş.

Eski kod genellikle genişlemesini veya yeniden uygulanmasını sınırlayan yapısal sorunlara sahiptir, ancak aynı zamanda çok çeşitli son derece spesifik özellikler içerir. Bu nedenle, bir kod tabanı şişirildiğinde, müşteriyle yüz yüze veya mimariyle ilgili sorunlarda düzeltmelerle şişirilir. Bu nedenle, tüm kod tabanınızı çöpe atmak her zaman göründüğünden daha pahalıdır ve minimalist kodu / ortamları korumak için çok çalışmak istersiniz.

Bir geliştirici olarak en önemli en iyi uygulama, daha az, daha akıllıca bölümlere ayrılmış kod yazmaktır. Eskiden çocukken içimde delinirdi: Azalt, Yeniden Kullan, Geri Dönüştür. Yazdığınız kod miktarını azaltın, kendi kodunuzu ve diğer programcıları düzenli olarak yeniden kullanın ve mümkün olduğunda daha fazla sabit disk alanına geri dönüştürün.

Bunu yapmanıza yardımcı olmak için, arada bir başkalarının kodunu okuyun. Eleştirel okursanız, kodunuz gelişir ve içinde gördüğünüz sorunlardan bahsederseniz kodu da iyileşir. İle okumak niyet küçük değişiklikler yapmak (ve hatta onları yapmak) bunu çok daha anlamlı bir görev haline getirecek, bu yüzden bunu zamanın elverdiği ölçüde yapıyorum. Profesyonel bir ortamda planlanmamış temizlik yapıyorsanız, yamaları üretim koduna aktarmanın genellikle hoş karşılanmayacağını unutmayın. Resmi geliştiriciyle önceden ne yaptığınızı konuşmanızı öneririm.

'Tasarım Kalıplarını' öğrenmek, kodunuzu daha etkili bir şekilde düzenlemenize yardımcı olabilir veya olmayabilir, ancak akademisyenlerin ortak sorunlara yönelik çözümlerin nasıl organize edilmesi gerektiğini düşündüğünü öğrenmek, gelecekteki organizasyonunuz için size iskeletler vermenin iyi bir yoludur. Son olarak, kod yapısında, her zaman bahsetmem gerektiğini düşündüğüm bir şey şudur: bir şey düşünürseniz ve zekice olduğundan eminseniz, büyük olasılıkla yanılıyorsunuz.

"Erken optimizasyon, tüm kötülüklerin köküdür" - Donald knuth

Kendi sihirli güçlerine inanan bir geliştirici tarafından yazılmış bir kod tabanını sürdüren biri olarak, onu oldukça düzenli bir şekilde başarısızlığa uğrattıklarını kişisel olarak doğrulayabilirim. Temel olarak, çoğu kod derleyicilerin üzerine bir veya iki soyutlama katmanı yazılır.

Derleyici yazarları, kodun montaj düzeyinde optimizasyonlarına odaklanan performans ve mantık uzmanlarıdır. Profesyonel programcıların% 95'inden fazlasının kullandığı üst düzey dillerde, optimizasyon konusunda endişeleniyorsanız, (genellikle) bir hata yapıyorsunuz demektir. İyi temellerle programlamanın ötesine geçiyorsanız, isteyebileceğiniz şey daha uygun bir çevresel kurulumdur.

Ortamlar basit ve sağlam olmalıdır

Bir sistem ne kadar benzersiz ve karmaşık bileşenlere sahipse, tüm sistemi anlamak ve yeniden düzenlemek o kadar zor olur. Bu nedenle, modern en iyi uygulamalar, bir sistemdeki benzersiz kodu gevşek bir şekilde bağlanmış parçalara odaklama eğilimindedir ve bu gevşek bağlı parçaların çalışması mümkün olduğu kadar kolaydır. Bu üç ortamı ele alalım, örneğin:

stack-Compar.png

Solda standart bir LAMP yığını var. On yıl boyunca, tam yığın web geliştirme için birincil programlama yığınları Linux ➡ Apache ➡ MySQL ➡ PHP idi. Bu yığın, kullanıcıya statik bir HTML sayfası gösteren bir sunucu tarafı web uygulaması oluşturmak için ihtiyacınız olan her şeyi içerir ve bugün hala bu yığınla veri sağlayan insanlar vardır.

Ortadaki yazılım yığını daha modern bir yaklaşımdır. O kadar modern ki bir ORM'den kaçınır ve geliştiricilerin ham MongoDB / SQL sorguları yazmasını sağlar. Bu karar, ORM'lerin içerdiği bazı özellikler pahasına, geliştirme hızını artırmak için alındı. Bu yazılım yığınının ön ucu, esasen kullanılabilir kod oluşturmak için npm kullanan kendi başına bütün bir derleme geliştirme ortamı olan React'i içerir. Bu, (karşılaştırmalı olarak) eski okul ortamının Javascript / Silverlight'ın ayrı sayfalara dahil edilmesiyle çelişir.

Sağdaki yazılım yığını, diğer ikisinden daha fazla bölümlere ayrılmıştır. Django'nun Rest Framework'ü muhtemelen bir Angular istemcisiyle etkileşim kurmak için kullanılır. MVC tasarım deseni. Django'nun içinde yerleşik bir ORM vardır ve bu ORM, kullandığınız veritabanıyla birlikte MongoDB ile konuşabilir. Bu örnekte, Ngnix bazı açılardan Apache'den biraz daha hafif olduğu için seçilmiştir. Ve bu örnek, önceki daha 'modern' örnekte olduğu gibi, bulut barındırmayı kullanıyor çünkü siz kullanana kadar donanım arızalarınızı bir başkasının yönetmesi daha ucuzdur. ton (muhtemelen kelimenin tam anlamıyla) donanım.

Genel olarak, bu ortamlar karmaşıklıklarını izole parçalara ayırma eğilimindedir. Hiçbir geliştirici veya teknisyen her şeyi bilemez. Sonuç, zamanla, yazılması en karmaşık kodun genellikle soyutlanmış olmasıdır. En iyi örnekler, dünya çapında uzmanların şirket içi geliştiriciler yerine yazıp sürdürdüğü, yaygın olarak kullanılan çevresel bileşenlerdir: web sunucuları, ağlar, NOC'ler ve veritabanı motorları. Bu nedenle, standart bir geliştirici olarak 'bilme ihtiyacınız' nadiren bir B-Ağacında milyonlarca veri noktasını depolamayı, bir veritabanının yarış koşullarına sahip olmasını nasıl önleyeceğinizi veya bir web sunucusunun% 99.9999 çalışma süresi penceresi sırasında bellek sızıntılarını önlemeyi içerir.

Çoğu modern ortam, veritabanı geliştirmenin bir kariyer seçeneği olarak değeri azalttığı noktaya kadar ORM'ler içerir. 1000+ satır kod içeren saklı prosedürler yazdıktan sonra, birisinin bana "SQL harika, ancak onunla pek bir şey yapamazsınız" demesini istemek bir keresinde cesaret kırıcıydı. Ancak bunun bir nedeni var: en iyi uygulama olarak kod, veritabanınızda saklanmamalıdır. Entity Framework, Django'nun modelleri ve Hibernate (kullanmadığım) gibi modern ORM'ler veritabanını koddan soyutlar. Bununla birlikte, performans için veri yapısını ayarlayabilen bir Veritabanı Yöneticisine sahip olmak ile programcıların özgürce oluşturabilmeleri arasında kesinlikle bir denge vardır.

Ancak çoğunlukla ORM'ler iki sistem arasındaki iletişimi de soyutlar: kod ve veri. İletişim standartları genellikle çok karmaşıktır. Sonuç? Soyutlanma eğilimindedirler. Bir eğitim kampında Python öğretirken öğrencilerimden biri Twitter API'sini derinlemesine kullanmak istedi. Twitter'ın API'si geniş ve tam özellikliydi. Bununla birlikte, bazı belirli özellikler yalnızca OAuth 1 yerine OAuth 2 kullandıysanız kullanılabilirdi.

OAuth 2'nin bazı basit, güvenilir adımlara sahip olduğu yerlerde OAuth 1'in ... bizans olduğu ortaya çıktı. Bu, daha basit OAuth 2 standardının ve anlaşmayı yönetmek için tasarlanmış çeşitli kitaplıkların geliştirilmesine neden oldu. Genel olarak, iletişim yöntemlerinizi olabildiğince basit ve verilerinizi temiz tutmaya çalışmak çok mantıklıdır. Bu nedenle, TCP / IP iletişimi genellikle kütüphaneler ve JSON ile geçirilen veriler ile yapılır. Web siteleri REST kullanır. Bölümlere ayırma ve güvenilir, düşük zamanlı yatırım arayüzleri normdur ve olmalıdır.

Ve bu düşük zamanlı yatırım iletişiminin çalışmasını sağlamak için sürekli olarak testler gerekir. İlk başta test yazmak eğlenceli değil. Ne yapmak istediğinizi biliyorsunuz ve kullanım durumlarınızı biliyorsunuz, öyleyse neden testler yazasınız? Çünkü ikinci kez düşünmenizi gerektirir ve sizi genel olarak daha iyi bir yöne gönderecektir.

Sürekli Entegrasyon mümkün olana kadar birim testleri temel bir en iyi uygulama değildi, ancak artık onlarla çalışmak çok önemli. Uçtan uca testlerin kurulması daha zordur, ancak şu anda temel bir en iyi uygulamadır. Bunun nedeni, geliştirme hızlandıkça geliştiricilerin daha fazla sistemden sorumlu hale gelmesidir.

Sistem bozulursa, düzeltmek için harcadığınız zaman, yeni bir şey inşa etmek için kullanabileceğiniz zamandır. Bu nedenle uzun vadede, her türlü otomatik testin önden yüklenmesi, site bakımı için harcadığınız toplam zamanı azaltmanıza olanak tanır. Ve dahası, daha iyi uyumanızı sağlar (bir para transfer günlüğü aramak için sabah 3: 00'te uyanana kadar uykunun ne kadar eğlenceli olabileceğini anlamazsınız). Test çok önemli olduğu için birçok ekip, temel taşı testleri yazmak olan Test Driven Development'ı kullanır. önce probleminizi çözen tek bir 'kod' satırı yazarsınız.

Son olarak, ortamınızı basit ve sağlam hale getirmek için dokümantasyonu tavsiye ederim. Kendi kendini belgeleyen kod diye bir şey yoktur. Basit, açıklayıcı değişken adlarını seçmek uzun bir yol kat eder, ancak bir sınıfın veya işlevin üstüne küçük bir açıklama bloğu koymak sizi öldürmez. Söz veriyorum. Bunun yerine, gece yarısı günlüklerde para transferi bulmanıza yardımcı olabilir.

Basit Güvenlik Sorunlarından Kaçının

Dijital güvenlik hakkında kimse bir şey bilmiyor. Beş dolara bahse girerim, şu anda seçtiğiniz arama motoruna 'veri ihlali' koyabilir ve bir tane bulabilirsiniz. Bunun nedeni kısmen dünyanın büyük olması ve güvenliğin zor olması, ancak öncelikle herhangi bir sistemin güvenlik açıklarına sahip olmasıdır. Yani bir geliştirici olarak birincil işiniz aslında sistemlerinizi kurşun geçirmez hale getirmek değil, üzerlerine büyük bir 'buraya gelin' işareti koymaktan kaçınmaktır.

Kodumun ihlal edildiği zamanlar, varsayılan şifreleri kullandığımda veya geliştirme arka kapılarını tamamen açtığımda, yalnızca başka birinin tekrar açmasını sağlamak için kapattım. (Yemin ederim. Kesinlikle. Asla benim hatam, bir kez bile.) Genel olarak, en basit şeylerden kaçınmak ve bir sonraki uygulama veya veritabanından daha zor bir hedef olduğunuzu ummak istersiniz.

Süreç içi ve süreçler arası iletişim güvenliği, kişisel olarak oluşturduğunuz güvenlik kusurlarınızın olacağı yerdir. Bu nedenle, REST çerçeveleri ve basit nesne iletişimleri endüstri standartlarıdır. Bunun ters gitmeye başladığı nokta, geçtiğiniz basit nesneleri aldığınız ve bunları programlı olarak girdi olarak çalıştırdığınız yerdir. Örneğin, HTTP gönderisinden bir JSON nesnesi almak, onu serileştirmek ve oradan bir değişkeni doğrudan bir dize olarak bir sorguya atmak. Bu, değişkenleri etrafta dolaştırdığınızda, türlerinden mümkün olduğunca emin olmak istediğiniz anlamına gelir.

Kodunuzun bittiği ve kitaplıklarınızın başladığı yer, kişisel olarak üretmediğiniz güvenlik hatalarının ortaya çıkacağı yerdir. Eski bir kitaplığa baktığımda, yeni sürüm için yama notlarına da bakıyorum. Microsoft'un bilgisayarınızı haftada iki kez yama yapmasının nedeni, programcılara para harcamayı sevmeleridir. Bunun nedeni, Windows kadar yaygın olarak kullanılan bir işletim sisteminin, her zaman onu kırmaya çalışan binlerce programcıya sahip olmasıdır. Yerel Windows kopyanız güncel değilse, kendinizi daha fazla güvenlik açığına açıyorsunuz demektir. Sunucularınız ve çerçeveleriniz pek farklı değil.

Kişisel açıdan, hafızanızın da tek bir başarısızlık noktası olmasını istemezsiniz. Sistemlerden sorumluysanız (ki bu, 'geliştiricinin işi büyüdükçe daha olasıdır), sonunda yönetmek için tonlarca şifre, SSH anahtarı, sunucu sertifikası vb. Olacaktır. Genellikle metin tabanlıdırlar, bu yüzden bir şifre yöneticisi bulmanızı ve kullanmanızı öneririm. (Sevmek Troy HuntKeePass kullanıyorum ve ücretsiz). Ayrıca şifreler de oluşturur, böylece Ejderhalar94! şifreniz olarak 75 farklı site ve sistem. Büyük bir tane oluşturmak için bir jeneratör kullanın, şifre dosyanızı arada bir kopyalayın ve devam edin. Ayrıca, bu parolaları ve anahtarları düzenli olarak döndürün. Bitmiyor Slashdot.

Son olarak, sorgu yerleştirmekten kaçının. Yapması basit ve artık neredeyse hiç söz edilmiyor çünkü ORM'ler / REST çerçeveleri onu engelleme eğilimindedir. Elbette mükemmel değil, ama yeterince iyi. Süreçler arası veya süreç içi iletişimden gelen bir şeyi çalıştıracaksanız, çalıştırmadan önce yalnızca tek bir sorgu olduğundan emin olun. Bitti.

Kaynak Kontrolü, Derleme Entegrasyonu ve Test Entegrasyonu

Kesinlikle bahsetmem gereken son güncel temel en iyi uygulamalar kaynak kontrolü, derleme entegrasyonu ve test entegrasyonudur. Kaynak kontrolünü kullanmıyorsanız, kodunuzun nerede değiştiğinin veya nasıl değiştiğinin farkında değilsinizdir. Ek olarak, kullanmıyorsanız, gereğinden fazla kaybolacaksınız.

Entegrasyona gelince, Jenkins ve TeamCity, henüz kullanmadıysanız, birinin ateşi icat ettiğini hissediyor. Daha fazla okumak için, Re-Tweet iyi bir başlangıç. Birim testlerinizi çalıştıran ve sizin için derleyen bir sisteme sahip olmak, dağıtımın güvenilir olduğu anlamına gelir. Dağıtımın güvenilir olması, sürümlerin "Kod ve müşteri birbirine hazır mı?" Sorusundan çok "Kod ve müşteri birbirine hazır mı?"

On yıl önce bir Wells Fargo grubu için bazı QA otomasyonu yaptım ve sürümler, 2-00 saatlik dağıtım ve 2 n [N, bazı durumlarda 3] saat olmak üzere 4: 28'da başlayarak her çeyrekte bir planlandı test etme. Yapmamız gereken tüm testler şu anda bir bütünleştirme sunucusuyla yapılamazdı, ancak sürümlerin kendisi mevcut teknolojiyle daha sorunsuz geçebilirdi. Ve daha iyi teknolojiyi kullanmak için ne olduğunu ve mevcut eğilimleri bilmeniz gerekir.

İşlemci hızı ve verimliliği on yıllardır birkaç yılda bir ikiye katlanmış olabilir, ancak programlama insanlara dayanıyor ve biz çok daha yavaş değişiyoruz. Başkalarının yazılım üretmek için kullandığı yeni araçları ve uygulamaları takip ederseniz, üretkenliğinize yardımcı olmak için bunları benimseyebilirsiniz.

Hangi yeni teknolojilerin ve uygulamaların verimli olduğunu bulmanın en iyi yeri iş ilanlarıdır. Pek çok iş (özellikle küçük şirketlerde) hiçbir zaman geniş ilan panolarına ulaşmaz, bu nedenle bir şirket bir pozisyon için agresif bir şekilde reklam verirse, geliştirme yöneticilerinin mevcut bağlantıları arasında bulamayacakları özel bir şey arıyorlar. Bu nedenle, bir şirket tamamen bilinmeyen bir kişiyi işe alma riskini almaya istekli olduğunda, genellikle kesinlikle tam olarak bilinmeyenin sahip olmasını istedikleri teknik yeterlilikler.

Daha küçük, daha yeni şirketler en güncel teknolojileri kullanma eğilimindedir. Bunun başlıca nedeni, kültürlerini değiştirmenin onları hızlı geri dönüş sağlayan düşük yatırım projelerine odaklamasıdır, ancak iş başında aşağıdakiler dahil birçok başka faktör de vardır:

  • Daha küçük şirketlerde ciro daha yüksektir ve teknoloji çalışanları, güncel deneyime sahip bir sonraki işi daha kolay bulmaktadır
  • Küçük şirketlerdeki proje sahipleri, kendi teknolojilerini seçme konusunda daha fazla güce sahip olma eğilimindedir
  • Daha küçük projeler, yeni yazılım kullanmanın daha düşük bir risk olduğu anlamına gelir

Daha büyük şirketler bununla çelişme eğilimindedir ve yeni teknolojileri daha muhafazakar bir şekilde benimserler. Güvenilirlik, maliyet / fayda oranları ve risk, iş sürekliliği gereksinimleri olan geleneksel bir şirket için çok daha önemlidir. Bu nedenle, iş ilanlarına bakarsanız, büyük şirketlerin en son teknolojinin iki ila dört yıl gerisinde olduğunu sıklıkla fark edeceksiniz.

Her yıl, Yığın taşması tüm geliştiricilerine hangi dillerde programlama yaptıklarını ve geliştirmek istediklerini sorar. Diğer programcıların ne öğrenmek istediğini öğrenirseniz, iki veya üç sonra (çok karmaşık değilse - size bakıyorum, CULisp) çok daha yaygın olarak kullanılacaktır. Geliştiriciler genellikle istihdamda kalmak isterler, bu nedenle öğrenmelerini potansiyel işverenlerin gelecekteki ihtiyaçları ile uyumlu hale getirmeye çalışırlar. Bu nedenle, geliştiriciler sürekli olarak zamanlarının en verimsiz kısımlarını daha verimli araçlar kullanarak değiştirmeye çalışıyorlar. Bununla birlikte, yazılım geliştirmenin en çok zaman alan kısmı her zaman hangi araçları ve kodu ayarlamak olacaktır. yapabilir son kullanıcı işlevselliğine, kişilere ve işletmelere kullanım.

Bu temel bilgi kaynaklarından bile daha derine inerseniz, neyin gelip ne olduğunu izleyebileceğiniz başka yerler olduğunu görebilirsiniz. Slashdot, Quora, Reddit ve diğer forum / çevrimiçi buluşma yerleri, standart medya kuruluşlarından daha fazla bilgi içerir - bu genellikle güvenilmezdir ve diğer kaynaklardan kontrol edilmelidir -. Bundan sonra hangi dilin sıcak olacağını öğrenmek, genellikle çalışan geliştiricilerin zahmete değer olduğuna inandıkları endüstri trendlerini okuma meselesidir. Ancak bu eğilimlerin ne olduğunu bilmek yeterli değil; bunları kendin pratik yapman gerekecek.

4. En İyi Uygulamalar ve Kariyeriniz

Bazı açılardan, yazılım geliştirme yöntemlerini öğrenmeye yönelik en iyi yaklaşım işleri değiştirmektir. Teknolojiler ve uygulamaların benzer benimseme eğrileri vardır - başlangıçta dik, ardından yaygın olarak kullanılırsa yavaş büyüme ve ardından yavaş bir düşüş. Çeşitli teknolojiler arasındaki en büyük fark, geniş bir benimsenme ve yaşam döngüsü uzunluğunun olup olmadığıdır. Bu nedenle, ön uç geliştirme gibi bir alandaysanız, bir teknolojinin büyüme ve benimsenme eğrisi tamamen birkaç yıl içinde gerçekleşebilir ve düşüş çok fazla bakım çalışması gerektirmez. Sonuç? Ön uç geliştirme kariyerinizle alakalı kalmak istiyorsanız, defneğinize güvenemezsiniz.

Bir Sonraki Mühendislik İşinizi Nasıl Seçebilirsiniz?

Genel olarak, yeni bir iş ararken, üç şeye bakmanızı tavsiye ederim. Bunları parçalayalım.

Öğrenme: Her şeyden önce, yeni pozisyonun size bir şeyler öğretmesini istiyorsunuz. Deneyimli bir geliştirici olarak, her zaman iki tür çalışma ortamı arasında seçim yapma seçeneğine sahip olacaksınız: geniş deneyime sahip olduğunuz ortamlar veya yenileri .. Zaten bildiğiniz teknolojilerle çalışmak için daha fazla ödeme almanız daha olasıdır. Bununla birlikte, kısmen aşina olduğunuz teknolojileri ve bilmediğiniz teknolojileri karıştırırsanız, özgeçmişinizde ek yetenekler / madde işaretleri kazanırken değer katabilirsiniz.

Keyfi: Teknik olarak herhangi bir pozisyonla ilgili en önemli ikinci şey, zevk aldığınız sorunları ve durumları seçmektir. Çözdüğünüz problemlerden ne kadar zevk alırsanız, becerilerinizi genişletmeye ve yaptığınız işte başarılı olmak için zaman / çaba harcamaya o kadar istekli olacaksınız.

Uygunluk: Üçüncüsü, şirketin yapısını bilin. Küçük şirketler, çalışanlarına çok çeşitli sorumluluklar verme eğilimindedir. Yeterince küçük bir şirkette, doğru bir iş unvanına sahip olamazsınız; Şu anda AWS bulut sunucusu yönetimi, TeamCity oluşturma süreçleri, veritabanı yönetimi, beş veya altı farklı dilde programlama, sürüm bildirimleri, düzeltmeler, mimari kararlar ve benzerlerinden sorumluyum.

Önceki pozisyonlarda, tek sorumluluk alanım vardı (örneğin, dahili bir faturalama departmanı için muhasebe mutabakat sonuçlarını doğrulamak ve düzeltmek) ve şirket ne kadar büyükse, zamanımın tek bir görev setine o kadar odaklandığını buldum. Genel olarak, eğer isterseniz derinleşmek belirli bir görev dizisini anladığınızda, büyük bir şirkette daha iyi hizmet alacaksınız. Kapsamlı, çeşitli sorumluluklarla (ve sınırlı bir güvenlik ağı) çalışmak çoğu zaman küçük bir sorumlulukla gerçekleşir.

Çoğu zaman, bir şirket, siz orada çalışmaya başladığınızda (yeni bir şey uygulamak için işe alınmadıkça!) Birlikte çalıştığı teknolojilere ve uygulamalara bağlı kalır. Bununla birlikte, şirket ne kadar küçük ve esnek olursa, uygun gördüğünüz aracı uygulama yetkiniz o kadar artar. Bundan yararlanın, en zor sorunlarınıza en uygun çözümleri araştırın ve işe yaramasını sağlayın.

Tersine, daha büyük bir şirket için çalışmanın avantajları olabilir. yapabilmek Yeni bir sistem veya uygulamayı uygulama izni alırsanız, bunun nasıl yapılacağı konusunda da eğitim alabilirsiniz. Ek olarak, daha büyük bir şirkette feci başarısızlığın tolere edilmesi daha olasıdır, bu nedenle yeni bir teknolojiye aşinalık edinme riski önemli ölçüde daha düşüktür.

İleri eğitim

Bazı en iyi uygulamalar, daha resmi bir eğitim (veya diğer eğitim) ortamında edinilmesi en kolay olanlardır. Kendi başınıza yeni bir dil edinmek yeterince kolay olsa da, bazen daha derin konuların içini ve dışını öğrenmek için kendinizi zorlamak oldukça zordur. Teoride sağlam bir temel, ileri eğitimin veya yeni, sıcak eğitim kampı kimlik bilgilerinin ağırlığı gibi, istikrarlı bir kariyer sürdürmek için yararlıdır.

Programcılar için pazar şu anda patlama yaşıyor. 1999'dan beri o kadar güçlü görmedim. Kendi iyiliği için programlamadan hoşlanıyorsanız ve pazar biraz gerileme yaşıyorsa, ileri dereceler, istihdamın daha zor olduğu durumlarda mükemmel bir yatırımdır. Daha çok yönlü olmak ve teknolojilerin nasıl inşa edildiğini anlamak sizi uzun vadede daha istihdam edilebilir hale getirecektir. 2-4 yıllık bir iş sonrası (veya işsizken) harcama, ömür boyu gelirinizi önemli ölçüde artırabilir ve iş güvencesi ekleyebilir.

Ancak aceleniz varsa, eğitim kampları da yeni ve yaklaşan şeyleri öğrenmek için iyi bir yerdir. Yeni bir iş bulmak için mevcut 'en iyi uygulamalardan' biri, oluşturduğunuz sağlam bir GitHub kod deposuna sahip olmaktır. Bu depoyu bir başlangıç ​​kampında ve ilginç bir sınır taşında oluşturursanız, bu önyükleme kampı deneyimli bir geliştirici için bile iyi harcanabilir. Codementor, etkilemek için bir GitHub kod tabanı oluşturma konusunda rehberlik almak için harika bir yer olacaktır.

'Zaman yatırımı' merdiveninden aşağı doğru ilerlerken, konferanslar neyin sıcak olduğunu bulmak ve en son teknolojiyi yaratan geliştiricilerle atölye çalışmaları yapabilmek için iyi bir yer. Amazon aylık (en az) çalışır AWS'deki olaylarve diğer her türlü etkinlik düzenli olarak planlanmaktadır. Herhangi bir konferanstaki sunum yapanlar ve eğitimciler, yıllarca geliştirdikleri, birlikte çalıştıkları veya desteklemek için para aldıkları teknolojiler lehine önyargılı olacaktır. Bu, çünkü onlar so Belirli bir teknolojiye yatırım yaptıklarında, genellikle bilgilendiricidirler ve seçtikleri teknolojilerle bilgi tabanınızı genişletmenize yardımcı olmak ister.

Belirli teknoloji eğitimi / sertifikası her zaman mevcuttur. Biliyorum, kafamın arkasında bir yerde, altı ay geçirmiş olsaydım hayatım çok daha kolay olurdu. Oracle DBA sertifikalı yirmili yaşlarımın başlarında. Küçük şirketler sertifikalara o kadar saygı duymazlar, ancak büyük şirketler sertifikaları risklerinin azaltılması olarak görür. Belirli bir teknoloji ile sertifikalandırılmışsanız, (onların gözünde) o belirli teknolojiye beklenen şekilde yetkin olmanız daha olasıdır. Bu nedenle, sertifika almak, çalkantılı bir pazarda nispeten istikrarlı bir kariyere doğru büyük bir adım olabilir. Bir uyarı olarak, iş piyasasında kaybolan bir teknolojiye yapılan büyük bir yatırım da olabilir.

Açık kaynak katkısı her zaman mevcuttur. İşletim sistemi yazılımı herkesin bildiği gibi dağınık olsa da, birkaç proje üzerinde çalışmak, ideal bir dünyada hangi standartların yardımcı olacağını anlamanıza yardımcı olacaktır. Bu, yeni bir geliştirici için korkutucu bir adım olsa da, denemeye değer. Profesyonel olarak oluşturulmuş bir dizi kod tabanıyla çalışmış olsaydım, bahse girerim ilk 10 açık kaynak projesine mantıklı yorumlar / dokümantasyon yazmak istiyorsanız, yarın başlayabilirsiniz ve hiç kimse şikayet etmez (katkılarınız sağladıkça duyu!).

Öğretmeyi buldum kodlayıcı bana muazzam bir miktar öğretti. Bir öğrencinin sorduğu her soru benim için tamamen yeniydi ve çözebileceğini bilmediğim şeyleri araştırmak ve düzeltmek için epey zaman harcadım. Bu tür bir deneyim, bir eğitim kampını öğreterek geçirdiğim süre boyunca yansıtıldı.

Kod yönetimi için bazı yeni yöntemler öğrenmenin mutlak en düşük yatırım yolu, bir hackathon'a gitmektir. Yalnızca bir 'uygulanabilir eğlenceli ürün' yaptım (bir oyun) böyle bir hackathon sırasında, ancak çok çeşitli diğer programcılardan çok şey öğrendim.

5. Sonuç

Bir geliştirici olarak, en iyi uygulamaları öğrenmek ve kullanmak, sağlam bir kariyer sürdürmenin temel taşıdır. Bilgisayar endüstrisindeki tek sabit değişimdir ve eğrinin gerisinde kalmak maliyetlidir. Sürekli olarak endüstrinin nasıl değiştiğini izleyerek, daha hızlı bir şekilde daha iyi kod üretebilirsiniz. Daha iyi kodu daha hızlı üreterek daha etkili çözümler yapabilirsiniz.

Başkalarının nasıl sahip olduğunu ayrıntılandıran birçok kaynak var kod kalitesini iyileştirdiya da işletmeleri kod üzerine kurdu, ancak kariyeriniz boyunca kullandığınız tüm teknolojiler, siz onlarla inşa ederken kesinlikle değişecek veya dönüşecektir. Çevrenizin farkında olun ve kariyeriniz gelişebilir.

Kaynak: https://www.codementor.io/blog/updating-your-best-practices-7gzzfh3vrx

spot_img

En Son İstihbarat

spot_img