Bu makaledeki ortak yazarlar Stephen Cognetta, MBA. Stephen Cognetta, insanların teknoloji sektöründeki iş görüşmelerine hazırlanmalarına ve bu görüşmelerde başarılı olmalarına yardımcı olan Exponent isimli öğrenme platformunun kurucu ortağı ve CEO'sudur. Stephen ürün yönetimi, yazılım mühendisliği, ürün pazarlaması, yönetim, teknik proje yönetimi ve veri bilimi görüşmeleri alanında koçluk yapmak üzere uzmanlaşmıştır. Stephen, en yüksek onur derecesiyle mezun olduğu Princeton Üniversitesi'nden Bilgisayar Mühendisliği alanında lisans derecesine ve Stanford Üniversitesi'nden yüksek lisans derecesine sahiptir. Stephen, Exponent'i kurmadan önce Google'da ürün müdürü olarak çalışmıştır ve HackMentalHealth'in kurucu ortağı olmuştur.
Bu makalede atıfta bulunulan 17 referans vardır ve bu referanslara sayfanın sonunda ulaşılabilir.
Bu makale 9.912 defa görüntülenmiştir.
Teknoloji gelişip günlük hayatta daha büyük yer kapladıkça teknoloji profesyonellerine olan ihtiyaç da artıyor. Yazılım mühendisleri, bilgisayarların kullandığı ve hayatımızı kolaylaştıran programların geliştirilme sürecini tasarlıyor ve yön gösteriyorlar.
Adımlar
Yöntem 1
Yöntem 1 / 2:İlk Kariyer Olarak Yazılım Mühendisliğine Girmek
-
1Bilgisayar bilimleri veya ilişkili bir alanda derece edin. Çoğu yazılım mühendisi pozisyonu lisans diploması gerektirir.[1] X Güvenliir Kaynak US Bureau of Labor Statistics Kaynağa git Bilgisayar bilimlerinde lisans yapmak, yazılım tasarlama ve mükemmelleştirme için gereken bilgi birikimini sağlar. İş mülakatlarını yapanlar çoğu zaman veri yapılarına ve algoritmalara odaklanan sorular sorarlar, o yüzden seni buna en iyi hazırlayacak olan şey, geleneksel bilgisayar bilimi derecelerinin sağladığı kuramsal altyapı. Bununla birlikte, muhtemelen okul dışında da yazılım geliştirerek hatırı sayılır zaman geçirmen, böylece öğrendiğin kuramsal kavramları gerçek yazılımlar yazmaya uygulaman gerekecek.
- Ön lisans derecesiyle ya da kendi kendine öğrenerek de bu pozisyonda iş bulmak mümkün. Bu yolu seçeceksen Github gibi bir sitede, becerilerini gösteren, tamamlanmış ve işlevsel projelerden oluşan sağlam bir portföyün olmalı. Ayrıca kendine ait bir konseptin yoksa açık kaynak projelerini takip edip onların hatalarını gidererek ya da yeni özellikler ekleyerek de katkıda bulunabilirsin. Açık kaynak, bir yazılımın kodunun (kaynağının) herkes tarafından görülebilir (yani açık) olması demektir. Bu genelde herkesin bir projeye kod göndermesini ve proje sorumlularından onay beklemesine izin verir. Arkadaş canlısı geliştiricilerden oluşan bir topluluğa sahip bir açık kaynak projesi bulmak, temel becerileri edindikten sonra kendini hızla geliştirmeni sağlayabilir.
-
2Programlamaya hemen başla. Daha lisedeyken bile kendi kendine programlama öğrenerek yarışa bir adım önde başlayabilirsin.
- Yazılım mühendisliği sadece kodlama üzerine odaklanmaz. En azından birkaç programlama dili bilmen ve bu dillerin nasıl işlediklerini etraflıca anlaman gerekir. En yararlı dillerin hangisi olduğuna ilişkin fikir birliği olmasa da aşağıdakilerin hepsi de popüler seçimler:
- Python
- Ruby
- JavaScript
- C#
- Java
- C++
- Unutma ki bazı diller bazı tür problemleri çözmede diğerlerinden daha iyidir. Hiçbir programlama dili bir diğerinden üstün değildir. Hiçbir dil objektif olarak bir diğerinden daha basit de değildir. Çoğu dil belli tür sorunlar hedeflenerek yazılır ve bu tür sorunları çözmede iyiyken başka sorunları çözmede zayıftır. Bolca deney yapıp kendi tarzını bul. İlk başta tek bir dilde, yalnızca en basit programları çalıştırmayı öğren. Bir dilde kendini rahat hissedince ikinci bir dile başla. Tüm dilleri öğrenmene gerek yok. Bir boşluk yakala ve o konuda uzmanlaş!
- Gençler için MIT (Massachusetts Teknoloji Enstitüsü) tarafından geliştirilen Scratch adında bir web sitesi ve programlama aracı var. Bu araç, programlama kavramlarını göz korkutan metinler değil de görsel unsurlar kullanarak öğretiyor. Soyut kavramlara ve metinlere değil de görsel unsurlara odaklandığında kendini daha rahat hisseden yetişkinler için de faydalı.
- Yazılım mühendisliği sadece kodlama üzerine odaklanmaz. En azından birkaç programlama dili bilmen ve bu dillerin nasıl işlediklerini etraflıca anlaman gerekir. En yararlı dillerin hangisi olduğuna ilişkin fikir birliği olmasa da aşağıdakilerin hepsi de popüler seçimler:
-
3Veri yapılarını ve algoritmaları çalış. “Algoritma” bir problemi çözen formül ya da süreç demektir.[2] X Kaynağı araştır İki nokta arasındaki en kısa mesafeyi bulmayı,[3] X Kaynağı araştır geniş bir veri kümesinde belli bir veri aramayı[4] X Kaynağı araştır ve verileri belli bir düzene göre sıralamayı[5] X Kaynağı araştır algoritmanın yaygın örnekleri arasında gösterebiliriz. Bir “veri yapısı” ise verileri belli problemleri çözmeyi kolaylaştıracak biçimde organize etme yöntemidir[6] X Kaynağı araştır . Bunun yaygın örnekleri arasında, verilerin belli bir sıraya göre birbiri ardına dizildiği dizileri (array) ve veriyi listedeki konumuna değil de belli bir “anahtara” göre depolayan anahtarlı tabloları (hash table) gösterebiliriz[7] X Kaynağı araştır [8] X Kaynağı araştır . Yazılım mühendisi olarak iş bulduktan sonra başarılı olmanı sağlayacak becerileri geliştirmeye ve sürdürmeye odaklan.[9] X Kaynağı araştır
- (İsteğe bağlı) Matematik öğren. Matematik, bilgisayar bilimleriyle ilgili tüm lisans programlarının bir parçasıdır ve birçok algoritmanın ve veri yapısının temeli matematiğe dayanır. Yüzde yüz gerekli olmasa da sağlam bir matematik altyapısı, algoritmaları analiz etmede ve yeni algoritmalar geliştirmede sana daha üstün beceriler sağlar. Eğer en ileri araştırma ve geliştirme projeleriyle uğraşan şirketlerde çalışmayı planlıyorsan o zaman matematik olmazsa olmaz. Kurumsal şirketlerde rahat bir iş bulmayı hedefliyorsan ileri düzey matematik o kadar da şart değil.
- Yazılım içeren tüm matematik dersleri gibi ayrık matematik de çok yararlı bir çalışma alanı.
-
4Çalışmalarını destekle. Eğitim sistemleri çoğu zaman modası geçmiş şeylerdir. Ders kitapları, yazılım güncellemelerinin gerisinde kalır. Eğitim kurumları başarın için anahtar rol oynayacak kuramsal kavramları ve düşünme yollarını öğretir; o yüzden yabana atmaman gerekiyor. Ama sonuçta paranı, kuramı gerçek hayattaki yazılımlara uygulama becerine göre kazanacaksın. İşte çalışmalarını desteklemek de burada önem kazanıyor.
- StackOverflow'da gezin. StackOverflow, yazılım geliştiriciler için bir soru cevap sitesi. Kendini geliştirmek istediğin teknolojiyi, problem alanını ya da programlama dilini belirtmek için etiketlere göre arama yapabilirsin. Başkalarının yanıtlarını inceleyerek mühendislerin problemleri nasıl çözdüklerini öğrenebilirsin. Zekice çözümleri sık kullanılanlara eklemek kendi problem çözme takım çantanı oluşturmana yardımcı olur.
- Kodlama için alıştırma sitelerini kullan. CodeWars ve CodinGame gibi siteler, becerilerini test etmen için binlerce problem sunuyor
- Sana ilham vermesi, bağlantılar sağlaması ve çalışmalarını nereye yöneltmen gerektiği konusunda yol göstermesi için gerçek hayatta bir topluluk bul. Meetup gibi siteler, yazılım mühendisleri bulup meslek hakkında ayrıntılı bilgi edinmek için harika yerler olabilir. Eğer genel mühendislik toplantıları bulmakta zorlanıyorsan belli dillere ya da teknolojilere odaklanmayı dene. Sosyal medya sitelerini de araştır.
-
5Yazılım geliştir. Becerilerini geliştirmenin en iyi yolu onları kullanmak. Projeler ister profesyonel olsun ister kişisel, yazılım tasarlamak ve kodlamak sana çok şey öğretecek. Birçok işveren, pratik başarılara not ortalamasından ya da kuramsal bilgiden daha çok değer verir.[10] X Kaynağı araştır
- Geliştirdiğin yazılımlardan para kazanmayı hedeflemiyorsan onları İnternet'e koy! Potansiyel işverenler, becerilerini değerlendirmek için yarattığın projeleri ve onlar için yazdığın kodu görmek ister. Bu aynı zamanda becerilerini geliştirmek için geri bildirim almanın harika bir yolu.
-
6Staj yap. Birçok yazılım mühendisliği öğrencisi, bir yandan okurken bir yandan da staj yapar.[11] X Güvenliir Kaynak US Bureau of Labor Statistics Kaynağa git Bu, potansiyel işverenlerle bağlantı kurmanın ve pratik deneyim kazanmanın mükemmel bir yolu olabilir. İş bulma web sitelerinden ve tanıdıklar aracılığıyla staj fırsatlarını araştır.
-
7İş fırsatları kovala. Yazılım mühendisliği hızlı gelişen bir alan. İşe programcı olarak başlayıp yazılım geliştirme adımlarını yavaşça tırmanabileceğin gibi, hemen işe girme şansın da var[12] X Güvenliir Kaynak US Bureau of Labor Statistics Kaynağa git . Okulu bitirmeden iş bakmaya başla:
- Üniversiteler genelde mezunlarının iş bulmasına yardımcı olur. Üniversitedeki hocalarınla, bölüm çalışanlarıyla ve kariyer hizmetleri ofisiyle iş fırsatlarını konuş.
- İşlerin büyük kısmı tanıdık çevresi aracılığıyla bulunur.[13] X Kaynağı araştır Kişisel kontaklarını kullan, kariyer toplantıları ve konferanslar aracılığıyla sektörden insanlarla tanış.
- İş bulma sitelerini düzenli olarak kontrol et. İş bulma sitelerinde profil oluştur, özgeçmişini yükle ve bunları hem çevre edinmek hem de iş başvuruları için kullan.
-
8Kariyer hedeflerini gözden geçir. Yazılım sektörü sürekli değişiyor. Bilgini ve pratik becerilerini geliştirerek buna ayak uydurabilirsin ve kariyerine yön vermek için birçok fırsatın olacak. İşte, iş bulma şansını artırmanın birkaç yolu:
Reklam
- Çevre edinme fırsatları için profesyonel bir organizasyona katıl.
- Eğer sektörde uzun vadeli planların varsa yüksek lisans yapmayı düşün. Çoğu pozisyon için şart olmasa da, yüksek lisans yapmak sektör lideri firmalarda, yönetici pozisyonlarında ya da gömülü yazılım alanında istihdam edilmeni büyük oranda kolaylaştırır.[14] X Kaynağı araştır Yüksek lisans derecesi, kariyerinin başında sana hatırı sayılır bir maaş artışı da getirebilir.
- Sertifikalar bazı alt alanlarda ve bölgelerde yardımcı olsa da bazılarında daha az istenmene yol açabilir.[15] X Kaynağı araştır Bu programlara kaydolmadan önce, aynı uzmanlık alanındaki mühendislerle konuş. Genelde geleneksel kurumsal ortamlarda sertifikalar sevilir. Ama yeni teknoloji şirketleri ve ilerlemeci firmalar bunlara zaman kaybı gözüyle bakabilir. Yine de daima istisnalar mevcut. Bazı ülkelerin de sertifikalara bakışı farklı oluyor. O yüzden yazılım mühendisleriyle bağlantıya geçip yaşadığın yerde sektörün nasıl işlediğini anlamaya çalış.
Yöntem 2
Yöntem 2 / 2:Yazılım Mühendisliğine Sonradan Geçiş Yapmak
-
1İş potansiyelini bil. Yazılım geliştirme alanı mükemmel bir istihdam olanağına sahip. Yazılım mühendisliği, temel programlamaya kıyasla çok daha fazla aranan bir uzmanlık. ABD’de ortalama yazılım geliştirici geliri yıllık kabaca 80.000-100.000 dolar.[16] X Güvenliir Kaynak US Bureau of Labor Statistics Kaynağa git [17] X Kaynağı araştır
-
2Programlamayı hemen öğren. Pratik yazılım tasarımı ve kodlama ilk önceliklerin olmalı. Bu deneyimi edinmenin birkaç yolu var:[18] X Kaynağı araştır
- İnternet'teki dersler ya da sana öğretmeye gönüllü arkadaşlar sayesinde programlamayı öğren.
- Kitlesel çevrimiçi açık derslere (MOOC) katıl.
- Biraz deneyimin varsa GitHub’da diğer programcılara katkıda bulun.
- Biraz para ve boş zamanı gözden çıkarabileceksen en hızlı öğrenme yöntemlerinden biri, kod yazma kampları. İnternet'ten mutlaka araştırma yap çünkü bazı programlama kampları sektörde pek sevilmiyor ve paranın karşılığını vermeyebilir.
-
3Deneyimlerinden faydalan. Yazılım, uzmanlaşma gerektiren bir konu olabilir fakat önceki kariyerinin, sana fayda sağlaması için illaki bilgisayarla ilgili olması gerekmiyor. Yazılım mühendisliği büyük oranda analitik beceriye, problem çözmeye ve takım çalışmasına dayalı olabilir. Dahası bir sektörü tanıman, o sektör için yazılım tasarlarken yarar sağlayabilir.
- Hobiler ve ilgi alanların bile çevre edinmene yardımcı olabilir hatta işine tutku katabilir. Bunlara oyun uygulamalarını, dijital müzik paketlerini ya da iş yazılımlarını örnek verebiliriz.
- Eğer mümkünse işin bir kısmını otomatikleştir. İşini kolaylaştıracak ve hızlandıracak araçlar inşa et. Yazılım mühendisliği özünde problem çözmedir. Yazılım yazmak, bir yazılım mühendisinin sorun çözme araçları arasında tercih ettiği yöntemdir. Her yer zaten çözülecek problemlerle dolup taşıyor! Şimdi başlamaman için hiçbir neden yok.
-
4Yüksek lisans yap (isteğe bağlı). Bir iki yıllık ya da yeteri kadar kendini adarsan birkaç aylık deneyimle bile bir programlama işi bulabilirsin. Herhangi bir başka alanda lisans derecen ve biraz da kodlama becerin varsa doğrudan yazılım mühendisliği yüksek lisans programlarına başvurmayı düşün.
- Unutma ki bu çok pahalı bir seçenek olabilir. Ama kendini motive etmede güçlük çekiyorsan, bir topluluğa katıldığında ya da hobi denerken gerisini getiremiyorsan en etkilisi bu olabilir.
-
5Bağlantıların sayesinde iş bul. Neredeyse tüm sektörlerde yazılım geliştiriciye ihtiyaç duyuluyor. O yüzden önceki kariyerindeki iş çevren çok değerli olabilir. Uluslararası Mühendislik Derneği IAENG’in Yazılım Mühendisliği Topluluğu, Elektrik ve Elektronik Mühendisleri Enstitüsü IEEE’nin Bilgisayar Topluluğu – Yazılım Mühendisliği Teknik Konseyi (TCSE) veya Bilgisayar Derneği (ACM) gibi bir meslek birliğine katılmayı düşün. Yerel buluşmalara ve İnternet topluluklarına da bak. Yazılım dünyası şaşırtıcı derecede küçük olabilir ve doğru bağlantıyı bulmak önüne sayısız fırsat serebilir.Reklam
İpuçları
- Bu sektördeki pozisyon adları standart değil. “Yazılım geliştirici” geniş kapsamlı bir terim. “Yazılım mühendisliği”nin daha çok uzmanlaşmış bilgi ve tasarımla ilgili olması gerekse de, kimi firmalar bu unvanı alt düzey programlama işlerini süslemek için de kullanıyor.[19] X Kaynağı araştır
- Belli bir firmada çalışmayı hedefliyorsan doğrudan o firmanın İnternet sitesindeki iş olanakları kısmına bak.
- Eski usul çalış. Bilgisayara geçmeden önce kâğıt üzerinde kod yazma alıştırması yap!
- İş mülakatları genelde tahta karşısında olur. O yüzden arkadaşlarınla birlikte, tahtada kod yazmaya alış. Çoğu şirket kodun yazıldığı gibi çalışmasını umursamasa da, buna dikkat edenler olabilir.
Referanslar
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm
- ↑ https://en.wikipedia.org/wiki/Algorithm
- ↑ https://en.wikipedia.org/wiki/Pathfinding
- ↑ https://en.wikipedia.org/wiki/Search_algorithm
- ↑ https://en.wikipedia.org/wiki/Sorting_algorithm
- ↑ https://en.wikipedia.org/wiki/Data_structure
- ↑ https://simple.wikipedia.org/wiki/Hash_table
- ↑ https://simple.wikipedia.org/wiki/Array_data_structure
- ↑ http://www.basic-mathematics.com/computer-software-engineer.html
- ↑ http://blog.smartbear.com/careers/math-nerds-vs-code-monkeys-should-computer-science-classes-be-more-practical/
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-4
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-4
- ↑ https://career.berkeley.edu/Info/Networking
- ↑ http://www.softwareengineerinsider.com/articles/jobs-with-a-masters-in-software-engineering.html#.VsPCECmGYwA
- ↑ https://www.quora.com/Are-certifications-for-software-engineers-worth-it
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm
- ↑ http://study.com/articles/Become_a_Computer_Software_Engineer_Education_and_Career_Roadmap.html
- ↑ https://www.betterment.com/resources/inside-betterment/engineering/how-to-make-a-career-switch-into-software-engineering/
- ↑ http://www.softwareengineerinsider.com/articles/software-development-software-engineering.html#.VsOo_imGYwB