Pinned — 28 Oct 2025 #codingStreet-Smart Coding: 30 Ways to Get Better at Coding Without Losing Your Mind
I spent five years in college learning to code.
A stupid dissertation delayed my graduation. But that’s another story.
Most of my five-year program didn’t prepare me for real-world coding. My real coding journey began at my first job, with one Google search: “how to get good at coding.”
I found a lot of conflicting advice:
“Use comments”
“Don’t use comments”
“Do this”
“Don’t do that”
Arrggg!
It took years of trial and error to learn what worked.
I had to survive on-call shifts, talk to stakeholders, and say “no” politely. More importantly, I had to learn that coding takes more than just syntax.
That’s why I wrote Street-Smart Coding— a roadmap of 30 lessons I wish I had when I started. For every dev who’s ever typed “how to get better at coding” into Google or ChatGPT. (Back in my days, I didn’t have ChatGPT… Wait, I sound like a nostalgic grandpa…)
Preview of the first ~12 pages
Inside “Street-Smart Coding”
This isn’t a textbook. It’s a battle-tested guide for your journey from junior/mid-level to senior.
Some lessons are conventional.
Others were learned the hard way.
And a few are weird.
One lesson comes from a TV show. Nope, not Mr. Robot or Silicon Valley. That’s on Chapter #29. It will teach you about problem-solving.
You’ll learn how to:
Google like a pro
Debug without banging your head against a wall
Communicate clearly with non-tech folks
…and 27 more lessons I learned over ten years of mistakes.
Quick update: This week, I finished the first draft of Street-Smart Coding in the Age of AI and already reached out to some of my loyal beta readers. You can preorder your ebook copy starting at just $1.
In case you missed last email, Street-Smart Coding in the Age of AI is book #3 in my Street-Smart Coding collection. It’s a short and actionable guide to help you leverage AI without becoming dependent on it. The first draft sits around 5K words. You can finish it over coffee.
Here are 4 links I thought were worth sharing this week:
#3. If you still use Postman, be aware it was at some point installing Claude plugins and startup hooks. Here are the findings on the official GitHub repo (3min). I just uninstalled it.
(Bzzz…Radio voice) This email was brought to you by… Preorder your copy of Street-Smart Coding in the Age of AI. A short and actionable guide to leverage AI without losing your skills.
I made a list of contributions and achievements in the past year.
I did a quick market research. OK, by research, I mean I asked Gemini.
I came up with a range and an anchor point.
I reached out to an ex-coworker to ask how he asked for a raise.
I reread the chapters on negotiation from Choose Yourself Guide to Wealth.
I wrote a script and had a “what would you do in my shoes?” line ready as fallback.
I texted my “boss” asking for a time slot to discuss a raise.
I was expecting to jump into a call to present my case and “negotiate.”
Instead he asked if we could do it via direct messages.
I texted something like, “It’s been a while, blah, blah, blah… My current rate is $X and I have in mind something between $Y and $Z.”
He replied, “let me check and get back to you.”
Radio silence!
In a 1-on-1 negotiation, you get an immediate answer.
Either “sorry, we can’t do that” or “here’s what I can do for you.”
But this time, a loop was opened in my mind.
The next day, about the same time, I got a text, “Good news! Blah, blah, blah… We are supporting your request to increase your rate to $Y, effective $insertDate. Blah, blah, blah…“
The fastest, easiest, and most awkward salary or rate negotiation I ever had.
Lesson: Always go prepared. Always have a salary range and anchor point in mind. “Ask and you shall receive,” Jesus said. And maybe that could be as fast and easy as some messages via Discord or Slack.
If you’re starting out or already ahead in your coding journey, check out Career Lessons From the Trenches, my free 7-day email course where I distill 10+ years of career lessons into 7 short emails–to help you navigate your coding career.
In another episode of I thought I knew enough about C#…
Today I wanted to “overwrite” the validations of a property from a parent DTO on its child DTO. Let’s say I had a Movie and Clip and needed shorter names for clips.
Just take a look at the attributes on Movie and ShortClip.
usingSystem.ComponentModel.DataAnnotations;namespaceTestProject1;[TestClass]publicclassNewKeywordTests{publicabstractclassMovie{[Required][MinLength(52)]// <--publicstring?Name{get;set;}}publicclassShortClip:Movie{[MaxLength(20)]// <-- Different annotationspublicnewstring?Name{get;set;}// ^^^}[TestMethod]publicvoidNewDoesNotHideValidationAttributes(){varmyClip=newShortClip{Name="AShortName"// ^^^^^// It has less than 20 chars,// so it must be valid, right?};varcontext=newValidationContext(myClip);varvalidationResults=newList<ValidationResult>();boolisValid=Validator.TryValidateObject(myClip,context,validationResults,validateAllProperties:true);Assert.IsTrue(isValid);// ^^^^^// Booom!!!}}
Whaaat?! It didn’t work. The new keyword in the child class hides the property, but not the attributes. Sad trombone!
Sneaking into TryValidateObject() source code, it uses TypeDescriptor.GetProperties() to list the properties to validate, which returns a “merged” list of attributes. [Source].
vardescriptor=TypeDescriptor.GetProperties(myClip.GetType());varattributes=x[0].Attributes;// ^^^^^// Among other attributes:// RequiredAttribute// MinAttribute// MaxAttribute
When I asked Gemini for help, it suggested using virtual and override. And guess what? That doesn’t work either.
On my original code, I ended pulling down the property I wanted to have different annotations to the child classes on the hierarchy.
That’s why you shouldn’t blindly trust AI and build code reading and troubleshooting skills. I cover those skills and more in Street-Smart Coding—A roadmap with 30 lessons to help you code like a pro.
Do you have a book for parents raising two teenager girls?, a guy said.
He was in the next aisle at a bookstore. I was looking for some Christmas presents. I had on my hands Clear Thinking and The Cat Who Saved Books. I was looking for a third book to take advantage of the month’s promotion. The cheapest of the three was free.
The guy kept walking the aisles. An employee started to recommend titles: Think and Grow Rich, The 5:00 Club… Then his daughter said, “I’ve seen this book…I don’t know the title, but its cover is a little brain made of 1-dollar bills…“
“The Psychology of Money,” I said laughing. That moment I knew she was my kind of reading mate. And I knew his after was doing something good: surrounding them with books.
Then I saw it: sometimes a good book covers does all the heavy work for your book. Design your cover so a 13-year-old girl, probably not interested in your subject, could remember your book.
It’s working every day,
Putting bread in your table,
Having a family,
Liking what you do, getting paid for some money for it, and feeling at ease with it.
That’s a true successful person.
A lesson I heard in a Sunday sermon that made me nod in agreement and realize I’m not that far to being successful.