Haskell đź’ś Vibes / Jappie

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.

18 Likes