Fair warning: This “essay” is going to do quite a bit of rambling, and it’s going to ramble about everything from coding, to generative AI coding, to my life story…to philosophy, to pseudo-philosophy, to sudo philosophy, and eventually to SooHoo-philosophy. My Medium blog has received comments about its rambling nature, and instead of listening I intend to double down here.
Inspired slightly by Learning To Program At The Slowest Rate Possible, please join me as I discuss random topics until I eventually meander to the point.
We begin our journey when I was 17…
Existentialism
The fundamental idea of existentialism is that existence precedes essence. We were not created for a specific purpose, and our lives do not have inherent meaning. We GIVE our lives meaning.
In my life, I have been through more than a few coding interviews. I have had some successes and many more failures, I have been asked to do everything from the Leetcode-easy anagram problem, to minimizing manhattan distances, to language-specific trivia. Sometimes I wonder if I have put too much emphasis on something I might characterize as “narrative-driven thinking.” It’s like every dramatic TV series. Instead of getting wrapped up in things like data structures, algorithms, and promises, I get hung up on the idea that our lives are built around single moments and that some of us are destined for certain things. One computer science professor, in a now viral video, says that our lives are not defined by big decisions but by habits.
Not sure if everyone would agree, but…
Standard interviews are comprehensive, multi-stage, and focused on core competence. I may be drawn to biographies about major tech figures, and their focus on origin stories, quirks, pitches…what have you. But interviewers choose questions, often standardized, and interviewers assess competence. How we got to where we are today is interesting for some, but mostly reserved to little corners of the Internet like blogs.
I wrote my first three lines of code when I was 17 (five if you count closing curly braces, six with a comment). I found a copy of it from Google AI
// Save this code in a file named HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
We knew what it did but didn’t really understand anything else. In hindsight, one may explain the concept of classes, or how you can read lines like the above and identify inputs and outputs. A little later I wrote my first loop, and placed a bad semicolon. The thing did not fail gracefully, it simply ran forever.
Loops, at the time, were a novel concept. We learned to draw algorithmic flowcharts, and how if a counter variable increased, we could check it on every count until some condition was met (ie when the counter was equal to 10). Our high school instructor retired from teaching but made all his lessons public…I could write a post solely on that in the future.
If statements were a game-changer
} else if (message.equals("LAW") || message.equals("Law")
|| message.equals("law")) {
System.out
.println("YOU HAVE NO SOUL. YOU ARE THE REASON OUR CHILDREN WILL NEVER LIVE IN PEACE!");
} else if (message.equals("AOIT") || message.equals("aoit")
|| message.equals("Aoit")) {
System.out.println("No comment. Dumb ass.");
} else if (message.equals("PULSE") || message.equals("Pulse")
|| message.equals("pulse")) {
Scanner vp = new Scanner(System.in);
System.out
.println("Tell me, who is the vice president of the current administration? Tell me: ");
String vpMessage = vp.nextLine();
if (vpMessage.equals("Joe Biden.") || vpMessage.equals("joe biden")
|| vpMessage.equals("joe biden.")
|| vpMessage.equals("biden") || vpMessage.equals("Biden")) {
System.out
.println("Maybe Pulse will be all right...give it five years.");
} else {
The above is a code snippet, and it isn’t pretty. Later on we had the idea to accept user input by first forcing it into lowercase, but I suppose in real code they would not have the option to submit custom text for this to begin with.
I made something renamed AngryChemTeacher using similar logic. Even back then, in high school, someone criticized it and cautioned against sharing it. It didn’t read from a text file. Every function was just clumped into a giant main. It didn’t have any notion of class design, and to run the thing you would have to understand how to take a JAR file and run some commands from a terminal. Even a dedicated few who wanted to run it gave up when they realized how difficult it was.
Many years later, when I understood web frameworks, I turned part of it into a web product. It wasn’t great, either. The design sucked. But it was mine. No AI.
processName(inputName) {
inputName = inputName.toLowerCase();
inputName = inputName.trim();
console.log("value of inputName is " + inputName);
console.log("type is " + typeof inputName);
if (inputName.includes("kai")) {
this.questionText =
"KAI?! GET OUT OF MY CLASS. Just kidding. You're a very good student.";
this.firstGrade = "A";
this.questionText += "(click submit to continue)";
} else if (inputName.includes("zaid")) {
this.questionText = "Zaid? Rock on";
this.questionText += "(click submit to continue)";
} else if (inputName.includes("15/25")) {
this.questionText = "Bonus activated";
this.questionText += "(click submit to continue)";
} else if (inputName.includes("david") || inputName.includes("jon")) {
this.firstGrade = "A";
this.questionText += "(click submit to continue)";
} else if (inputName.includes("stanley")) {
this.firstGrade = "A+";
this.questionText += "(click submit to continue)";
} else {
this.firstGrade = "B+";
this.questionText = "(click submit to continue)";
}
},
The console.log is messy. There should be some sort of user-input sanitization. Using “includes” would mean non-match names would be false positives and the whole 15/25 is odd. Anything else? Oh sure, refactor into TypeScript.
Still, it was code I wrote and humans could point out what worked and didn’t.
When I first started in the field, new team members would come out of college with heuristics. They had rules for what made code bad or poor practice, even if it appeared to work. Code reviews made for continuous improvement.
DSA
Over time, topics become more advanced.
This is a snippet from the final Sudoku solver I submitted in college. It was written in C++
void Puzzle::readInput()
{
char c;
for(int row = 0; row < 9; row++)
{
for(int col = 0; col < 9; col++)
{
cin.get(c);
//NOW DO ERROR
if(c == '\n') //we don't want any of the first 81 characters to be enter...that would mean the string is too short
{
cout << "ERROR: expected <value> saw \\n" << endl;
exit(0); //exit the program
}
else if(!isprint(c)) //WORKS
{
cout << "ERROR: expected <value> saw " << "\\x" << hex << setfill('0') << setw(2) << (unsigned short)c << endl;
//that line originates from Willie H., a tutor
exit(0);
}
else if(cin.eof())
{
cout << "ERROR: expected <value> saw <eof> " << endl;
}
else if( (!isdigit(c) || c == '0') && c != '.' )
{
cout << "Error: expected " << "<value> saw " << c << endl;
exit(0);
}
else
{
//DO WE CAST THIS AS A CHAR?
board[row][col].assignCharacter(c);
}
}
}
cin.get(c);
//now we need to know that they pressed enter
if(c != '\n')
{
cout << "ERROR: expected \\n saw " << c << endl;
}
//otherwise, keep going
Wait…what is this? Why are there still comments questioning whether or not it works? Oh well. Second-year college coding, at least, required some understanding of build systems, class design, and fundamentally significant algorithms such as depth-first search.
Then out of college there was work, where we did C++ stuff and web stuff. Code systems were much bigger. There was hardware to interface with.
A New World With Mandatory AI
I guess if I were forced to make a tl;dr, it would be this: Maybe we should just code for the sake of coding.
Maybe eventually it will all be AI, or AI with careful line-by-line review, or maybe the whole thing will prove too costly and error-prone and the people who avoided AI will come out on top. How many ads are there of non-technical people producing finance apps with two sentences? That’s amazing. And as many are quick to point out in snarky comments, that means everyone with $20 a month can also do it and the skill is no longer valuable. What IS valuable changes depending on which AI CEO or tech influencer or blogger is providing their take this week.
Like Fireship said in his latest video: “All of these AI models are disappointing, except of course for the ones sponsoring this video.”
We still need humans. In five years, maybe we won’t. But maybe we will need humans more than ever to fix all the problems rapid AI-generation has caused.
One upside to AI agents is that I have a lot of instructive code I can talk about. It serves as sample code to teach concepts, but it works and I can make courses around it. Production code I write is proprietary, so I can’t share any of it. Toy code is cheap and shareable.
One downside to AI agents is no one cares. Maybe they would have before, but if I can generate a course with AI then so can anyone else with a $20 subscription. They may as well generate it themselves and see how it goes.
Back to Existentialism
In the world I see, all the gate-keeping is gone. If you can dream it, you can build it. Source code is no more significant then the canvas on which we paint.
Could be like imagining the wishing willow. Yes, gatekeeping could disappear…and what if that’s a bad thing? Imagine a world with no human code reviews, with nothing but automated unit tests. We had struggles before with npm packages and web frameworks and libraries, all the code we were pulling that we had no time to review ourselves. Now there are developers who lack time to even review their own code. The problem with this imagined future is that generated code is not perfect. It’s so imperfect, in fact, that more than a few people I know have argued against using it at all.
Let’s call it…cyberpsychosis. We become so dependent on generative AI that we become incapable of doing anything ourselves. The code is AI. The code issues we flag in code reviews are AI. If anyone asks technical questions, we respond in technical jargon produced entirely by AI. Then near the end of season one we realize that our human brains could not keep up and we require immunosuppressants.
Existentialism…
“Supremacy” is a book that is half about Sam Altman, his origin story and personality and motivations. It’s so grand. It’s like the story of someone singularly focused on a single mission statement, utterly convinced that the utopia awaiting us all is dependent on AGI.
Let the market and the titans duke it out.
Code can be beautiful, or ugly, functional or anything but. Some people love creating it and some people despise it, but it’s written in the service of people. Every bit of code serves a purpose, and attempts to function for some amount of time.
Then it ceases to be, but people who use it or examine it live on. There is not necessarily any grand vision. We are individual contributors paid or who volunteer to build things, with or without AI, and some of us do incredible things that last for years and some of us simply prove things are non-viable due to the market, or due to physics, or because it just didn’t work out.
Until the day the entire fields ends, there’s still a lot to do and fix and make.