Berkay Çubuk

I want to become better engineer

Tue Jan 09 2024

In Wikipedia, engineer is described like this:

“Engineers, as practitioners of engineering, are professionals who invent, design, analyze, build and test machines, complex systems, structures, gadgets and materials to fulfill functional objectives and requirements while considering the limitations imposed by practicality, regulation, safety and cost.”

Yeah, whats wrong with it? Everyone knows that!

Yes, the explanation is correct. But its something you learn what it really means when you experience to become one.

Ok, ok, what are you talking about?


Around end of October 2023 I discovered Jonathan Blow and if you not know him, stop whatever you’re doing and go watch any of his Twitch stream recordings. Thanks to big brother Google, YouTube recommended me Jonathan’s talk at DevGamm 2019 about “Preventing the Collapse of Civilization”. After listening the talk, I started to think what I’m doing and where I’m spending my effort. It made me to question what I’m really solving? What I do is matter to world? Is it gonna make impact? Or its just something that can be achieved by close future AI’s?

To solve hard problems I have to be in an environment that hard problems flow around. Right now, I’m on my own tackling both business and engineering problems so it’s hard to focus on problems that matter. And decided to apply for software engineering jobs (Btw, I’m still interested in especially for relocation so feel free to contact). Currently I develop tailored solutions for my clients. But the projects are usually CRUD (Create, Read, Update and Delete) kind of projects. And not really improving my knowledge and experience in engineering (definetly improves business and communication skills).

After interviewing with few companies in Europe I found out that my knowledge in foundational software engineering concepts is not strong. That’s normal because I was on a mindset “at the end of the day I need to solve problems no matter how great the solution is”. Because of that approach my foundational software engineering knowledge started to fade away as expected. And problems that I’m solving are on the high level so it does not required me to use the foundational knowledge. But I want to note that solving peoples problem is not a bad thing but solving average or simple problems on the long term is not a great plan especially for someone young like me.

So, after this enlightenment I decided and started to lay down my foundational knowledge strongly. And I know that really well, learning is achieved by doing it. They taught me data structures and algorithms in school but without practical use-cases they faded away. In the short-term I’ll be creating small projects that does things I don’t really focus and think about how they work like pathfinding, data storage, version control, lexer, parser, programming language (super basic one), AI basics, language server, multithreading, concurrency, garbage collection, sockets, etc…

Along with the good knowledge of fundemantals an engineer should be able to analyze difference between old and new version of the same software. That requires solid testing of the software because you can’t make sure your new changes continue to work as expected. Everybody knows tests are good and should be written but I’m not writing tests (oh and I know I’m not alone). I should be written tests especially for complex parts of a project and after this point I’ll be writing proper tests for crucial parts. Testing is important but comparing two versions of a system or project and analyzing the results is also important. I’m just like it’s written in PHP and I switched to Golang now it’s fast right? right?

I’m looking to expand my knowledge on Golang, Python and C/C++. Started use Golang in production and happy with it’s performance benefits and simplicity. Just used Python and C for few simple projects, nothing fancy. Will eat the fruits of Python’s AI libraries to get the basics and I think it’s a great language to sketch things out. You may wonder why C? Because C is everywhere and powreful language, also it’ll kinda force you to write things from scratch and I think it’s a good practice. But I don’t want to connect a language, will use what langauge is the best fit for the job (probably not J*va). And at least knowing how to work with Assembly and VHDL is not a bad idea because knowing how to work with hardware is important because our computers depend on them.

Another aspect of the engineering I think is being able to express problems and solutions clearly and that comes with practice. Because of that I’m thinking to weight on blog writing about the technical stuff. As someone who already share projects on YouTube, I’ll continue to do.

So, what are you doing to make impact on the world?


References:

Let's make your dream project real!

Book a call with me and maybe we can combine our forces to make your project a reality.

Book a call now!