aadv1k
First, it's good to know I am not alone in feeling that a certain world, no longer exists. This is the world where when given a problem, you would spend maybe 3-4 hours scoping it out, doing some research, maybe drawing up some diagrams and then jumping into the code. Coding itself was a necessary part of this process, where it was meditative. You were in this zone between deep and shallow work. It's odd to "reminisce" about coding as if it was such a beautiful thing, in reality it was hard. Required a lot of elbow grease, but it was fulfilling (I wrote 10k LoC over 2 weeks, it isn't about LoC as a metric of good code, it was more about the effort put in felt really tangible)
The world today, is fundamentally different. Today coding is really cheap, even disregarding the best SOTA models, OSS models are catching up in how consistent of an output they produce. Note the word "consistent", I won't say the code wirten by Opus or Sol is "good", but it's consistent enough to where with the right infrastructure around it (aka harnesses) you can get it to work really well.
2 years back, saying "LLMs don't produce good code" was objectively true. They were good for maybe a function, heck I remember AI straight up producing incorrect logic. Today with the right context, the "code quality" (interestignly, quality is a human metric, maintainability would be more apt, and the cost of building a change) is upto par or even better than what I would write on the first iteration.
Given that the cost of coding is now 0, my job becomes to solve problems, in the best way possible, WHILE directing the HLD/LLD of the system to understand the limitations of what I have built. The latter, I only do because it's much faster knwoing a limitation in a codebase than having an agent "recongize" it through a bunch of tests, and loops (it's cheaper too) -- THAT is where my experience really shines, knowing which patterns to apply to what problem and expect what results. Heck, we live in a time, where I can trivially have an LLM run experiments to quantify 3 other approaches at the same time.
Fundamentally what I do, is managing context, scoping problems & requirements, understanding limitations and directing the codebase (again, also drawing from experience, since an LLM may arbitiarily do something which leads to increasing entropy in the codebase)
Think of it like this; If software engineer, was like maintaing a garden, then 5 years back the process was -- think about how you want your garden to look, with this in mind begin planting the right seeds, pruning the bushes, weeding the overgrowth. Today, I have robot to do all that stuff for me, that leaves me a WHOLE lot of time to plan out my garden, thus, today, I can maintain an entire ecosystem instead of a garden. Not the best analogy, but it models my fear of the LLM not "pruning it right" when in the grand scheme of things, it may not matter at all.
Whew, that was long. I just wanted to get my thoughts out haha
I am building an agentic access management platform, where you can simply say "Hey, could you give James access to WorkOS until today?" from any LLM surface (Claude Code, ChatGPT), the platform goes ahead and checks what kind of access SHOULD James have given his department, and role (Product, PM? Viewer; Engineering, SDE-1? Developer; Engineering, SDE-3? Admin) and provides it within an hour. I could speak a lot more about custom policies, roles etc but that's the direction I am taking my product. Working towards a simple phase 1 to deploy at my company.
I am building something in agentic automation space, currently it's still under development, but would love to know your journey of ideating -> building -> getting the first customer -> iterating -> and presumably getting into YC.
Am still relatively new to this (19 lol) so I got a long way, but would really appreciate any insights :)
Cheers! Wish you luck with Context.
It's this paradox where in order to become a senior engineer, you must get hired as a junior engineer, to learn and observe how production software works, but that is pretty hard these days.
I really feel "web dev" is going to get highly commoditized by GenAI, by web dev I mean 99% of building CRUD-adjacent apps, we are already seeing it now with tools like Claude Code etc, this pipeline is just going to get more refined, with tigther testing feedback loops, PR-workflows and a CI/CD deployment pipeline which the GenAI will control. This might be amplified by the fact the sheer amount of tested, high quality there is in the JavaScript-ecosystem for the AI to train on and learn from.
Software engineering in general will tend more systems and embedded software, fields where GenAI can't perform well or can't be trusted to produce good code (I am thinking writing device drivers, or maintainence of legacy C applications) as well as deep research fields. The average software engineering job might be either that of a "technical product manager", or "researcher" or "low-level systems expert"
That's just what I feel. Honestly, I am probably much younger an others on this forum, so I haven't really seen this industry "evolve" this is just how it looks to me now. I believe there was a time in the early 2010s where there was a boom of this "generalist developer" where if you knew your JavaScript-ecosystem (or App Dev ecosystem for that matter) pretty well, you could land a pretty decent job right out of college, or without a college degree at all.
To me, at this stage the world in general needs software engineers who understand the "world" if that makes sense (in terms of physics, mathematics), or who have a really good mental model of computation. Better put, software engineering will become a tool in the larger context of research & development of tech that advance humanity.
I plan on doing this year in C++ because I have never worked with it and AoC is always a good excuse to learn a new language. My college exams just got over, so I have a ton of free time.
Previous attempts:
- in Lua https://github.com/Aadv1k/AdventOfLua2021
- in C https://github.com/Aadv1k/AdventOfC2022
- in Go https://github.com/Aadv1k/AdventOfGo2023
really hope I can get all the stars this time...Cheers, and Merry Cristmas!
Yeah and I'd agree with your point. One BIG critique I have for my own 2-year-past code was that I did not know how to do dynamic heap allocation very well, hence you may have seen everything is stack allocated lol
Particularly egrigeous example:
typedef struct ListingItem {
char lTitle[CONFIG_MAX_PATH_SIZE];
char lDate[CONFIG_MAX_PATH_SIZE];
char lContent[CONFIG_MAX_FILE_SIZE];
char lPath[CONFIG_MAX_PATH_SIZE];
int lOrder;
} ListingItem;
(I had read "clean code" by uncle bob at the time, so I was trying to emulate clean code I saw in the book. Needless to say, pretty good example of the nuance needed when writing clean code haha)So with the V3 release, I am re-writing the markdown compiler for instance, and being a bit more mindful of the structure
Example: https://github.com/Aadv1k/kevlar/blob/markdown-compiler-rewr...
I think once I am done I will create a separate "Show HN" post to get valuable feedback (like this one!) from smarter folks than me. Once again, thanks for the fantastic blog :) will be sure to go through it
Cheers!
Entirely built from scratch in C without any dependencies. Now I wrote this code when I was 16, so many memory leaks and generally issues that I wanted to rectify and begin using third project for my own blog (currently old version is used — https://aadvikpandey.com)
The Kevlar v3 (https://github.com/aadv1k/kevlar/tree/kevlar-v3) here is all that it includes; more spec compliant markdown AST-based parsing; A better .ini config parser (right now it’s literally strtok on ‘=‘ and generally very hacky) as well as name spacing; more powerful templating tags like IF, FOR with lisp-like configuration
Of course staying true to the spirit of “from scratch” :)
Honestly I did scope creeped a little since I mainly wanted to fix a memory leaks issue in the markdown compiler lol; anyway I will share it once it gets completed on hacker news :)
For a while I went deep into OCR, and built a rather rudimentary stroke width transform (https://github.com/aadv1k/swt.h) but again, the results were very hit or miss, likely because I never took the time to understand the logic behind why these functions would work.
1) Optimise many of the functions (a lot of room to use GPU, multi-threading and what not!). 2) Add new functions and improve the existing edge detection ones
I would love to know of a good resource for computer vision, the various algorithms, optimisation techniques etc. Thanks for sharing this project! Cheers
It's intellectual slop. It will get the job done (atleast for a while) but without the actual growth that comes along with it. When I use an AI to one-shot a "small one-off script" I don't learn anything from it (when as a relatively new developer I SHOULD be learning something from it) And this is unlike stack overflow or googling becuase you can turn off your mind, just become one of those drones from Wall-E.
I make a point to avoid using any AI for coding (even for looking things up) when working on personal projects, at the cost of "productivty" and "efficiency" , but I get to retain my humanity and soul in programming.
Sorry if this sounds cheesy, it's just I care deeply about code craftsmanship from my end, to see that skill be diminished to an random number generator? Yeah No.