How to Become a Gigacracked Engineer: A Guide
What experience taught me that textbooks never could
You feel a bit directionless when you first start working in tech. A “software engineer” title can mean totally different things from organization to organization. This feels exhilarating but also stressful. If I had a time machine, here’s actionable advice I’d give myself way back when.
Quick disclaimer. There’s a place for all levels of effort/skill/etc. in tech. The advice I’ve written below is for those that want to become a cracked engineer
. You can totally have a successful tech career and earn far more than the median household income if you ignore these. So don’t complain if they’re harsh okay? Not saying you have to do these…unless you want to make a ton of money and have max freedom around how/when/where you work, etc. I know tons of engineers working 9-5 in traditional offices making a far-better-than-average amount of money that are very happy with their lifestyle. That’s the best thing about tech - you can choose exactly what outcome you want. Read on if you wanna be g i g a c r a c k e d.
1. Be Restless
When you get your first tech job, don’t stay too long.
Learn what you are meant to learn on the job then get out into another unfamiliar environment. You can optimize for stability later on in your career but you should optimize for breadth of experience during your early years. I’m not saying that you should transition from backend engineer to UX but hop to another gig and see what’s different. You can learn something everywhere with the right mindset even if you’re learning what you don’t like.
I see rookie devs get all flustered when they’re not working in exactly the language they want to early on. In the grand scheme of things it’s just a blip on the radar, you won’t totally lose your (frankly pitiful at the early stage of your career) command of Python just because you wrote Ruby for a year or two. Language is a bad reason to leave a job over early-career, you should aim to have a few languages in your quiver, all the better if you’re getting paid to ramp up on one. If receiving your paycheck is contingent upon your ability to learn Elixir, you will learn it faster and better than if you’re learning it “just because”. This is how I learned TypeScript, Go, and Ruby - at financial gunpoint.
“But Dr. J! What about the stress?” I hear you say. Again bro this is optional. You can get paid a lot of money to be a software engineer. Like lawyer/doctor money if you decide the tradeoffs for those gigs are worth it for you. Lawyers need to pass the bar, Doctors need to bet big on student loans for medical school, you think they’re not stressed? Don’t believe the ✨day in the life✨ pedants on social media. You have to work hard, at least during the formative years of your career, to make a lot of money. You have to work hard later too but you’ll have built good habits by then so it won’t feel as hard.
2. Find the Right Environment
I’ve worked in tech company offices and in business offices that have a tech department. There is a huge difference between the two.
Non-tech companies employ way more bean counters. Once there’s a bunch of bean counters they’ll naturally start counting the office-amenity-and-benefits beans. Then they’ll do what bean counters do, which is question if the company can do more with less 💁♀️ They’ll start to wonder if the strange, too-casually dressed folks in the “IT department” really need the bean bags, the Sega Genesis game room, and the craft beer on tap. By the way, how much did that fancy espresso machine cost us!? Slowly the office will turn gray - not only the paint but the vibe.
Tech companies have bean counters unless they’re very early-stage but it’s like an acceptable ratio of bean counters to engineers, and you usually have ones that at least “get it” at tech companies. The bean counters count beans which is unpleasant for engineers to do so it’s a huge win to have some of them around. The engineers still hold sway over the culture. The engineers realize (correctly) that they landed a $5 million deal because of a brilliant idea Xavier had in a flash of inspiration while speed running Sonic & Knuckles in the meeting-turned-game-room buzzed on a bit too much Tower Station IPA from the in-office tap at like 10PM.
Engineering is inherently creative work, yes, even with the introduction of LLMs, and probably even more so. Cracked engineers are going to gravitate towards these environments. You want to watch how they work early on so you’re shaped in the correct way.
A disproportionate number of these companies are fully remote. Unless there’s a specific need to be in-office (hardware development, security clearance work, etc.) pragmatic tech companies realize that they can only recruit the best talent by having an office in SF ($$$) or by being remote. The only watch-out at your early career is that you won’t osmosis crackedness unless you create opportunities to do so, e.g. coffee chats with other engineers, IRL meetups, etc. It’s not a non-starter but more of the onus is on you to make the most of it! If you can, a lot of the most talented engineers I know work at fully remote companies.
“I don’t believe you.” Bet. Here’s a few companies (or eras of companies) where engineers ran the show and they created an awesome culture (again era-dependent at some of these).
id Software - started by 3 engineers/engineer-ish creatives in Louisiana (you know, the tech capital of the world)
Basecamp/37signals - DHH + Jason Fried primarily communicating over the net. As much as it pains me to compliment someone as insufferable as DHH it’s a pretty cool founding story.
Figma (early days) - creative-first founders. Sales and ops came later.
3. Don’t Be Insecure
It’s always okay to not know and to say that you don’t know. This is the single biggest thing I wish I could go back in time and tell myself. It’s advice I drill into all of my employees. If you’re putting yourself into the right rooms, the ones you need to be in to become a cracked engineer, you should feel insecure all the time. Feeling insecure should be the norm your first 5ish years in the field. Being insecure is a conscious choice that you can make for yourself every day.
“I don’t know” is the shortest line between two points: where you are and where you want to be.
Here’s how you know you’re working with legendary engineers. You say “I don’t understand what monads are in Haskell.” Then they respond by rambling at you about them for an hour plus seemingly undisturbed that they’ve missed two meetings to not only explain what they are but their strong opinions about where they should be used. This is a true story that happened to me once.
It seems paradoxical - why would a very skilled engineer want to explain a concept that’s probably obvious for them to a brainlet like me? Because they fucking love tech. That’s really the antidote to any kind of insecurity. If you are in love with something you feel insecure but you never choose to be insecure because you know being insecure will keep you from doing what you love. You’ll happily cut off your arm to save your head.
If you are in an environment where you say “I don’t know” and you get the cold shoulder consistently from multiple engineers, that’s a shitty environment, you should hop from that department or even company ASAP. For what it’s worth though I have never encountered this in my entire career. Wherever I’ve worked people have happily explained the tech to me when I hit them with an earnest “I don’t know can you explain it?” Pretty cool thing about this field.
Anyways - hope it serves you well. Did I miss any? What would you tell yourself when you were starting off? Leave it in the comments!