Thursday, June 10, 2021

Introduction

A couple of years ago, a senior computer engineering student from Middle East Technical University asked for help with her term project. The project was building an auction server with multiple clients with the C language on Linux. It was relatively easy for me but quite difficult for her because she had not have much guidance in project work. The computer engineering department's method was to "throw them into the sea and let them learn to swim by themselves"(!) And you are expected to do that while you are taking 4 other courses.

As an engineer with 25 years of experience, I saw that computer engineering students have gaps in the following areas:

  • Coding homework and term projects: Translating ideas/abstractions into designs and working, efficient, elegant code (a.k.a. implementation).
    • Reviewing and refactoring code.
    • Efficiently using IDEs like Visual Studio, Eclipse, NetBeans, IntelliJ
    • Efficient debugging, cause of common errors when using C, C++, Java, C#
  • Working with Linux, using Windows Subsystem for Linux.
  • Using GitHub and Google Drive. How to document well.
  • Where and how computer engineering concepts are used.
  • Career planning / coaching
    • What is the intersection of your interests, computer engineering and industry needs?
    • Opportunities in Türkiye and abroad.
    • Gaining experience:
      • "The way to be good at programming is to work (a) a lot (b) on hard problems. And the way to make yourself work on hard problems is to work on some very engaging project."
      • Asking me for project ideas.
      • Internships.
      • Open source projects.
      • Freelancing (TopTal, Turing).
      • Programming competitions (e.g. HackerRank).
    • Focusing on being useful instead of just passing exams.
    • Preparing for interviews. Writing a CV, cover letter, letter of intent, letter of reference.
    • Networking.
      • Working with professors.
      • Industry events.
      • I can act as a speaker in university computer club events.
      • Using social media effectively and building an audience.
    • Academy vs industry. Working in a company vs being an entrepreneur. 
    • The startup ecosystem. Idea - MVP - investment - product - growth - IPO/exit.
    • Support network: Experienced people, investors and peers who could be co-founders.
  • After you start your career
    • Difference between the code you wrote for classes and production code.
    • Marketing yourself.
    • Software systems engineering.
    • Software project management.
    • Handling conflicts with management.
    • Hiring high quality software engineers.
    • Performance evaluation of software engineers.
Since I have experience and interest in all these areas, I can help computer engineering students become better and fulfill their potential, without all the unnecessary tears and pain. What I get in return is working on interesting problems and the joy of helping others. The only thing to keep in mind is that I can only help you if you ask for my help. So feel free to contact me :)

No comments:

Post a Comment