Days Before AI
I can't help but to sometimes miss the days before AI became mainstream. During our exams we used to hand-write code, and when we forgot something we would drag an arrow in between lines to "inject" code into that space on paper.
We would often get stuck on problems and go to Stack Overflow to dig through the answers, and ask our friends to help.
There were absolutely no AI tools and our best assistance was basically the auto-completion feature on IDEs. It was one of the primary reasons why I was using JetBrains products, because they had such good autofill and quality of life features.
We would memorize commonly used functions on matplotlib, Seaborn, pandas etc. and it was like a second nature to us using those functions to code with. We knew the syntax by heart. We had to. We would study and memorize the best sorting algorithms and how they were implemented and solve coding problems on LeetCode and other various platforms. It was genuinely fun and we had to constantly use our brains to solve these problems and to keep our mind fresh for new ones.
The First Glimpse: Copilot
One day I was talking to my friend when GPT models started to come out, thinking how wild it would be to see these tools integrated into an IDE and help you code. Little did I know just a couple of months after that GitHub Copilot would be released and totally revolutionize the way we would write code.
It felt like the future was here. I would type the start of the function and it would complete it line by line, often making mistakes, sure, but it meant that we didn't have to memorize as much anymore. For example I could write a detailed function name such as def draw_line_on_chart(...) and as soon as I did that it would auto complete the parameters and the function itself. It really sped up how we developed at the time. It was useful for creating small functions with basic functionalities and overall just autocompleting variable names. It felt like basic IDE autocomplete but just a bit improved to auto-complete commonly used functions and code snippets.
Then Came ChatGPT
However the updates kept coming, and one day ChatGPT was released. It was not the same tool back then because it would constantly make mistakes on every response possible. We still utilized it of course, but we would always validate its work down to the littlest of the details and we never gave it complex tasks. It felt like the next version of autocomplete right after Copilot. So instead of completing small scale and heavily utilized functions we would use it to help debugging more complex ones. It still didn't perform well but it was certainly a useful tool for newcomers and to debug simple problems.
Why It Never Felt Like Magic
Of course by this point I fully knew how these AI tools worked as I had NLP and Machine Learning courses. Especially on the Machine Learning course my professor was such an incredible teacher (Prof. MUHAMMET GÖKHAN ERDEM) that he started teaching from the most basic example and made us fully grok the full scale of machine learning models and how they worked and their fundamentals from the ground up. I still remember these details from class and can't help but to thank professors and teachers like that who value their jobs and teaching. They make a big impact on our society. They are the foundation for the upcoming minds that will help develop our future. I also had some courses about machine learning in my university in La Sapienza in Rome. So I had a solid foundation. What I'm trying to get to here is that these tools did not feel like magic to me at the time because I could see through them.
After exploring many areas of computer science I decided to proceed with AI as it felt really fun to work with, which in my opinion is the most important part of work, and because it was clearly the future. So I started training my own tiny language models and working on some NLP projects. During our ML class we also built a full Artificial Neural Network on classifying Spotify song genres based on their metadata. I had brought it up to 73% accuracy.
On Exploring Every Option
In general I think whatever work you do it is critical that you explore all the other options. Before I decided to go through with Computer Science I looked at and experienced all the other fields such as Maths, Physics, and Music. You have to do the thing you enjoy otherwise life will be hell on earth. But most importantly you have to explore every option you have to see which ones you truly like. For me it was a no brainer to go with Computer Engineering because I had an analytical mind, I enjoyed maths, but particularly I enjoyed solving puzzles all my life and this work was just… novel puzzles every single day. You had to use the tools you knew and your experience to solve these varying complexity of problems every single day and it felt so satisfying to build something. To be creative. To contribute. It is the main reason why I'm writing this blog, because I want to put something out into the world. I don't want my life to just be thrown away. And I know that this is a very primal instinct, wanting to leave something to this world before you pass away. It's the reason why we make children, or why cavemen used rocks to carve drawings onto the cave walls. We as humans are terrified to be forgotten (of course there are some edge cases like everything in this world). So I want to write these blogs and to lay down my experiences that I've had in this life so that my life has at least been documented to some level of detail. Even if nobody reads this, it's me contributing and adding something to this world that will outlive my biological body.
Anyways, back to the topic.
The Engineer as Puppet Master
Nowadays LLMs have come a long way and they can run tasks end to end given a specific goal with clear requirements. They can spin up multiple agents and coordinate together and validate each other's work. It is almost non existent to write code yourself since an LLM can do it at a much faster rate. The engineer has become the puppet master controlling a fleet of LLMs by their strings. The more detailed prompts you give, the more experience you have, the more know-how you have the better, as these tools still often use bad practices when generating code and repos. So you have to give them clear rules. Such as focusing on object oriented coding and small modular code compared to monolithic implementations. They can still fail, but they keep getting better every day. They have not replaced us yet. They might one day. But still the engineer stands as the architect behind these models. They are strong tools but you still need the technical expertise and the knowledge to operate them at their full potential. And that can only happen if you sit down and actually study.
But still I have to admit, I manually code less and less every single day. Websites like Stack Overflow have died and we almost never consult another human for our coding problems. These agents can do a much better job and answer your queries based on documentation, and most importantly with patience. On Stack Overflow almost every answer was passive aggressive and creating your own posts was a nightmare as moderators would just shut it down. These AI tools are a massive win for learning and diagnosing in this case, because they do not shame you for the simplest of things.
The Future Is Here
I still miss the days we used to code by hand, but the future is here, and it's still rapidly developing, and I'm trying to be a part of it by training these AI models and deploying them and orchestrating them in complex workflows to solve real problems. I am excited to see how these tools will compare to now in 10 years. And what things I would have built by utilizing them.
If you have read this far, thanks for reading. This blog was written by a human. So it might be full of sections where I get distracted and lose the plot, or full of grammatical errors, or overall seem less polished. But that's my goal here. I'm trying to put out real content on the plethora of AI slop.
Anyways. See ya.
