Mühendislik Yapabilirim

Mühendislik yapmak veya okumak bazen zor... Böyle durumlarda işinize yarayabilecek motivasyon hileleri ve taktikler bu yazıda.

Mühendislik Yapabilirim

Bu yazıda, mühendisler (özellikle kariyerinin başında olanlar) ve mühendislik öğrencileri için faydalı olabileceğini düşündüğüm ve kullandığım çeşitli motivasyon hilelerini, taktikleri ve düşüncelerimi paylaşacağım. Full Stack Elektronik, her ne kadar elektronik ve bilgisayar alanında içerikler barındırsa da bu yazının yeterince genel olduğunu ve bahsedilenlerin birçok mühendisliğe uygulanabileceğini düşünüyorum.

Mesleğe yeni başlayan mühendis ve stajyer olarak tanıma fırsatı bulduğum bazı öğrenci arkadaşlarda bazen bir panik durumu oluyor. Bir şeyleri anlayamadıklarından, tam yapamadıklarından, "geç kaldıklarından" yakınıyorlar. Bu düşüncelere sahip olan kişiler de genelde kariyerinde bir şeyler yapmak isteyen, bir hedefi olan kişiler oluyor. O hedeflere ulaşamayacaklarmış gibi hissedip bir panik yaşıyorlar. Halbuki, uzamış bir panik ortamı bizler için pek faydalı değildir.

Bu tarz düşüncelere hepimiz kapılmışızdır. Böyle durumlarda aşağıdaki başlıklarda anlattıklarımı bir değerlendirmenizi öneririm.

Yeteri kadar zeki değilim sanırım

Yıllar geçtikçe kendi çalıştığım elektronik ve yazılım ile ilgili alanlar için önemli olan şeyin zeka değil merak olduğunu defalarca farklı durumda gözlemledim. Çünkü merak olduğu zaman arkasından motivasyon geliyor, motivasyon da merağı körüklüyor. Bunlar olunca da kişiler çalıştıkları konuya daha uzun süreler ayırıyorlar ve bu da günün sonunda öğrenmeyi ve ilerlemeyi getiriyor.

Zekayı nasıl tanımlarız bilmiyorum ama diyelim ki daha zeki dediğimiz kişiler daha hızlı öğreniyor. Yavaş öğrendiğinizi düşünüyorsanız bile süreklilik çok daha önemli.

Anlama kapasitesi arttıkça belki kısa sürede daha çok şey öğrenebiliriz ama bu 100 metre bir koşu değil, bu bir maraton.

Koştur babam koştur... GIF

Neticede kul yapımı

Kendi karşılaştığım problemlerde de en çok kullandığım bakış açısı bu. Elektronik ve özellikle bilgisayar alanlarında çoğunlukla başka kişiler tarafından tasarlanmış sistemler ile uğraşıyoruz. İlk bakışta bunu anlamıyor olabiliriz. Ben burada her zaman şöyle düşünüyorum: Başka bir insanın tasarladığı şeyi anlayabilirim.

Evet, gerçekten de böyle düşündüğüm zamanlar az değil. İlk anda anlayamasam bile onu anlayabileceğimi biliyorum çünkü benim gibi birinin tasarladığı bir şeye bakıyorum.

Bu konuda bence mühendislik alanında çalışanlar daha şanslı. Temel bilimleri ele alalım, örneğin fizik. Fiziğin temel olarak yapmaya çalıştığı işlerden biri de zaten var olan evren işleyişini anlamaya, onu matematik ile ifade etmeye çalışmak. Fakat evreni biz (insanlar) tasarlamadık. Fizik kanunları dediğimiz kanunlar ile sadece biz özünde modellemeye çalışıyoruz. Bu noktada aklımıza yatmayan birçok nokta olabilir. Bir başkasının koymaya çalıştığı modeli anlamakta, başka bir mühendisin tasarımını anlamaya çalışmaktan çok daha fazla zorlanabiliriz. Neyse ki mühendislik böyle değil, çoğu şey bizim tasarımımız...

Bu kategoriye fiziğin yanına, kimyayı, biyolojiyi hatta matematiği bile ekleyebiliriz. Şuna bir bakın:

Adamlar sayma sayılarını toplayarak -1/12 elde ediyorlar. Üstelik bu denkliğin fizikte kullanıldığı yerler de var. Elbette bunun bir açıklaması var [1 ,4]. Yine de bunun yerine mühendislik alanındaki bir konuyu anlamayı fazlasıyla tercih ederim. Tasarlayan kişi benden daha akıllı olup 1 saatte bitirmiş olabilir, ben de 3 saatte anlarım, ne olacak ki?

Roma uno die non est condita

Yani Roma bir günde kurulmadı. [2]

Mühendisler olarak günümüzde uğraştığımız sistemlerin bir çoğunun onlarca yıllık geçmişleri var. Örneğin FPGA'ler, işlemciler, programlama dilleri, devre topolojileri, sinyal işleme yöntemleri vs.

Bilgisayar işlemcilerini ele alalım. Günümüzdeki işlemcilerde performansı arttırmak için belki onlarca mekanizma var: speculative execution, pipeline, cache yapıları, vs. Ama bunlar, mikroişlemcilerin tasarlandığı ilk günde yoktu. Belki 50 yıl içerisinde, ihtiyaç oldukça bu bileşenler sıra ile eklendi. Bizler ise günümüzde baktığımızda muazzam karmaşıklıkta bir yapı görüyoruz. Oysa ki bazı bileşenler arasında yıllar var ve var olmalarının da bir sebebi var.

İşte biraz da bir günde kurulmayan Roma'yı bir günde gezmeye çalıştığımız için biraz kendimizi kötü hissediyoruz. Yıllar geçtikçe yeni başlayan bir kişinin işin temellerini öğrenmesi gittikçe zorlaşıyor bence. Elbette herkes en temelini öğrenmeli demiyorum, merak eden ve isteyenler için konuşuyorum. Arada arkadaşlarıma

Keşke 70'lerde yaşayıp bu işlerin başını yakalasaymışız.

diyorum. İşin içinde, işle beraber büyümek çok daha keyifli yani Roma inşa edilirken bulunmak. Ama yapacak bir şey yok, buna hayıflanacak değiliz. Panik olmadan Roma'yı sakince, koşmadan, gezeceğiz.

İşin tarihini de biraz öğrenelim

Tarih önemli GIF

Roma örneğinden devam edelim. Bir günde kurulmamış olan Roma'yı kuruluş süresinden daha hızlı gezip öğrenmek için tarihçesini çalışmak bize fayda sağlayacaktır. Aynısı bence mühendislik konuları için de geçerli. Örneğin C çok eski bir programlama dili ve güncel programlama dilleri ile kıyaslayınca dil içerisindeki bazı kurallar ve yapılar garip gelebilir. Ama dilin tasarlandığı 70'li yıllara geri dönecek, oradaki ortamı düşünecek olursak bu sefer de dil bize modern gelmeye başlayacaktır. İşte bu şekilde düşündüğümüzde, bazı şeylerden nefret etmek yerine onları anlayıp daha rahat kabullenebiliriz. Ayrıca bir tasarımda zaman içerisinde nasıl değişmiş, neler olmuş bunları da bilirsek, anlamamız ve içselleştirmemiş kolaylaşacaktır.

Bugün anlamak zorunda değiliz

ODTÜ EE'de yüksek lisans yaparken bir hocamızdan duyduğum bir hikayeyi paylaşmak istiyorum. Bir hocamız elektromanyetik teori konusunda diğer hocalar tarafından duayen olarak görülüyor, adeta hocaların hocası. Genç bir hocamız da görece yaşını almış bu hocamıza

Hocam herhalde X konusunu yüksek lisansta siz anlamışsınızdır?

diye sorunca hocamız da

Ne yüksek lisansı, doktorayı verdikten 5 yıl sonra anladım.

diyor. Siz şu anda baktığınız hoca deniz derya duruyor değil mi? Ama o da her şeyi ilk günden anlamış değil.

Bunu hepimiz yaşamışızdır. Bir konuyu çalışırız çalışırız ama bir türlü anlayamayız. Sonra o konuyu bırakırız. Bir altı ay sonra çok farklı yerde karşımıza çıkınca birden kavrayıveririz.

Bunu özellikle öğrenci arkadaşlarımıza söylemek istiyorum. 4 yıllık lisans eğitimi oldukça yoğun, çok çeşitli konular içeriyor. Elbette bu 4 yıl içerisinde maksimum çaba ile konuları öğrenmeye çalışacağız, burada tembellik yok ama her şeyi bu 4 yıla sığdıramayız. Bazı kısımları da ileriye bırakmak gerekiyor. Zamanla, o konu üzerinde çalıştıkça konular oturacaktır. Bazen bir konuyu anlamak için biraz ilerisini öğrenip geriye gelmek gerekebiliyor. Sınavda yapamadığımız soruyu boş geçip daha sonra dönmek gibi bir taktik uygulayabiliriz.

O benden daha çok biliyor

Birkaç yıllık mühendis arkadaşların kendilerini en az on yıl tecrübesi olan arkadaşlarla kıyaslayıp, morallerini bozduğunu gözlemliyorum. Arkadaşlar, bu çok normal. Tersi olursa haber değeri olur (olduğunu da gördüm). Yani elbette sizden senelerce fazla çalışmış bir kişi sizin göremediğiniz bir şeyi görebilir, daha hızlı ve doğru çözüm üretebilir. Böyle kişilerle yakın çalışıyor olmak aslında bir şans, siz de yavaş yavaş kapıyorsunuz işte.

Eyvah, geride kaldım!

Hayır, kalmadın. Çünkü dediğim gibi bu bir maraton. Tutarlı ve kararlı bir şekilde çalışıyorsak gayet iyi. Bunu bir grafik gibi düşünün: zaman ve birikim grafiği.

Zaman - Birikim Grafiği (Temsili)

Birikim, bilgi birikimi olabilir. Eğer bu grafiğin eğimi 0'dan büyükse gayet iyi. Yani birikimimiz artıyor demektir. Bunun eğimine çok takılmamak lazım. Kimisi daha hızlı anlıyordur ya da daha çok vakit harcıyordur, eğim fazla olur. Bizim harcadığımız vakit az olabilir ya da öğrenme hızımız düşüktür, eğim düşüktür, bu önemli değil. Önemli olan pozitif bir eğim olması ve bu pozitifliği uzun süre sürdürebilmek.

X konusunu öğrenmek istiyor ve bu konuda ilerlemek istiyorsak kendimize

Bu gün/hafta/ay X için ne yaptım?

diye sormalıyız. Günlük ilerleme için kendimizi strese sokmaya gerek yok. Her gün çalışamıyor olabiliriz. Uzun vadede ilerleyebiliyor muyuz? Buna bakmamız lazım. (Moving average bir filtre geçirin.)

Ama eğim çok düşük, arttırmam lazım

Tamam. Bizim öğrenme hızımız ile ilgili olan kısım sanki biraz genetik, buna çok takılmaya gerek yok. Ama verimli çalışma konusunda belki iyileştirmeler yapabiliriz. Kazanım = Harcanan Süre x Verim gibi düşünürsek Harcanan Süreyi arttırabiliyorsak ne güzel. Verim de şöyle düşünülebilir: Mesela programlama dili öğreniyorsanız sürekli ders dinleyerek o dili bir noktaya kadar öğrenirsiniz. Ama ders dinlemeden paldır küldür kod yazarsanız o da olmaz. Bu ikisini dengeli yapmak gerekiyor. Bu şekilde Verim artışı sağlayabiliriz.

Sürekli tutorial izlemekten çıkamama durumunu betimleyen Tutorial Hell e düşmemek gerekiyor. Bu bizim Verim imizi düşürecektir.

İlerlediğimi nasıl anlayabilirim?

Bu ayrı bir içeriği hak edecek kadar geniş bir konu olabilir. Ama benim en çok kendimde de uygulamayı sevdiğim yöntem, o konudaki geçmiş çalışmalarıma bakıp, onları ne kadar beğenmediğimi ölçmem. Nasıl yani? Diyelim ki bir programlama dili çalışıyoruz ve o dilde sürekli kod yazıyoruz. Bir 3 ay, 6 ay ya da 1 sene sonra dönüp eski kodlarımıza baktığımızda yazdığımız kodları beğenmiyorsak ve hatalar görüyorsak

Ya bunu zamanında nasıl yanlış yapmışım, tüh!

deyip, üzülmek yerine

Vay be, kendi hatalarımı bulabiliyorum, ilerlemişim ha!

demek gerekiyor.

Eğer 1 sene o konuda çalışıp, eski çalışmalarınıza bakıp

1 yıl önce de mükemmel bir şekilde yapmışım

diyorsanız iki ihtimal vardır:

  1. O konuda ulaşılabilecek en iyi noktaya gelmişsinizdir, konu bitmiştir ve zaten 1 yıldır kusursuz işler çıkarıyorsunuzdur.

  2. Yeteri kadar ilerleme olmamıştır ve hala 1 sene önce yaptığınız hataları yapıyorsunuzdur.

Sizce çok yüksek ihtimalle hangi durum yaşanıyordur (💡 ipucu: 2).

Eğer geçmişte yaptığınız işlerden beğenmediğiniz kısımlar varsa buna sevinin, bu ilerlediğinizin bir göstergesidir. Ne kadar çok beğenmiyorsanız eski işlerinizi, o kadar iyi bile diyebiliriz.

Her katmanı (stack) (çok iyi) bilmek zorunda değiliz

Önceki bir yazımda Full Stack Elektronik kavramından bahsetmiştim. 4 yıllık eğitimde de aslında bu stack'in daha fazlası öğretilir. Fakat mühendislik alanında başarılı olmak için bu stack'lerin hepsini çok iyi bilmemize gerek yok (pek imkan da yok).

Burada, mezun olduğum ODTÜ EE'deki birkaç dersten bir örnek vermek istiyorum [3]:

EE447 - Introduction to Microprocessors
EE446 - Computer Architecture 2
EE445 - Computer Architecture 1
EE348 - Introduction to Logica Design
EE312 - Digital Electronics
EE311 - Analog Electronics
EE212 - Semiconductor Devices & Modeling

Bunların bir kısmı opsiyonel dersler, ben hepsini almıştım. Kabaca "stack" yapısı bu şekilde. EE212'de p-n junction gibi konular konuşularak bir yarı iletken cihazın temelde nasıl çalıştığı, fizik kuralları ile açıklanıyor ve ders temel transistörlerin nasıl çalıştığını ve tasarlandığını anlatarak bitiyor (en azından ben alırken). Bir sonraki dönem EE311 dersinde, bu transistörler kullanılarak analog amplifier devreleri yapılıyor. EE312'de bu amfiler ağırlıklı satürasyonda çalıştırılarak dijital devreler yapılıyor ve temel kapıların (AND, OR, XOR vs) tasarımı gösteriliyor. EE348'de bu temel kapılar ise state machine tasarımları ile "iş yapan" devreler yapılıyor. EE445 ve EE446'da, bu "iş yapan" minik devreler birleştirilerek işlemciler yapılıyor. EE447'de de bu işlemcilere program yazılıyor.

Gördüğünüz gibi bu dersler katman katman diziliyorlar ve aslında birbirilerine bağlılar. Ama diyelim ki EE212'yi anlamadınız, kalan dersler çöp mu? Hayır. EE311'de p-n junction'daki kuantum olayları düşünmüyorsunuz ki? Elinizde transistörün bir matematiksel modeli oluyor, onu kullanıyorsunuz. Yani tranistör'ü fiziksel dünyadan soyutluyorsunuz. Diğer dersler için de böyle. En alttan bir dersi çektiğinizde kule yıkılmıyor. O yüzden bir dersi anlamadığınızda devamını anlayamazsınız diye bir şey yok. Yine de maksimum çaba ile hep anlamaya çalışmalıyız, orası ayrı. Ama anlamadık diye kopmamalıyız.

Çevrenizde varsa mikrodalga/RF üzerinde çalışan bir kişiye tasarım yaparken Maxwell Denklemleri'nin kullanıp kullanmadığını sorun, muhtemelen Hayır cevabını verecektir. Yani doğrudan denklemleri değil, o denklemlerden türetilmiş başka ilişkileri ya da kuralları kullanıyordur. Özü yine Maxwell Denklemleri'ne dayanıyor olabilir. Bu yüzden anlamak adına maksimum efor ile öğrenmeye çalışmalıyız ama öğrenemedik diye devamını yapamam diye düşünmemeliyiz. O konuyu öğrenmek için doğru yer ve doğru zaman henüz oluşmamış olabilir, ileride geriye dönüp daha iyi anlayabiliriz. Kaldı ki temelleri anlamak ve içselleştirmek aslında pratikte bir şeyler yapmaktan daha zordur.

O konuda motivasyonum hiç yok

Ders ise dişinizi sıkın. Çalışma hayatında ise motivasyon kazanmayı denedikten sonra olmuyorsa ısrar etmenin anlamı yok. Herkes, her konuyu sevecek diye bir şey yok. Zaten bir kişinin her konuyu sevmesi de çok olası değil. Sevdiğiniz konuyu bulmaya çalışın, başka verebilecek bir tavsiyem yok bu konuda ne yazık ki.

Öğrenci arkadaşlar için staj dönemleri bu açıdan çok kıymetli. Yapabiliyorsanız stajlarınızı farklı alanlarda staj yapmaya çalışın kendinize neyin uyduğunu daha hızlı bulmak adına.

Başka?

Bu konu uzar gider. Benim görüşlerim kabaca bu şekilde. Herkesin görüşünün olduğu bir konu bu tarz sorular. Sadece benim dediklerimle kendinize bir yol çizmeyin, örnek sayısını arttırmak adına konuşabileceğiniz kişilerle konuşmaya çalışın, ya da izleyin, okuyun.

Ama özetle şunu diyorum:

Paniğe gerek yok, motive olduğumuz bir konuda sakin ve istikrarlı ilerleyelim.

Benden daha uzun yıllar ve daha çeşitli işlerde çalışmış Sn. Bilgem Çakır'ın (aynı bölüm mezunuyuz, hehe) Yalın Kod isimli kanalını şiddetle tavsiye ederek yazımı sonlandırayım. Bu kanalda, kariyer ile ilgili çok güzel içerikler bulunuyor. Bir video şuraya bırakayım, siz oradan devam edersiniz.

Varsa görüş ve yorumlarınızı okumaktan büyük mutluluk duyarım...

Referanslar