Önce Tasarla, Sonra Yaz: Bir Mühendisin Hayat Dersleri...

Başlatan Erol YILMAZ, 22 Mayıs 2026, 18:09:31

Erol YILMAZ

Jack Ganssle, gömülü sistemler dünyasının duayen isimlerinden biri. 25 yılı aşkın süredir yayınladığı The Embedded Muse dergisinin 500. ve son sayısında,
meslek hayatı boyunca biriktirdiği tavsiyeleri okuyucularıyla paylaşmış.
Aşağıda Türkçeye çevirisini bulacaksınız:

★ Mühendisin Hayat ve İş Felsefesi ★
~ Deneyimli bir mühendisin altın öğütleri ~



Önce tasarlayın. Tasarımı gereksinimlerle (ne kadar netlerse artık) karşılaştırarak kontrol edin. Kod yazmaya ancak ondan sonra başlayın. İyi tasarımın pahalı olduğunu düşünüyorsanız, bir de kötü tasarımın maliyetini hesaplayın.

Ar-Ge'yi (Araştırma ve Geliştirme) birbirine karıştırmayın. Araştırma, bilmediğiniz şeyleri çözmektir. Geliştirme ise ürünü ortaya çıkarmaktır. Benzer şekilde, bir projenin arkasındaki bilimsel temel belirsiz veya şüpheliyse, geliştirmeye başlamadan önce bunu kurallaştırın/netleştirin. İşin içinden çıkmak için önce "A"yı (Araştırmayı) yapın. Bunu yapmamak, proje başarısızlıklarının en büyük nedenlerinden biridir.

Tedarikçiden gelen koda güvenmeyin. Eğer kullanmak zorundaysanız, onu acımasızca eleştirin. Eğer berbat kokuyorsa, muhtemelen berbattır.

Yakın takip (tampon tampona sürüş) yapmayın. Anlamsız, tehlikeli ve inanılmaz derecede kabadır.

İç gözlem yapın ve eylemlerinizi mantığa bürümek (kılıf uydurmak) yerine, onları derinden sorgulayın. Değişime açık olun.

Testin amacı hataları bulmak değil, doğruluğu kanıtlamaktır. Kalite hareketini incelerseniz, bu ilkenin üretimi nasıl devrimcileştirdiğini görürsünüz. Ne yazık ki bu yaklaşım henüz yazılım mühendisliğine sızabilmiş değil.

Kalite hareketini mutlaka çalışın. Buradaki fikirleri kendi mühendisliğinize uygulayın.

Kuantum bilgisayarlarından korkmayın — birçoğumuz onları anlamayacak olsak bile. Eğer işe yararsa, gömülü sistem problemleri için faydalı olursa ve kriyojenik (aşırı soğutma) ortamların dışına çıkıp ölçeklenebilirse, mutlaka bir API'si olacaktır.

Donanımınıza ve yazılımınıza elinizden geldiğince fazla pay (marj) bırakın. Hayatın beklenmedik darbelerine ve aksiliklerine karşı elinizde tamponlar olmasından asla pişman olmazsınız.

Asenkron dijital tasarımın da yeri vardır, ancak zamanlama sorunlarına, cüce sinyallere (runt pulses) ve benzeri problemlere karşı dikkatli olun.

Para biriktirin. İyi bir banka bakiyesi size seçenekler sunar.

Genelgeçer doğrulara karşı temkinli olun. Örneğin: Sırf herkes öyle yapıyor diye bir pull-up direnç değeri seçmeyin; arkasında mühendislik bir nedeniniz olsun. Buton ark sönümlenmesini (debounce) 10 ms yapıyorsanız — neden?

Çevik (Agile) yaklaşımın belki de en büyük katkısı, gereksinimleri ortaya çıkarmanın ne kadar zor olduğunu gözler önüne sermesidir. Makul büyüklükteki herhangi bir proje için bir sistemin tüm özelliklerini kestirmek son derece zordur. Ancak bu durum, süreci tamamen boşlamak için bir bahane olamaz. Sistemin ne yapması gerektiğini bilmiyorsak, müşterinin istediği şeyi teslim edemeyiz. Sırf bu iş zor diye onu atlayamazsınız.

assert() makrosu sizin dostunuzdur.

Yapay zekaya karşı temkinli olun. Neredeyse her şeyi, hayal bile edemeyeceğimiz şekillerde değiştirecek. Beraberinde harika yeteneklerin yanı sıra, bazıları pratik çözümlerin ötesinde olabilecek zorlu mücadeleler de getirecek.

Harika besteciler kendilerini bolca harika müziğe maruz bırakırlar. Harika yazarlar bol bol harika kitap okurlar. Harika programcılar da bol bol harika kod okumalıdır.

Elektronik çalışın. Artık "dijital" diye bir şey kalmadı; birler ve sıfırlar birbirine imkansız derecede yakın, elektromanyetik sorunlar birçok sistemi kasıp kavuruyor ve osiloskopun toyca kullanımı bile insanı yanıltıyor.

Nazik olun.

İyimser kod yazmayın. Kötü şeyler olur. Girdiler çılgın/imkansız değerlere ulaşabilir. Hesaplamanız taşabilir (overflow). Belki de bir kozmik ışın bir GPIO'nun konumunu değiştirebilir (bit-flip). En kötüsünü varsayın ve kodu ona göre yazın.

Yavaşlayın. Kod yazmaya çok çabuk sarılıyoruz, oradan da daha büyük bir hevesle hata ayıklamaya (debugging) koşuyoruz. Çalıştırmadan önce kodunuzu dikkatlice kontrol edin.

Araçlarınızı öğrenmek için zaman ayırın. Çoğu araç, bizim anladığımızdan çok daha fazla yetenek sunar.

Düşünün! Bu bir zamanlar IBM'in mottosuydu ve her duvara kazınmıştı. Bir insan neden düşünmeyi küçümsemek ister ki?

Farklı fikirlere maruz kalmak için zaman zaman ofisten uzaklaşın. Tek bir harika fikrin paha biçilemez bir değeri vardır.

Kodunuzla gurur duyana kadar onu yayınlamayınız. İşçilik önemlidir. Küçük hatalara bile müsamaha göstermeyin — yorum satırlarındaki yazım hatalarına bile.

Ömrümüzün çoğunu çalışarak geçiriyoruz. Bu çabalardan elde etmemiz gereken iki şey var: para kazanmak ve eğlenmek. İkisinden biri tek başına yeterli değildir. Çok çoğumuz güvenlik veya büyük bir maaş uğruna eğlenceden ödün veririz, ancak yıllar roket hızıyla gelip geçer. Kariyerinizle ve seçimlerinizle gurur duymak isteyeceksiniz. Kafası keşkelerle dolu yaşlı bir emekli olmak gerçekten çok üzücüdür.



"Düşün, tasarla, sonra kodla."

Kaynak: https://www.ganssle.com/tem/tem500.html

Benzer Konular (5)