Monday, July 13, 2020

Üniversite/bölüm tercihi

Bu yılki üniversite sınavı (2020 YKS) geçti, Temmuz sonunda puanlar açıklanacak. Yüksek puan alacak sayısalcılar için tıp mı, mühendislik mi sorusu önemli çünkü hem lisans hem de sonrasındaki meslek hayatı ciddi ölçüde farklı.

İdeal bir kariyer ilgi alanlarının, yüksek değer problemlerin, gelecekteki seçeneklerin bolluğunun kesişimidir. Yüksek değer problemlerden kastım insanlar için acil ve önemli olan, çözülmesi için masraftan kaçınmayacakları problemlerdir. Çoğu sağlık problemi böyledir. Bu kriterlere okuma / çalışma şartlarının rahatlığını da ekleyebiliriz.
Tıbbın en büyük avantajı ortalama üstü gelire sahip iş garantisi olması. Saygınlığı yüksek, ilaç reprezantları, hemşireler ve hastalar etrafınızda pervane. İş yerinde kadın-erkek oranı dengeli, tecrüben arttıkça daha çok itibar görüyorsun. Dezavantajlara gelince; bölümü okumak zor, ezber fazla, uzmanlık istiyorsan TUS'u kazanmak zor, üniversite sınavı çabasından fazlasını gerektiriyor. Mesleğe atıldığında mecburi hizmet zorunluluğu var, iş saatleri sabit değil, nöbet var, insanla uğraşıyorsun. Eğer hastanede çalışıyorsan penceresiz odalarda her 10 dakikada bir, günde 100 hasta bakmak zorundasın. Teşhis için yeterli süre olmadığından "aceba doğru karar mı verdim" sorgulamasını sık sık yaşayabilirsin. Örneğin 9 yıl önce Hacettepe'deki bir uzman doktor 10 dakikada annemin bağırsağının dörtte birini ameliyatla alma kararı vermişti. Neyse ki sonrasında gittiğimiz özel doktor 1 saatten fazla vakit ayırarak bize istatistikleri detaylıca anlattı, ben de mühendis olduğumdan o istatistikleri yorumlayabildim ve annemin ameliyat olmamasına karar verdim. Bu olay 9 yıl önce oldu, annem şu an hala gayet sağlıklı. Hacettepe'deki doktoru suçlamıyorum, o şartlarda hızlı karar vermek zorundaydı. Hikayenin ayrıntısını merak edenler şu podcast'imi dinleyebilirler.

Yurt dışında çalışmak istersen tekrar zorlu/maliyetli meslek ve dil sınavlarına girmen gerekiyor. Kendi işini kurmak muayenehane açmaktan ibaret çünkü bunun ötesi ekipmanların pahalı olması nedeniyle ciddi parasal yatırımlar gerektiriyor. Araştırmacı olursan ortalama akademisyene göre daha iyi kazanırsın, hasta bakmak yerine araştırmaya vakit ayırabilirsin, tabi ki ancak iyi bir üniversitede kadro bulabilirsen... Velhasılı ancak tıbbı seven kişinin seçeceği bir bölüm...

Mühendislik bölümleri arasında bilgisayar/yazılım açık ara avantajlı, çünkü iyi bilgisayarcılara talep çok, iyi olmanda kendi gayretin diğer bölümlere göre çok daha belirleyici. İnternetin ve bilgisayarının olması yeterli. Üniversite derslerinin dışında kendin de ek çaba gösterir ve sana yardımcı olacak, seni yönlendirecek insanlara ulaşabilirsen çok iyi bir bilgisayar mühendisi olabilirsin. Hem lisansta daha kolay okuyup sosyalliğe, hobilere zaman ayırabilirsin, hem de meslek hayatın rahat olur. Otomasyon çağında yaşıyoruz, crypto paradan bioinformatiğe kadar her alanda, dünyanın her yerinde çalışabilirsin, dolayısı ile ilgilerini tatmin edebilirsin. Ayrıca home office imkanları geniş, digital nomad olup dünyayı gezebilirsin. Son olarak altyapı yatırım gereksinimleri düşük olduğu için kendi işini kurup büyütmen tıbba göre çok daha kolay. Yenilik yoğun bir alan olduğundan henüz domine edilmemiş işe yarar konular bulabilirsin.

Arada "Elektrik-Elektronik yazıp kendimi bilgisayarda geliştiririm" diyenler oluyor. Bunu diyenler bilgisayarın ne kadar derin bir alan olduğunu bilmiyor, bilgisayarı web sayfası tasarlamak ya da python öğrenmek sanıyor, bu biraz matematiği aritmetikten ibaret sanmaya benziyor. Bilgisayar derinliği olan bir alan ve bilgisayarda gördüğün derslerin çoğu kariyerinde işine yarayacakken elektronikteki derslerin çoğu işine yaramayacak, çektiğin eziyetle kalacaksın. Mühendislik kariyerini inşaa etmek için en iyi temel bilgisayar mühendisliğidir.

Bir başka argüman da "fiziği seviyorum, fizik okumak istiyorum"... Sayısalcıysan tabi ki fiziği seveceksin, ben de seviyorum, okuduğum kitapların, izlediğim videoların önemli bir kısmı fizikle ilgili. Türkiye'deki üniversitelerin fizik bölümlerinin Nobel ödüllü, ilham verici hocalarla dolup taştığını mı sanıyorsun? Ne yapacaksan kendin yapmak zorundasın. Fizikçiye ihtiyaç az, fizik olimpiyatlarında madalya almadıysan fizik okumanı tavsiye etmem. Fiziği seven biri bilgisayarı da sever, bilgisayarı uygulamalı matematik gibi düşünmek lazım, örneğin veri iletiminde hata düzeltme, kriptografi, numerik metodlar. Bilgisayarın fizik ve matematiğe göre avantajı kolayca değer yaratma imkanına sahip olman. Değer yarattığın zaman psikolojik tatmin ve maddi imkanlar da onun doğal sonucu oluyor. İlla fizik diyorsan bilgisayarı bitirdikten sonra fizik alanında çalışabilirsin.

Son olarak "sürekli bilgisayar başında, asosyal bir işte çalışmak istemiyorum" cümlesine cevabım "tüm mühendislik mezunları vakitlerinin neredeyse tamamını bilgisayar başında geçiriyor. Ancak teknisyenlik türü işlerde bilgisayar biraz daha az kullanıyor. Sosyallik sana bağlı, sen ne kadar sosyalleşmek istersen o kadar sosyallerşirsin, zaman içinde yönetimsel işlere de kayabilirsin."

Öğrenmeye ve kendini çok farklı alanlarda geliştirmeye meraklıysan bilgisayar mühendisliği en iyi seçimdir. Hele de benim gibi işini severek yapan, sana yardım edebilecek tecrübeli bir tanıdığın varsa...

Tuesday, July 07, 2020

Software product maturity levels

Software products have three maturity levels:
  1. Product sometimes works.
  2. Product usually works.
  3. Product always works.
Transition from lower to higher maturity levels is achieved through experienced personnelbetter development practices and tests.

Friday, July 03, 2020

Probability of at least one failure

Say you have a system with 3 components (a, b, c), each having a failure probability of 0.1. What is the probability of at least 1 component failing? The standard way is P(at least 1 fail) = 1-P(all pass) = 1-(1-p)^n, where p = 0.1, n = 3 and result being 0.271 in our case.

The longer way is to find all unique failure combinations and their probabilities and sum them up because any of those combinations will satisfy "at least one failure" criteria. Pass probability = 1-0.1 = 0.9. Since fail order is not important, we can use combinations:
  • Failure combinations: abc, a (b and c pass), b (a and c pass), c (a and b pass), ab (c pass), ac (b pass), bc (a pass)
  • Probabilities: 0.1^3, 0.1*0.9^2, 0.1*0.9^2, 0.1*0.9^2, 0.1^2*0.9, 0.1^2*0.9, 0.1^2*0.9
  • At least one failing: abc OR a OR b OR c OR ab OR ac OR bc. In probability, OR is summation, AND is multiplication.
  • Sum: 0.1^3 + 3*0.1*0.9^2 + 3*0.1^2*0.9 = 0.271
  • Check with short solution: 1-(1-p)^n = 1-(1-0.1)^3 = 0.271
We can generalize it as follows. C(n,k) means number of k combinations in a set of n elements:
  • P(At least 1 fail) = C(3,1)*p*(1-p)^2 + C(3,2)*p^2*(1-p) + C(3,3)*p^3
  • k=1..n, sum(C(n,k)*p^k*(1-p)^(n-k))
  • Binomial Theorem: k=0..n, sum(C(n,k) * x^k * y^(n-k)) = (x+y)^n
  • If we use x = p and y = 1-p, we get k=0..n, sum(C(n,k) * p^k * (1-p)^(n-k)) = (p+1-p)^n = 1. The reason that this summation is one is that it represents all possible combinations and sum of probability of all combinations (including no failure case) is 1. 
  • In our case k starts from 1, because. we don’t consider the empty set, i.e. no failure case. Probability of k=0 (no failure) case: C(n,0) * p^0 * (1-p)^(n-0) = (1-p)^n.
  • Subtract k=0 case: k=1..n, sum(C(n,k) * p^k * (1-p)^(n-k)) - (1-p)^n = 1-(1-p)^n, which is equal to the short solution at the beginning of this post.