Sunday, November 03, 2024

Career advice for students

Yesterday, we had a meeting organized by ODTÜ KAF, where graduates and students came together to share experiences. We had interesting conversations, focusing on questions like, "I face many difficulties getting an interview, what can I do to increase my chances? How should I present myself in an interview?"
First, expand your network, as it largely determines the opportunities you receive. Attend/organize events like the one yesterday. Look for ways to be useful by volunteering for work you enjoy or can at least tolerate. For example, I teach robotics to kids for free. Since I like engineering and helping others, it's manageable for me, and it allows me to be part of a community. Create online content to make it easier for others to discover you. No one is immune to peer pressure, pick good peers. Be patient; it may take more than a year to see any results.

On the self-development front, strive to be a rational, decent human being who lives in reality, not in the fantasy we are all susceptible to creating for ourselves. Some helpful books are Thinking Fast and Slow, Getting Things Done, and The 7 Habits of Highly Effective People. For more books, click here. In your university courses, get good grades, aim for a CGPA of 3 out of 4 (75%).

While looking for a job, focus on jobs related to your field of study, not so much on your dreams. For example, if you're studying food engineering, don’t try to break into digital marketing or software engineering, as the competition there can be overwhelming for you. Once you’ve established a strong foothold in your field, you can try branching out into other areas. Remember that the position you start in is not your destiny; I have made dramatic career changes three times while staying at the same institution for the past 28 years, transitioning from mechanical engineer to simulation engineer to software engineer.

Use LinkedIn to directly message people working in companies you're interested in. Ask them about the company and how you could contribute. Seek advice on improving your chances of securing an interview and being accepted. Inquire about the approximate salary range for the position you're targeting. Most people will respond positively. Since LinkedIn shows whether any of your contacts are connected to the people you want to reach, you can ask your contact for an introduction or message them on your behalf.

During the interview, avoid saying mundane things like "I like to learn" or "I am a team player". Emphasize that your goal is to create as much value as possible for the people around you and the company, and provide examples (by citing examples from your LinkedIn research) of how you could achieve that.

When you get a job, ask yourself, "How can I create maximum value for the people I interact with?" You can even ask them this question directly; they'll likely appreciate your initiative. These individuals will become your internal network, whose support is crucial. Of course, they need to be people you respect, as your quality of life depends more on them than on the company as a whole. Don’t obsess over what others earn; focus on how you can become more effective in your job. If after a few months, you realize that you dislike the job or don't respect the team, seek advice from an experienced mentor, like me. If your mentor agrees that the problem is not you but the job/team, consider alternatives such as transferring to another department or company.

After I explained how I assist students with their studies, help them find internships and jobs, and provide guidance throughout their careers, I was asked why I help others. I've always been fortunate in many respects, such as having a loving family and living in a relatively stable part of the world. I feel indebted, want to give back, and create value. I already have a comfortable life and don’t need many material possessions. Much of life's meaning lies in helping others navigate this complex world and reducing suffering when it's within my power to do so with little effort.

Thursday, July 18, 2024

Üniversite mi, bölüm mü

2024 YKS üniversite tercihleri ile ilgili son günlerde izlediğim iki videoda "seçim yaparken üniversitenin kalitesi bölümden çok daha önemli" vurgusu yapılınca (video 1, video 2) 27 yıllık mühendis olarak bu yazıyı yazma ihtiyacı hissettim. Bölümden ziyade üniversiteye önem vermenin artılarından bahseden çok da eksilerden bahseden yok.

İyi üniversitelerin en çok vurgulanan faydaları öğrenci kulüplerinin fazla olması, etkileşimde bulunacağın insanların kalitesi ve üniversite networkünden yararlanmak. Burada söylenmeyen husus mezun olduktan sonra kendi okuduğun bölümün dışındaki öğrencilerin profesyonel anlamda sana pek bir faydasının dokunmayacağı. Örneğin Hacettepe öğretmenlikte okurken toplulularda mühendislik ve tıp öğrencileri ile arkadaşlık edebilirsin ama mezun olduktan sonra onların sana iş konusunda destek vermeleri ne kadar mümkün? Bölümden arkadaşların ise staj ve iş bulmana yardım edebilirler, iş yaşamın boyunca onlara danışmaya devam edebilirsin.

Bu arada mühendislik okurken topluluklarda vakit geçirme imkanın az, ben üniversitenin tadını mezun olduktan sonra çıkarabildim, okurken bahar şenlikleri uzaktan duyduğum hoş bir sada idi.

Aileler üniversite adının prestijini kullanmayı seviyor, genelde "bizim çocuk ODTÜ'de okuyor" denir, bölümden bahsedilmez pek. Öğrenci de üniversite sınav badiresini atlattıktan sonra bu itibardan yararlanmak ister. Ama aynı aileler mezuniyet sonrası çocuklarının iyi bir işte çalışmasını daha çok ister. 

Klasik öğrenci hayalleri: "kötü bölüme girsem bile kendimi geliştiririm, yazılım öğrenirim, yüksek ortalama tutturup daha iyi bir bölüme yatay geçiş yaparım, çift anadal yaparım." Bunları başarma olasılığın çok düşük. Bir yıl daha sınava hazırlanmaya mecalin varsa ve "mezuna kalır ve başarı sıralamamı ciddi oranda iyileştiririm" diyebiliyorsan şansın daha fazla.

Geleceği parlak bölümlerin sayısı az. İyi üniversite hevesi ile önü kapalı bir bölümü seçersen pek çok işe başvurman bile mümkün olmaz. İş ilanlarında üniversite adının yazıldığını ben hiç görmedim ama istenen bölümler mutlaka belirtilir.

Örneğin 25K sayısal başarı sıralaması ile Ankara'da devlet okulunda mühendislik istiyorsan ODTÜ Petrol Müh., Hacettepe Kimya Müh. veya Gazi Bilgisayara girebilirsin. Eğer aslolan üniversitedir diyeceksek ODTÜ Petrol'ü yazman gerekir. Bilgisayardan mezun olduğundaki seçenek bolluğu ile petrol veya kimya mühendisliğinden mezun olduğundaki seçenek darlığını dikkate almanı öneririm.

Kritik soru şu: Önündeki 4 yılı mı optimize etmek istersin, 40 yılı mı? Tavsiyem üniversite gözetmeksizin başarı sıralamana uygun bilgisayar mühendisliği bölümlerini yazmandır, nedenlerini daha önceki bir yazımda açıkladım.

Friday, March 29, 2024

Matematik'te ezber yerine mantık yürütme

Dün oğlum 8. Sınıf Master Matematik Soru Bankası'ndaki Ünite Değerlendirme-5, soru 7'nin çözümünü tam anlamadığı için bana sordu:

Sorunun cevap videosunda üçüncü kart olarak BC=16cm çıkması durumunda birden fazla üçgen oluşturulabileceğini, bu nedenle olasılığın 3/4 olduğunu söylüyordu. Birden fazla üçgen oluşması için öne sürülen argüman tek üçgen için bir açı ve iki komşu kenarının bilinmesi gerektiği, eğer açının (soruda C açısı) karşısındaki kenar (16cm) verilirse tek üçgen belirtmeyeceği idi.

Oğluma soruları mümkün olduğunca kural ezberleyerek değil, mantık yürüterek çözmemiz gerektiğini hatırlattım ve şu yolu izledim:

  1. A merkezli ve 16cm yarıçaplı bir çember çizersek bu çember C'den geçen ışını iki noktada (B ve D) keser.
  2. 16cm AC'den (14cm) fazla olduğundan ikinci kesişim C köşesinin üst kısmında kalır (D noktası).
  3. Sorudaki üçgenin oluşabilmesi için çember kesişimi C'nin altında olmalıdır (B). O da ancak bir nokta olabileceğinden üçüncü kartın BC=16cm çıkması durumunda dahi tek üçgen oluşur.
  4. Cevap çözüm videosundaki 3/4 seçeneği değil, 4/4 = 1 seçeneği olmalıdır.

AB verildiğinde C noktasının altında iki kesişim, yani iki üçgen olasılığı ancak AB'nin AC'den az ve BC kenarına ait yükseklikten (h) fazla olması durumunda mümkün, bkz. aşağıdaki B1 ve B2 noktaları. AB uzunluğu yükseklikten de az olursa kesişim olmayacağından üçgen oluşmaz. AB yüksekliğe eşit olursa yine tek üçgen oluşur.

Tuesday, November 28, 2023

Kanban vs. Scrum

Kanban is highly flexible with no fixed timeframes. In Scrum, work effort has to be estimated and organized into fixed-length iterations, known as sprints, typically lasting 2-4 weeks.

Kanban is better for projects with changing priorities, while Scrum is more suited for projects with defined requirements and deliverables. If continuous delivery is essential, Kanban might be the better choice. For projects benefiting from iterative development, Scrum is preferable.
For the type of work I am doing, I prefer using the Kanban method, incorporating daily stand-up meetings where each person speaks for no more than 5 minutes. This ensures that everyone stays focused and that efforts are concentrated on high-priority issues.

Sunday, November 12, 2023

The Case Against Education

"The Case Against Education: Why the Education System Is a Waste of Time and Money" by Bryan Caplan argues that a significant portion of education is not about acquiring useful job skills, but rather about signaling to employers. Caplan suggests that much of education's value comes from the signal it sends about a student's intelligence, conscientiousness, and conformity, rather than from the skills and knowledge they acquire. He believes that this signaling explains why employers value degrees even in fields unrelated to the job. Caplan also argues that this focus on signaling leads to a waste of resources and time, as students are made to learn subjects that are not directly useful to their future careers. He suggests that a more efficient educational system would focus more on vocational training and less on traditional academic education. He dispels many arguments that are taken for granted by looking at actual numbers.

Monday, September 25, 2023

Outsourcing software development

When outsourcing parts of a software development project, you'll need to overcome several challenges:

Clearly Define the Problem and Verification: It's essential to have a detailed design and create prototypes for testing your ideas before writing a statement of work. The outsourcing partner mainly contributes in terms of usability and maintainability, i.e. they should convert the proof of concept that can barely be used by experts to a product that can easily be used by normal people.

Identify Reliable Partners: This is arguably the most challenging step. In the software world, many claim expertise – after all, it's just coding, right? However, the ideal scenario is knowing firsthand that the team or individuals you're considering are truly capable of handling the project. If you are not sure, starting with small scale (~1 week) discovery projects (free of charge) will be helpful.

Manage Budgetary Constraints: As costs rise, so does the bureaucracy and the number of required approvals. One effective way to control cost is to narrow the project's scope and build on top of open source. While it's imperative to obtain the source code from your partner, consider handling documentation, formal verification and maintenance internally.

By adhering to these guidelines, you maintain control over the project and its future maintenance. You also gain access to top-tier talent that might not otherwise join your team, all while potentially reducing costs compared to in-house development.

Friday, September 08, 2023

Cybersecurity

When deciding on the level of cybersecurity rules to enforce, there is always a tradeoff between security and cost (money and more importantly workplace efficiency). Since 100% cybersecurity is not possible, risk tolerance becomes important.

The first step of cybersecurity is identifying the threat: Are you trying to prevent middle school kids from gaining root access to your servers or do you have national security agencies in mind? Are you trying to prevent data leakage or data corruption? If you want to minimize leakage, is your data really worth the protection cost? People confuse value with secrecy. Something valuable does not make it automatically secret. Many things in life are valuable but not secret. In my experience, the real secrets are far less than what is commonly claimed. Classifying threats and security levels requires individuals who are both experts in security and are aware of its costs. Good luck finding them. Your typical security advisor has a vested interest in scaring you enough to sell you expensive products.

Risk averse managers lean on more and stricter rules. Managers become risk averse when the expected value of taking risks is low for them personally, i.e. when managers are punished when a risk is realized but not rewarded enough when the benefits of taking risks are reaped. In other words, when loyalty is more important than competency.

What is worse is that stricter rules may create the illusion of security (Security Theater) but can actually decrease it. For example, if you force employees to change their passwords every week, they will use more predictable passwords and even write them on Post-its and attach them to the side of their screens!

In such an environment, the cost of lower efficiency almost never comes up in management meetings and that cost is passed on to the lower level managers and engineers. If you are a software developer, your build times increase and sometimes fail. You have to spend a week to find out that the security software was blocking it, and inform the IT department to make an exception for your build. Since software is an ever changing field, you face such problems regularly. If there is a security breach, individuals are held responsible and the system is never questioned. In the long run, this causes longer shipping times, low quality, low morale and loss of personnel. In short, less security and less value to secure...

You have to make peace with the fact that a security breach will eventually happen, similar to earthquakes. What I propose is to use a minimal set of malware scanners and to focus on preventing data corruption by having good backup systems in place. Regulary check that you can build back your system from those backups so that a corruption will have minimal impact.

For more, see my previous posts.