Andrew Stellman ๐Ÿ‘พ

@andrewstellman
239 Followers
199 Following
503 Posts
Developer, team lead, musician. Author of O'Reilly Media books including Head First C#, Learning Agile, and Head First PMP. Solving complexity with simplicity.
Websitehttps://www.stellman-greene.com
Twitterhttps://twitter.com/AndrewStellman
LinkedInhttps://www.linkedin.com/in/andrewstellman
GitHubhttps://github.com/andrewstellman/

Turns out it was calling a method that generates a new ID and timestamp right before encoding the message.

Vibe coding is great, until you actually need to turn your headlights on.

Classic โ€œCopilot got me 80% of the way and 100% confusedโ€ fail.

Working on a part of an app that pushes a message to a queue. I wrote a unit test to pull a message off and check the ID and timestamp. They were always wrong.

Spent about ten minutes spinning my wheelsโ€”kept asking Copilot to figure out if it was encoding something wrong, or decoding it weird, or maybe setting a value somewhere it shouldnโ€™t.

Derp, ok, let me actually. Read. The. F*ckn. Code. Jeez.

๐Ÿ‘ But if you give it a prompt like this:

๐๐š๐ฒ ๐š๐ญ๐ญ๐ž๐ง๐ญ๐ข๐จ๐ง ๐ญ๐จ ๐ฌ๐ž๐ฉ๐š๐ซ๐š๐ญ๐ข๐จ๐ง ๐จ๐Ÿ ๐œ๐จ๐ง๐œ๐ž๐ซ๐ง๐ฌ. ๐†๐ข๐ฏ๐ž ๐ฆ๐ž ๐š ๐ฉ๐ฅ๐š๐ง ๐ญ๐จ ๐ฆ๐š๐ค๐ž ๐ฌ๐ฎ๐ซ๐ž ๐ฒ๐จ๐ฎ ๐๐จ ๐ข๐ญ ๐ข๐ง ๐ญ๐ก๐ž ๐œ๐จ๐๐ž ๐ˆ ๐ฃ๐ฎ๐ฌ๐ญ ๐š๐ฌ๐ค๐ž๐ ๐ฒ๐จ๐ฎ ๐ญ๐จ ๐ ๐ž๐ง๐ž๐ซ๐š๐ญ๐ž.

Itโ€™ll often slow down and come back with something pretty reasonable.

Still not perfect, but way better than just asking it to "write the code."

Did you know Copilot can be ๐‘ โ„Ž๐‘œ๐‘๐‘˜๐‘–๐‘›๐‘”๐‘™๐‘ฆ bad at separation of concerns? I meanโ€”super stinky terrible bad.

Like, itโ€™ll give you a class that connects to the database, builds the HTML, sends the email, and logs the user inโ€”all in one class.

Yes, making code readable feels like extra effort while youโ€™re writing... at first. But itโ€™s not. You very quickly build it into your routine. And itโ€™s DEFINITELY worth your timeโ€”future you will thank you.

I wish someone had told me that code is written once, but read over and over againโ€”by other people, and by future you. I eventually read it in Software Engineering at Google, and it clicked instantly. It wouldโ€™ve saved me years of digging through undecipherable code I wrote myself.

Iโ€™ve been making readability a priority for a long time now. Itโ€™s even something I teach new developers in Head First C#, because it changes how you work.

โ€ฆand I donโ€™t think it should be something we pass on to junior developers like itโ€™s inevitable.

I donโ€™t think going through a โ€œsh*tty code phaseโ€ should be a rite of passage. You donโ€™t need years of experience to write code that makes sense laterโ€”you just have to think about how itโ€™ll feel to come back to it.

I want more junior developers to hear that early, because I didnโ€™t.

Every week or two I see that meme where a developer looks at old code, gets mad, then realizes they wrote it.

Itโ€™s funny, right? Weโ€™ve all been there!

Butโ€ฆ

But, honestly, I also feel conflicted about it, because it reinforces a myth thatโ€™s actually kind of damaging: the idea that youโ€™ll always hate your old code. Itโ€™s just part of the job, right?

No!! I donโ€™t think thatโ€™s true at allโ€”writing bad code is NOT part of the jobโ€ฆ

๐Ÿ”น A Java service that uses OpenNLP to extract names and places from incoming data and log them for follow-up.

๐Ÿ”น A Python script that loads a CSV of transaction data, uses scikit-learn to flag potential anomalies, and writes the results to a simple dashboard or log file.

Projects like that are small enough to build in a weekend, but teach you a lot. Youโ€™ll see what the tooling gives you, where it falls short, and how much you still need to think about the rest of the system to make it work.

That kind of thinking gets more valuable, not less.

But you can absolutely start exploring AI without walking away from backend work. One of my favorite ways to do that is by adding a small machine learning feature to something youโ€™ve already built.

For example, a few small learning projects Iโ€™ve seen:

๐Ÿ”น A C# app that pulls customer support messages from a database and uses https://ML.NET to classify them into categoriesโ€”then flags anything the model isnโ€™t confident about.