Soranlara Gömülü Yazılımla (MCU)İlgili Tavsiyelerim

Öğrencilik Yılları Yatırımları

  • İngilizce
  • C programlama dili
  • Qt: eğer bir gömülü yazılımcıysanız, gömülü yazılımlarınızı test veya destek amaçlı birçok araç geliştirmeniz gerekebilir. Qt bu iş için biçilmiş kaftandır.
  • MCU programlama: Öğrencilik yıllarında yaptığım çalışmalardan ötürü, mezun olduğumda bir MCU’nun çalışma prensiplerini, silikon üreticisinden bağımsız bir şekilde öğrenmiştim.

Kaynaklar

Öğrencilik yıllarında İngilizce kaynaktan rahat düzeyde okuyacak kadar İngilizce öğrenmiştim. Dolayısıyla ağırlıklı olarak İngilizce kaynakları öneriyorum.

Linkedin hesabımda yaklaşık 10 adet kitap mevcut. Oradan açıklamalı olarak okuyabilirsiniz.

Rol Model Kişiler

Yine beni, önceki halimden daha iyi yapan kişisel özelliklerimden birisi de çok sayıda rol model insanı takip edişimdir. Alanda çalışan insanları takip edip, onların pratiklerinden mesleki hayatımda faydalanmaya çalışırım.

Çok Sayıda Mülakat

Yine bana en çok faydası dokunan şeylerden birisi de çok sayıda yerli mülakata girmemdir. Bugüne kadar sadece 3 adet yabancı mülakat tecrübem oldu, o yüzden yabancı mülakatlar konusunda söyleyeceğim çok şey yoktur.

Mülakatlar, nerede olduğunuzu görmeniz açısından iyi bir göstergedir. Tabi burada titiz teknik mülakat yapan şirketlerden söz ediyorum. Örnek veriyorum ben TDD’yi ilk defa bir Hollanda firmasının mülakatında duymuştum. Sonra bu yeteneği kendime kattım. Yine aynı şekilde birçok tasarım deseni, algoritma ve programlama tecrübesini mülakatlardan elde ettim. O yüzden çalıştığınız firmadan gizli bile olsa mümkünse her ay bir mülakata girmenizi tavsiye ederim. Görüşmeyi yapan teknik kişi kendi yaptığı işleri anlatırken bile size farklı bir bakış açısı kazandırabilir.

Gömülü Yazılım, Yazılımdır. (Dan Saks)

Bu söze ne kadar çok referans verdiğimi hiç hatırlamıyorum.

İster roket yazılımı yapın, ister tarım makinesine yazılım yapın bu değişmez: yazılım projesinin boyutu, belli bir ölçeğe geldiğinde kaçamayacağınız bazı “yazılım mühendisliği en iyi pratikleri” mevcuttur.

Tasarım desenleri, algoritmalar, veri yapıları, ağ programlama, OOP gibi temel konulardan herkes sorumludur. Gömülü yazılım yapan da sorumlu, Android uygulama geliştiren de…

Ben bu temelleri hiç yabana atmadım. Evet resmi olarak eğitimini almadım, bu konularda şu anda mükemmelim de demiyorum ama sürekli ve sürekli öğrenmeye devam etmek durumundayım.

İşimiz Hayatımızın Bir Parçası

Yine beynimde çınlayan güzel sözlerden birisi de “tecrübe, her gün azar azar biriktirdiğiniz şeylerin kolektif bir sonucudur” sözüdür.

İster az, ister çok çalışın fark etmez ama her gün çalışmak gerekiyor. Her gün bir algoritma, bir desen, bir yeni dil özelliği… Bu sayede sosyal yaşam dengenizi korumuş, uzun vadede de bilgiyi “sindirmiş (ezberlememiş)” olarak yığmış oluyorsunuz. Öyle “bu hafta şu kitabı bitireceğim” diye çıkılan yolun sonunda belki o kitabı bitirirsiniz ama o kitaptan ne anlamış olduğunuz tartışılır...

Bilimsel Alanda Çalışmak İsteyen Arkadaşlar İçin

Eğer bilimsel tarafı olan bir alanda çalışmak istiyorsanız, örneğin motor kontrolü veya sinyal işleme gibi, teorik altyapınızın güçlü olması gerekiyor. IoT cihaz tasarlarken çok fazla bilimsel yükümüz olmuyordu örneğin… SDLC süreçleri daha ön plandaydı. Yani sözün özü, eğer bilimsel altyapı gerektiren bir alanda çalışmak istiyorsanız, kendinizi buna hazırlamanız gerekiyor.

Paylaşımcı ve Yapıcı İnsan Olabilmek

Sağlıklı bir iletişimin faydasını anlatmakla bitiremeyiz. İsteklerimizi, problemlerimizi ve beklentilerimizi açık açık ifade etmemiz gerekiyor. Yani biraz dışa dönük bir insan olmamız gerekiyor. Bunun yanında yapıcı olmak bir diğer gerekliliktir. Mücadele ederek sorunlar çözülseydi inanın benim problemim kalmazdı. Yapıcı olarak göz ardı etmenizi tavsiye ederim. Problemler kökten çözülmese de en azından sizin için bitiyor.

Bir Alanda Odaklanmak

Yazılım konusunda bir alanda odaklanmayı, yani uzmanlığı savunuyorum. Bir gömülü yazılım yapıyorsanız ve buna bir IOS yazılımı yapılacaksa, bana göre
şirketin IOS geliştirici alması gerekiyor. Bir cihaz yapılacak ve buna donanım çizilecekse, şirketin donanımcı alması gerekiyor. Mezun olduktan beridir bu formatta çalıştım, nihayetinde bu format bu alanda daha iyi odaklanmama imkan verdi.

Bir Projeye Sahip Olmak

Belki de yazının en önemli maddesi bu maddedir. Her şeyden önce bir proje için yola çıkın arkadaşlar. Yazılım süreçleri nasıl iteratifse öğrenme süreçleri de aynı şekilde iteratiftir. 10 birimlik bir konuyu bir anda 10 birim olarak öğrenemiyorsanız, 1 birim olarak 10 ayrı günde öğrenmeniz gerekiyor.

Mümkünse sizi bir gömlek aşacak projelere girmenizi tavsiye ederim. Bana bir hocam “LWIP stack’i baştan yaz” demişti, ben de imkansız görmüştüm. Şimdi diyorum “ne kadar aptalmışım.”

STM32 mi Microchip mi Arduiono mu?

Bu sorunun cevabını merak ediyorsanız, hepsinden birer adet edinerek hangisinin “en iyi”(!) olduğuna siz karar veriyorsunuz. Sonra r/embedded kanalında tartışma konusu açıp yorumları okuyorsunuz…

Hani Teknoloji Tavsiyesi?

C programlama dili ve temel bilgisayar mimarisi öğrenip bu denize dalabilirsiniz. Bunu bir de UDEMY kursuyla desteklerseniz başlangıç için beklentiniz karşılanacaktır.

Sonuç

Süreç kolektif, iteratif, emek isteyen ve zaman alacak bir süreçtir. Bir standarda koyabileceğimiz bir yol yok maalesef. Yazıda belirttiğim gibi olmazsa olmazları ve temelleri var. Ondan sonra Bilgem Çakır’ın dediği gibi: boş bir arazide bir o yana bir bu yana koşmak gibi…

Esen kalın…

Software Developer (Embedded, C, C++, Qt)

Software Developer (Embedded, C, C++, Qt)