Much of my career has been spent doing refactoring, or as I call it, resurrecting spaghetti code. I have went through the classic Hello World tutorial for many languages over the years. In the dark ages, you know, the 1990's, I struggled some with setting up the basic architecture just so I could spit out one line. Tools have improved steadily since then, and I've managed to speed up my Hello World performance tremendously. So much so, that I've done the Hello World for almost everything at this point. My dilemma these days has been the absolute plethora of technologies out there.
I like to learn new technologies. This is good, because as a software engineer, if you stop learning, you start dying.
My method used to be study what you needed to know right here, right now for the current project first. Sometimes it was nothing, because after 30+ years of doing this professionally, I know a lot of stuff. When nothing, I looked around to see what the winners were coming off the newer technologies. Bleeding edge can be painful, though Stack Overflow (make link to my profile) eases the strain these days. Generally, the victors were actually small groups of technologies, such as HTML + CSS + XML. This was not a problem, the groups were obvious and worked together easily. Now there are usually several competitors for the same component.
Technologies are flying off the digital printing press faster than I keep up. At least it seems that way until I poke around a stack that is new to me. Multiple buzzwords really do the same thing, marketers gave fancy names to all the old school Unix components. There aren't obvious front runners. Should I flip a coin between delving deeper into Amazon's stack or Azure? Oh wait, Google has multiple stacks.When I've looked at the underlying technologies, there isn't much difference. It's a dead heat unless you've already got assets in one stack or another.
Where to go next in my learning adventures? I said to myself, "Self, you've always struggled with setting up scaffolding in new architectures, so why don't you do what all the kids these days do and vibe code it? You're a master at fixing spaghetti?". It isn't on my resume, but I have been training AI through gig work with DataAnnotation (contact me if you are interested in a referral) for a couple years. I used ChatGPT for this project, simply because I remembered that name before I remembered Gemini. I'm going to keep the prompts I wrote to myself as that's my IP.
On my first round of ChatGPT, I download zips file that contained text files with the names of files I would have gotten had I not used up my data analysis limit. Cue the 24 hour waiting. Sure, I could pay for a subscription, but part of my goal here is to see how far I get with the free version.
I waited 24 hours, asked it to download files and it did. Most of it. I got another data analysis limit. I unzipped everything and took a look. Today I had a file structure and files. This was an improvement. I took a look at the source files. Here, I'll paste an entire file so you can see the brilliance.
So cool! There is a comment! That's it. Several files look similar to this. Simply amazing.
It still left me a zip file short, so I tried again the next day. Despite ChatGPT claiming it remembers chat history, which it did for the first couple day waits, it totally forgot by the last day. I didn't care to spend another 3 days getting to the same place, so I'm taking what it gave me and going old school. I created a GitHub repo, wrote this blog, and will see what I can get working this coming week.
I am predicting that the future of software project management and engineering is going to be focused on defining the requirements. Funny, I could have told you 25 years ago that the key to creating good software was determining what you wanted that software to do. Learning to write so that AI gets you what you want is still going to take a human.
