A Decade of Code
Wax Nostalgic
Ten years ago, I walked into the Bluewolf office in NYC that overlooked Madison Square Park. I passed someone working in what looked like a phone booth, and I remember thinking, “wow that person must be super important, they have their own office!” After the tour and some brief intros, I was shuttled into that phone booth where my laptop awaited me. Turns out that person started the week before me and there just was no more desk space.
My first project was to help maintain a custom built CMS built using Ruby on Rails for some non-profit in the city. I don’t remember much of about it but I do remember breaking the staging environment, blocking the client from making any changes. Luckily they didn’t notice while my mentor and I panicked to figure out what we broke. Eventually that client contract ended and didn’t renew (for unrelated reasons, I assume), which meant I needed to start learning Salesforce development. 10 years and 6 jobs later, here I am. And if you’d indulge me for a bit, I’d like to share some lessons from along the way.
In No Particular Order, Lessons from a Decade of Code
- Learning vim would probably make me very productive, or at least feel that way. I’ve given up every time I’ve tried
- Everything is a form. It’s just inputs that you’re capturing for some other system to consume. This gives me existential dread sometimes
- Rebuilding is almost never worth it, until it is
- Being very responsive to every slack message will get you lots of praise. It will also quickly burn you out
- I used to think being able to solve problems quickly during live meetings was a skill. It’s actually a a detriment that prevents other people from contributing that leads to poorly thought out solutions and should be discouraged
- The value of meeting plummets after adding more than 3 people. I promise you it should just be an email
- No new feature cycle, from ideation to delivery, should be less than a day. I don’t care how small that change is, it needs to be prioritized like everything else or else you’ll constantly be drowning in “quick changes”
- Processes not only protect the product, but they also protect you. However they should also work for you, not the other way around
- A sustainable pace is critical for any role that you want to last for more than 2 years
- Burnout takes months to recover from. It’s not something you can just take a long weekend to fix, especially if you don’t address the cause when you get back
- Don’t derive your value or your passion from work. It will only hurt you
- Working from home is the best and I would NEVER work in an office again if I had the choice
- Version control is the single most important piece of technology if you’re writing code. It’s the bare minimum and I refuse to work in any environment that doesn’t have it
- Design patterns should serve as inspiration, not as rules to be followed dogmatically
- The agile manifesto itself is really good - it’s a focus on building a process that works for those involved, favoring a frequent feedback loop. If you ever say “that’s not Agile”, you’re missing the point
- Documentation doesn’t get enough love. Code can’t document itself - the code can only do what’s written, it’s bad at showing intent
- You will NEVER beat Excel. You should embrace it and integrate with a spreadsheet instead
- You’ll generally make more money switching jobs than a promotion
- Always ask for more than what you’re making. If a recruiter asks what you’re looking, add 20% over what your currently making. If they ask how much you’re making, lie
- Transactional data should be separate from analytics data. Specifically, putting analytics data on your sObjects like Account is an anti-pattern
- Capture events that happened, not timestamps that imply something. FIGHT ME.
- I hate pair programming and I think it should be ok if you never want to do it
- Favor async over synchronous collaboration
- Giving people the chance to hit that flow state is the cheapest way to make your employees happy
- Invest in good tools (chairs, monitors, desk, etc). You’re using them for at least a third of your day
- You don’t need a side project. If you have one, don’t hesitate to work on it during the work week. You’re getting your work done right? So no one should care and it counts as professional development
- Take the time to experiment with technology. On company time.
- Keep your personal projects off company assets. I don’t know how enforceable those technology tranfers are and I don’t want to find out
- Recognize the signs of burnout - no one is going to do it for you, you have to advocate for yourself
- Getting really good at one thing can be very lucrative as opposed to chasing the latest technologies
- Max out company matching on your retirement account - it’s free money
- You don’t have to be passionate about your job to be good at it
- Your job is not your family. You can (and probably will) develop friendships on a personal level with your coworkers naturally, but the idea that your company can be family is a lie
- You will have trash managers. Leave if you can
- You will have incredible managers who actually do feel family. Thank them often and let them know
- Just because you’re good at your job doesn’t mean you’d be good at managing others doing that job, or that you’d even like management
- Think often what you like about a job. Lean into that. You don’t have to love your job, but maximizing the parts that bring you joy helps
- If software development didn’t pay like it does, I absolutely would do something else, and that’s ok if you feel that way
- Forgive those that came before you. You don’t know what time pressures, uncontrollable circumstances, etc. that led to the state of the codebase. Don’t get angry, just take this into account when you pad your estimates
- Estimates can be pretty arbitrary, but they become less so the more you do them, and they are very important when it comes to planning
- Don’t be the only person that can do your job, there should always be at least two so that you can go on vacation
- Be kind to each other. Avoid toxic interactions and embrace those that bring you joy. This is really hard
- Know which battles to fight. When you stand your ground it’ll be really apparent how much it matters
- You are worth it. You are worth that promotion, that raise, that time off. You deserve to be in that job, you know what you are doing
I could probably do this all day, but this is enough for now. Here’s to 10 more years of code! Thank you everyone that helped get me here because I certaintly did not do it alone. And if you’re starting your journey, I hope I can help you as well.