I’m drunk and I’ll probably regret this, but here’s a drunken rank of things I’ve learned as an engineer for the past 10 years.
- The best way I’ve advanced my career is by changing companies.
- Technology stacks don’t really matter because there are like 15 basic patterns of software engineering in my field that apply. I work in data so it’s not going to be the same as webdev or embedded. But all fields have about 10-20 core principles and the tech stack is just trying to make those things easier, so don’t fret overit.
- There’s a reason why people recommend job hunting. If I’m unsatisfied at a job, it’s probably time to move on.
- I’ve made some good, lifelong friends at companies I’ve worked with. I don’t need to make that a requirement of every place I work. I’ve been perfectly happy working at places where I didn’t form friendships with my coworkers and I’ve been unhappy at places where I made some great friends.
- I’ve learned to be honest with my manager. Not too honest, but honest enough where I can be authentic at work. What’s the worse that can happen? He fire me? I’ll just pick up a new job in 2 weeks.
- If I’m awaken at 2am from being on-call for more than once per quarter, then something is seriously wrong and I will either fix it or quit.
- pour another glass
- Qualities of a good manager share a lot of qualities of a good engineer.
- When I first started, I was enamored with technology and programming and computer science. I’m over it.
- Good code is code that can be understood by a junior engineer. Great code can be understood by a first year CS freshman. The best code is no code at all.
- The most underrated skill to learn as an engineer is how to document. Fuck, someone please teach me how to write good documentation. Seriously, if there’s any recommendations, I’d seriously pay for a course (like probably a lot of money, maybe 1k for a course if it guaranteed that I could write good docs.)
- Related to above, writing good proposals for changes is a great skill.
- Almost every holy war out there (vim vs emacs, mac vs linux, whatever) doesn’t matter… except one. See below.
- The older I get, the more I appreciate dynamic languages. Fuck, I said it. Fight me.
- If I ever find myself thinking I’m the smartest person in the room, it’s time to leave.
- I don’t know why full stack webdevs are paid so poorly. No really, they should be paid like half a mil a year just base salary. Fuck they have to understand both front end AND back end AND how different browsers work AND networking AND databases AND caching AND differences between web and mobile AND omg what the fuck there’s another framework out there that companies want to use? Seriously, why are webdevs paid so little.
- We should hire more interns, they’re awesome. Those energetic little fucks with their ideas. Even better when they can question or criticize something. I love interns.
- Don’t meet your heroes. I paid 5k to take a course by one of my heroes. He’s a brilliant man, but at the end of it I realized that he’s making it up as he goes along like the rest of us.
- Tech stack matters. OK I just said tech stack doesn’t matter, but hear me out. If you hear Python dev vs C++ dev, you think very different things, right? That’s because certain tools are really good at certain jobs. If you’re not sure what you want to do, just do Java. It’s a shitty programming language that’s good at almost everything.
- The greatest programming language ever is lisp. I should learn lisp.
- For beginners, the most lucrative programming language to learn is SQL. Fuck all other languages. If you know SQL and nothing else, you can make bank. Payroll specialtist? Maybe 50k. Payroll specialist who knows SQL? 90k. Average joe with organizational skills at big corp? $40k. Average joe with organization skills AND sql? Call yourself a PM and earn $150k.
- Tests are important but TDD is a damn cult.
- Cushy government jobs are not what they are cracked up to be, at least for early to mid-career engineers. Sure, $120k + bennies + pension sound great, but you’ll be selling your soul to work on esoteric proprietary technology. Much respect to government workers but seriously there’s a reason why the median age for engineers at those places is 50+. Advice does not apply to government contractors.
- Third party recruiters are leeches. However, if you find a good one, seriously develop a good relationship with them. They can help bootstrap your career. How do you know if you have a good one? If they’ve been a third party recruiter for more than 3 years, they’re probably bad. The good ones typically become recruiters are large companies.
- Options are worthless or can make you a millionaire. They’re probably worthless unless the headcount of engineering is more than 100. Then maybe they are worth something within this decade.
- Work from home is the tits. But lack of whiteboarding sucks.
- I’ve never worked at FAANG so I don’t know what I’m missing. But I’ve hired (and not hired) engineers from FAANGs and they don’t know what they’re doing either.
- My self worth is not a function of or correlated with my total compensation. Capitalism is a poor way to determine self-worth.
- Managers have less power than you think. Way less power. If you ever thing, why doesn’t Manager XYZ fire somebody, it’s because they can’t.
- Titles mostly don’t matter. Principal Distinguished Staff Lead Engineer from Whatever Company, whatever. What did you do and what did you accomplish. That’s all people care about.
- Speaking of titles: early in your career, title changes up are nice. Junior to Mid. Mid to Senior. Senior to Lead. Later in your career, title changes down are nice. That way, you can get the same compensation but then get an increase when you’re promoted. In other words, early in your career (<10 years), title changes UP are good because it lets you grow your skills and responsibilities. Later, title changes down are nice because it lets you grow your salary.
- Max out our 401ks.
- Be kind to everyone. Not because it’ll help your career (it will), but because being kind is rewarding by itself.
- If I didn’t learn something from the junior engineer or intern this past month, I wasn’t paying attention.
- Oops I’m out of wine.
- Paying for classes, books, conferences is worth it. I’ve done a few conferences, a few 1.5k courses, many books, and a subscription. Worth it. This way, I can better pretend what I’m doing.
- Seriously, why aren’t webdevs paid more? They know everything!!!
- Carpal tunnel and back problems are no joke. Spend the 1k now on good equipment.
- The smartest man I’ve every worked for was a Math PhD. I’ve learned so much from that guy. I hope he’s doing well.
- Once, in high school, there was thing girl who was a great friend of mine. I mean we talked and hung out and shared a lot of personal stuff over a few years. Then there was a rumor that I liked her or that we were going out or whatever. She didn’t take that too well so she started to ignore me. That didn’t feel too good. I guess this would be the modern equivalent to “ghosting”. I don’t wish her any ill will though, and I hope she’s doing great. I’m sorry I didn’t handle that better.
- I had a girlfriend in 8th grade that I didn’t want to break up with even though I didn’t like her anymore so I just started to ignore her. That was so fucked up. I’m sorry, Lena.
- You know what the best part of being a software engineer is? You can meet and talk to people who think like you. Not necessarily the same interests like sports and TV shows and stuff. But they think about problems the same way you think of them. That’s pretty cool.
- There’s not enough women in technology. What a fucked up industry. That needs to change. I’ve been trying to be more encouraging and helpful to the women engineers in our org, but I don’t know what else to do.
- Same with black engineers. What the hell?
- I’ve never really started hating a language or technology until I started becoming intimately familiar with it. Also, I think a piece of tech is good if I hate it but I simultaneously would recommend it to a client. Fuck Jenkins but man I don’t think I would be commuting software malpractice by recommending it to a new client.
- That being said, git is awful and I have choice but to use it. Also, GUI git tools can go to hell, give me the command line any day. There’s like 7 command lines to memorize, everything else can be googled.
- Since I work in data, I’m going to give a data-specific lessons learned. Fuck pandas.
- My job is easier because I have semi-technical analysts on my team. Semi-technical because they know programming but not software engineering. This is a blessing because if something doesn’t make sense to them, it means that it was probably badly designed. I love the analysts on the team; they’ve helped me grow so much more than the most brilliant engineers.
- Dark mode is great until you’re forced to use light mode (webpage or an unsupported app). That’s why I use light mode.
- I know enough about security to know that I don’t know shit about security.
- Crap I’m out of wine.
- Being a good engineer means knowing best practices. Being a senior engineer means knowing when to break best practices.
- If people are trying to assign blame to a bug or outage, it’s time to move on.
- A lot of progressive companies, especially startups, talk about bringing your “authentic self”. Well what if your authentic self is all about watching porn? Yeah, it’s healthy to keep a barrier between your work and personal life.
- I love drinking with my co-workers during happy hour. I’d rather spend time with kids, family, or friends.
- The best demonstration of great leadership is when my leader took the fall for a mistake that was 100% my fault. You better believe I would’ve walked over fire for her.
- On the same token, the best leaders I’ve been privileged to work under did their best to both advocate for my opinions and also explain to me other opinions ‘that conflict with mine. I’m working hard to be like them.
- Fuck side projects. If you love doing them, great! Even if I had the time to do side-projects, I’m too damn busy writing drunken posts on reddit
- Algorithms and data strictures are important–to a point. I don’t see pharmacist interviews test trivia about organic chemistry. There’s something fucked with our industry’s interview process.
- Damn, those devops guys and gals are f’ing smart. At least those mofos get paid though.
- It’s not important to do what I like. It’s more important to do what I don’t hate.
- The closer I am to the product, the closer I am to driving revnue, the more I feel valued regardless of how technical my work is. This has been true for even the most progressive companies.
- Linux is important even when I was working in all Windows. Why? Because I eventually worked in Linux. So happy for those weekend where I screwed around installing Arch.
- I’ve learned to be wary for ambiguous buzz words like big data. WTF is “big” data? I’ve dealt with 10k rows streaming every 10 minutes in Spark and Kafka and dealt with 1B rows batched up hourly in Python and MySQL. Those labels can go fuck themselves.
- Not all great jobs are in Silicon Valley. But a lot are.
Finally, if you really want to hurt me, don’t downvote I don’t care about that. Just ignore this post. Nothing makes me sadder than when I wrote a long post and then nobody responds. So if you hate this post, just ignore.
Oh shit I found beer: let’s keeping going.
On programming languages:
- I once hated a programming language (C#) until I started using it. Now I hated it but think it’s useful.
- Then I started hating a programming language (C#) and left it and came back. Wow, that programming language has really improved.
- The greatest thing about functional languages is that functions are first class and all other programmers know that.
- No matter how great or superior a language is, it doesn’t matter if people don’t use it.
- Learning a language isn’t hard. It’s learning the ecosystem.
- Pair programming is great, it just takes a lot of time–time that the company usually doesn’t want to spend.
- Working with smart engineers has made me a better coder. Working with smart non-technical co-workers has made me a better engineer.
- Don’t spend time outside of the 9-5 working. Unless you want to because you got a banging project and you’re in the groove. That shit is awesome.
- Happy hours and social hours across teams are 99% just chilling and getting to know coworkers. That’s cool. Every once in a while, the 1% is about a critical project with a critical piece of code and you’re glad you brought up work in a social setting because shit would’ve hit the fan otherwise. I’m not saying that I should hang out with other teams outside of work because of this. I just want to bond. But it sure as hell is a nice perk.
On working from home
- If the company is half remote and half on-site, it’s important to determine if the remote people aren’t treated as second-class citizens. If major decisions are made “at the water cooler”, then it’s better to try to change the company culture (hard) or move on to a different company that treats its remote employees as first class citizens.
- The second worst major downside of working from home is no whiteboard.
- The first major downside of working from home is that it’s hard to learn from coworkers. Unless I’m (a) confident and assertive to ask questions and (b) the company has a culture where remote workers are equivelent to on-site workers, I think it was best that I worked on-side for the first 5 years of my career.
- Everyone knows that tech changes. The tech landscape of the past 10 years has changed dramatically. But fundamentals don’t change very much, especially fundamentals that apply to my field.
- Hacker news and /r/programming is only good to get general ideas and keep up-to-date. The comments are almost worthless.
- There’s a lot of vocal amateurs with strong opinions about technology. Even amateurs published on “respectable” journals and blogs. I found it to keep abreast of the rumors but to figure things out for myself.
- I work at a cutting edge startup and we don’t use the latest XYZ tech that was present at ABC cutting edge tech company. And it turn out, what they usually present is only a small percentage of their engineering department and that most of them are using the same tech we are.
- That being said, it’s important to read the signs. If you want to work with modern tech and you’re company is still doing the majority of it’s development in jQuery, might be time to re-evauluate.
On Data Engineering
- Fuck it I’m a data engineer so I might as well give more specific, target advice/experience
- SQL is king. Databases like MySQL, Postgres, Oracle, SQL Server, SQLite is still supreme. Even if you work with new tech, most of it transfers anyway.
- Most companies aren’t doing streaming. It’s hard and complicated. If you’re 10 years into your career and you don’t know how to work with 10k records per second, don’t worry about it, there’s still jobs out for you.
- Airflow is shit, yes. There are other products out there, but fuck me if Airflow isn’t the most widely used.
- Machine learning projects are highly prone to failure. They’re complicated and hard to implement. Don’t believe me? How easy is it to write fucking unit test a machine learning model? Yeah.
- Our field is new. There’s no good book on data engineering, just go and “do it”. Can’t learn it through a bootcamp and shit. This will probably change in 10 years as we all figure out what the fuck we’re doing.
- People die. Do you want your code to be your legacy? If yes, then spend a lot of time on it because that’s your fucking legacy and you go! But if you are like me, your legacy is surrounded with family, friends, and people in your life and not the code you write. So don’t get too hung up on it.
- Good people write shitty code. Smart people write shitty code. Good coders and good engineers write shitty code. Don’t let code quality be a dependent variable on your self worth.
- I got into tech and coding because tech was my hobby. Now my hobby is is the same as work and work has ruined my hobby. So now if I want to enjoy tech I need to quit my hobby. Or I need to be OK that tech is no longer my hobby and find new hobbies.
- Programming and computer science is like, what, 80 years old? Compare that with any other engineering discipline. Yeah, we collectively don’t know what the fuck we’re doing.
- I’m making pretty good money. Be grateful and appreciate. Also, save.
- I’ve built large platforms and libraries that are used by multiple teams and people for many years. Yet for some reason, the most proud I was of the code I wrote was the small script that was used by me.
- The proudest accomplishment of my career has been helping other people be better at their jobs. That’s probably because I’m destined to be a people manager, so this is probably not helpful to other people.
- When I was looking for a job, I created an updated my Linkedin. I got shit replies and deleted it. Now I use Linkedin to find other candidates to join my company. Bottom line, Linkedin is a lot of noise. I only find it valuable because now, part of my job is contributing to that noise.
- Once, I found out in college that a girl liked me. I didn’t believe it because I had poor self esteem, but then she asked me out. I told her I wasn’t interested even though she was really cool. That was one of the proudest moments in my life because I as mature enough at 19 to say “no” in a mature way.
- /r/cscareerquestions is such a cesspool of ego and misinformation that I don’t know what to do about it. Like, WTF. I want to shake all those people and try to explain to them how the world really is, but they wouldn’t believe me.
On my general feelings right now
- I’m drunk and I usually don’t drink, so I would think that everything I say is probably cringy or terrible
- I feel strongly that people should save and invest money. If you have a 6 figure salary, do your best to max our your 401k please.
- I’ve become what I’ve always hated: someone who works in tech in a career but avoid tech in real life. Maybe that comes with being old.
- /r/ExperiencedDevs is a pretty cool community. Thank you mods. You get way less appreciation than you deserve. Seriously, thank you.
- I probably owe my career, my salary, my life to Reddit. Reddit gets a lot of shit but the communities here have lifted me out of poverty (working at a gas station earning min wage) to learning Linux, SQL, python, C#, Python, and others to get me where I am.
- Kids are great. I don’t have kids by choice. Why? Because I love kids and I’m scared about what kind of father I would be. Oh shit, is that too personal for a post here?
- Once, someone asked me who I looked up to and I said Conan O’brien, and they laughed at me. But I was being serous because on his last show on the Tonight Show, he told his audience to be kind and work hard. It happend during a difficult period of my life, and when I watched him say that, I said, you know what, I’m going to do just that. Because what would I have to lose? And you know what? I’ve met some brilliant people who I’ve learned from over 10+ years because I was kind to them. And I’ve grown a lot by working hard and not being afraid to try new things. And my life is infinitely, infinitely better because of those words. So yes, it might seem silly and even ridiculous to say that I’ve achieved a level of fulfillment in my life because of a late night talk show. But you know what, fuck it, it’s my life and I will proudly say that I owe any success I’ve achieved because a fucking comic on late night television.
I’m highly intoxicated so please disregard anything I say. Also apologies for ranting.
(Reply by DrMcRobot)
On kids. Since you’ve dispensed wisdom, this is the wisdom (I hope) I can offer in return.
I spent most of my 20s and 30s adamant that I would never have kids. I don’t remember exactly why - probably that it was simply too much responsibility, too real and too big - too risky - a change from what was current and comfortable.
My girlfriend at the time was the same. She knew she never wanted kids. But for her it was a critical component of her self identity. All her friends wanted kids, whereas she almost defined herself by her lack of interest in kids. And so when kids came up, I was indifferent - but she would be anti kids to an extent that sometimes made me uncomfortable. She’d express annoyance whereas I’d be like “They’re just being kids, albeit I’m glad they’re not my problem”.
Eventually my girlfriend and I split up. And for a while, I felt like “Finally! Fort the first time in, like, forever I can do what I want to do!” And I did. I watched telly. I played all the videogames. I had no responsibilities to another human being and for all of a few months it was, indeed, grand.
Then I got the point where I’d cleared the backlog of games, I’d caught up on the telly, and I found myself stuck in a rut. I’d come home after work, and I would just… be bored. I wouldn’t know what to do to keep myself occupied until I went to bed.
I realised that all this stuff, this media that I thought was so important to me… Wasn’t. And it was then that I started to really think about what was genuinely important. What I wanted my life to actually be.
10 years later I’m married to an amazing woman, and I have 3 kids (8, 6 and 2). I can’t imagine what the me of 10 years ago would think of my life now. Possibly I needed to got that low point to really understand the value of what I have now. My kids are the most amazing shit. They get in the way of me watching telly and playing games… But on the other hand one of them is super into Harry Potter and experiencing it through her is somehow more enjoyable than when I experienced it for myself. And the 6-year old can be an Olympic-level asshole, but he’s essentially living evidence that predilection for Transformers/Pokémon/videogames/toilet humour is genetic, and all he wants to do is enjoy it with me. And the smallest one, when he’s sad, comes for cuddles and it melts my fucking heart.
And even though looking after them is a fucking ballache, it doesn’t feel like an insurmountable one, like it did when the fear of having kids was all mixed up with the fear of the unknown. I, like so many fathers before me, have figured it out as I’ve gone along, and - again, like so many - realised that (luckily for our species) it’s not actually as difficult as it might look from the outside. You make it work. And some days you don’t, and you feel like shit. And then you remember that your own parents were assholes (i.e. human) sometimes, and they still managed to raise you, right? And your kid still comes to you for a cuddle, and you realise that every time you fuck up, you get a chance to put it right, and that this isn’t a one off test but something you can keep working on for - literally - a lifetime.
I’d never tell someone to have kids. You never know enough about them or their situation. But I would say that sometimes people - like I did - need that little nudge to realise that while “I never want kids” may have been true - and valid - for a long time, that doesn’t mean you can’t change your mind when you’re ready.
Loved your post.