As someone who only began to write code in any sort of real anger ~4.5 years ago (aged 24, now 28, no computer science background outside of GCSE ICT at 14 years old and messing about with twitch and PC gaming since then, hell I havenāt even done Maths post-16). I feel in a very weird position compared to the industry.
Iāll be very honest when I say this: I hardlucked out getting my $DAYJOB about three years and a half years ago. I staked everything on them, they took a chance on me and to be honest, itās been the best thing that ever happened to me, but every day I have to overcome a ridiculous amount of impostor syndrome and continue to learn and execute things at my own pace. My lovely colleagues, some of whom have been living and breathing this stuff since they were actual children, some with my entire lifetimeās worth of experience in this industry - and it shows - are immensely helpful; also immensely daunting. I started off with just Haskell; work made me learn C, then Python and finally C++ (ew) and still to this day, Haskell is my favourite.
The technical interviews I faced when everyone was hiring about three/four years ago, Iām fairly confident that I could singlehandedly smash today in an afternoon but that was three years ago and back then, I really did not know what I was doing and employers seemed to ask for a lot less. In fairness, one thing that will always stick with me was one interview where I asked if I could use HLS/ghc" and the interviewer replied āDonāt worry about it, I will be your compilerā - itās only in the past year where I have become confident working without HLS to write Haskell code (for smaller snippets and scripts).
This past 1.5 years has been a constant battle of seeing people allegedly ābuildā all these incredible complex things with āAIā and talking about āif youāre not doing this, youāre getting left behindā vs me struggling to even know what the basic elements of what they made even consist of vs my actual $DAYJOB where hilariously enough, I canāt even use many of these tools in this manner for various reasons.
In that same timeframe, my C/Haskell/overall computer knowledge has dramatically improved: partially through self-study, my efforts with the exam board, work etc. I would like to do a computer science Masters one day just for the love of learning.
For example, right now, Iām building a rendering engine in Haskell from scratch with SDL because I want to understand the core internals of it and solidify my linear algebra skills properly. In brief interactions with Gemini, Iām under no illusions that if I left Gemini to build it, it would have done it just fine but for me, I want to understand the rendering pipeline so that I can always reimplement and modify it to my own desires and I can only feel I can do that if I know what it takes in the first place and can reliably replicate it.
My most recent endeavour, I did a similar thing. I wanted to finally understand type families and GHC.Generics and so I learned it. Now I reckon I can wield both at a reasonably competent level since I can independently replicate the solutions outlined in that thread from memory and intuition.
This is where āAIā has me in a real pickle. How can I leverage it in a way that keeps me effective but also does not put in a bind getting me to appear to āsolveā problems I do not fundamentally understand? Right now, I see it as a 20x multiplier to whatever my base level and in order for me to maximise whatever benefit it can give me, I need to increase my base competency first and vigourously.
I have had advice in all directions from many people with varying stakes in me.
I volunteer at a local school teaching 11-14 year olds various ācomputeryā aspects with some colleagues, I even shoehorn in some āThinking With Typesā stuff for the love of the game. For every kid that breaks my heart and just tries to get me to tell them solution thatās already provided for them on the board - or worse - ask one of the LLMs they have available, there is another who will take the model solution, poke and prod it and test its limits and learn with it. For the first group, I wonder what can I do? I only have an hour with them a week, and thatās if Iām not getting slammed with stuff at $DAYJOB.
It was funny seeing those memes about jobs asking for X years of experience for things that existed for less than X years, yet nearly 5 years in, I kind of get it. At the same time, the only reason Iām this good is because Iāve been able to gain that experience in the first place by dedicating that much time and energy to solving the problems Iāve been given. I feel the rush to create AI-first developers can jeopardize that if we lose all the juniors who are comfortable to work around problems in analogue manner.
I donāt know what the future holds for me to be quite honest: all I know is that right now, for me personally, Iām lucky to be in a situation where itās not expected or mandated for me to use AI heavily in my work. It doesnāt mesh well with my personality or risk tolerance. Still, I appreciate those times where it does break the ice for me on something that Iām fundamentally undestanding poorly or am encountering significant inertia to otherwise overcome; at the same time, I also yearn for better access to freely available materials that could the same - something I hope to provide myself one day.