The first thing I learned is that dry erase markers don't work under the shower.
It gets too steamy and awesome ... I'm going to have to find a better solution for efficient shower brainstorming. Some sort of water resistant marker that works on tiles but can be erased without too big a hassle.
tl;dr --> no matter what it seems like, the first price a client suggests is never fair.
Another thing I learned is never again to take a job making a "simple extension to our existing website, it's pretty simple and easy".
At least, I will never again take such a job without raising their suggested price at least 50%.
Admittedly, that's my bad, they gave me an offer and I simply took it without thinking too much about it. Seemed like an easy enough job, the price seemed fair, something that would easily accomodate my normal hourly rate in the time I thought was needed to complete the job. And I like money, it lets me buy food.
I still think I scheduled enough time.
But I forgot to account for the annoyance of working on a legacy system I don't have the first clue about. What's worse, the website seems to have originally been developed in the time when everyone and their grandmother was making a custom CMS.
Yeah, you can't even begin to imagine.
Let me just share a couple cookies from the beautiful source:
if ($admin_super == 1) $superuser = 1;
if (($superuser == 1)) { ...
// added by /../, 16/01/2006, modified 20/12/2007
Yes. That bad.
To make it more fun, the admin interface is made so every form can only handle a single database table.
Naturally my extension requires a data model encompassing many interconnected tables.
But ok, I get it, five years ago my code wasn't exactly perfect either. It still isn't. Maybe I could have done a little better, maybe I would have done worse.
The thing that really gets me though is having to chloroform my coding standards, drag them to a dark alleyway and rape them, listening to their muffled sobs. I cry a little every time! But a choice had to be made, either rewrite this client's whole website, or rape my standards and complete the project within budget, then learn a good lesson and never do this again for cheap.
Oh and I've found at least two possible/obvious security holes so far.
Not to mention that user passwords are stored in plaintext in the database and the admin's password is stored in a config file in plaintext ... oh yeah. Gotta love that!
Good lesson. Taking it to heart ... no matter what it seems like, the first price a client gives is never fair.
PS: the main developer guy specifically warned me that this isn't opensource and I should treat the source with the respect and dignity it deserves
Continue reading about I learned two things today
Semantically similar articles hand-picked by GPT-4
- Lost a freelance project, but gained a knowledge
- Crayons ... best productivity hack ever?
- Webdevs, you have no idea how much you know
- Workflowy is to TODO as git is to svn
- Sometimes your worst code is your best code
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below 👇
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️