How to prepare to be a startup founder

Tree growing around bicycle

This is a guest post from Joyce Park. Enjoy.

To my newer colleagues:

Welcome! I’m so excited to have you in the dev community, and honored to hopefully be able to contribute by sharing a few time-tested hints about entrepreneurship and early-stage startups.

I’m a community-taught web developer who has enjoyed 22 years in high-profile startups – mostly writing PHP and React – but also I’ve been a two-time startup co-founder myself, raised $10mm in venture capital, been written up in a bestselling business book (Give and Take), and am co-founder of the world’s largest meetup for entrepreneurial engineers (@106miles). Since the first week of 2005 – so for 17 whole years now! – we have been helping Bay Area techies get the information they need to found startups without getting horribly taken advantage of. And let’s get real here: the whole startup ecosystem is basically designed to take advantage of your technical talents and also your lack of business acumen. Remember that during the Salesforce IPO it turned out Marc Benioff the business founder owned almost a third of the company while Parker Harris the tech founder owned 2.7% – barely more than their first angel investor.

If you even suspect you might want to someday become a startup founder or founding engineer, I’d like to suggest a couple of practical tips that prepare you for that path.

Learn the basics of venture capital

You don’t need to fear venture capital – remember, they work for you! – but you need to understand the mechanics of how the system works. The easy move here is to read this recent book by the operations partner at top VC firm Andreesen Horowitz: Secrets of Sand Hill Road.

“Operations partner” means Kupor’s the guy who makes the checks show up in your bank account on time once someone else decides to invest. So he doesn’t have that much to say about how startups are SELECTED but he can explain much about what happens AFTER the selection process.

You may or may not have already had the opportunity to learn about the venture capital system from the employee point of view, but in either case this is a good quick overview by former Uber dev Gergely Orosz.

However, remember that the entire available stock pool for employees is generally only between 10 – 15% of mostly non-voting shares! It’s super important to your employees but still only one of the interests you will be mandated to balance when you’re a founder – and a minority interest at that.

Make friends outside your business area

The single biggest mistake I see from early engineering founders – and one I have made myself more than once! – is that they don’t understand how to reason backwards from business models to products. In particular, first-time engineering founders tend to believe other people will sign on to their project because the PRODUCT is so cool and not because the BUSINESS is well thought out.

This article provides a very clear example of understanding the difference between hacking features versus hacking business models. Evite was an older, stagnant, undervalued business that got a new CEO who found whole new revenue streams with only minor tweaks to the product. Even extremely technically sophisticated products – Roblox is a great example here – really took off when they started focusing harder on business model rather than cool demo. I’ve gotten to the point where I don’t even want to know about most 106 Miles members’ products… I just want to know what business they think they’re in.

Business models do evolve over time – for instance self-serve subscriptions were really hard in the earlier years of the Web but now are a foundation of modern computing – so I can’t exactly tell you the precise one you will need to master to succeed in the future. However I can guarantee that you will need to understand the major channels by which revenue can flow to your company, which means you need to understand either bizdev (consumer) or sales (enterprise/cloud) or some combo – and in any case you will need to understand marketing.

I can’t emphasize this point enough: if you aren’t willing to learn about revenue and marketing, and think HARD about it, you aren’t ready to be a founder. And I mean you need to drop the engineering-superiority shitkick and learn from a place of humility because the business model is by far the reason most startups fail. If you’re in B2B, you need to go on some “sales calls” (real or mock) where you talk to potential customers. If you’re in B2C you need to understand how the advertising and lead-gen businesses really work. In either case you’ll need to find out how much it costs to run a successful go-to-market campaign.

Since you’re early in your entrepreneurship journey, the easiest way to learn what you need to know is to look for friends in these functional areas who you can bounce ideas off of. If you eventually decide you need a co-founder, that person will likely be from this pool… so there’s some motivation to hit the marketing meetups and schedule some coffees with salespeople you might know.

Speaking of cofounders… I have way too much to say about this topic, but let me just leave you with one tip: before you start a business with someone, go on a long (minimum 10 day) trip under difficult circumstances (hiking, biking, crappy car) with them. NASA does this to quickly shake down space shuttle crews. Their rationale for the long trip is that anyone can front for a weekend but it’s hard to maintain your social mask after about 5 days without the perks of home and money. You’ll quickly find out how the other person tries to solve problems, how they deal with setbacks, and what fundamentally motivates them.

Practice storytelling

Being a founder means that you’re going to be telling your story over and over and over again: to raise money, to launch your product, to market your product, to recruit, and to exit. The more successful you are, the more of your value to the company will be in this area. And yet most tech founders don’t give much thought to communicating their company’s story, and they don’t take opportunities to practice before the skill becomes a life and death issue for the company.

Even though I’ve given many tech talks – and I recommend it as a great way to exercise your presentation muscles! – I learned the most about it from a cheesy-looking book about Steve Jobs: The Presentation Secrets of Steve Jobs.

The number one lesson I took away from this book was to ask myself harder, “Why should anyone care about your thing?” Honestly that’s what every meeting with a funder is going to be about, and if you can’t answer this question crisply, succinctly, and in a way that excites them… you should re-think your project until you can. Don’t just take it from me, take it from Midas List venture capitalist Garry Tan:

Become a founding engineer

When I was a baby entrepreneur, a venture capitalist once said to me, “Everyone in Silicon Valley came here to work in startups” – but this is less and less true now as bigcos have become more and more dominant in the whole tech industry. I honestly find it impossible to imagine going straight from rocking a company hoodie as you ride the company shuttle bus to your job at a FAANG, to a new reality as a grungy startup founder where you’re going to be cleaning up forgotten leftovers in the kitchen and hiring 12 lawyers at a time. The situation is even more stark for entrepreneurial engineers from areas with few tech startups, who maybe didn’t get a lot of opportunities to learn from close contact with founders.

My entire career has been in pre-IPO startups, and I don’t think you can learn what they’re like without working at a couple of them. But also, I feel that being a company founder is a lot like being a novelist: it’s not a career move, it’s more like having malaria – a fever that recurs periodically. By being one of the first five engineers at a newco, you can try out the lifestyle and see a lot of the shenanigans up close and potentially make a lot of money… on someone else’s dime. Yes there are risks, but an unspoken secret of big companies is that they’ll almost always take you back without much hassle.

A lot of 106 Miles members actually end up deciding they don’t actually want to become founders – that the potential rewards aren’t worth the extra stress, or that their idea maybe isn’t quite strong enough for a standalone company but could be valuable to a complementary startup. There’s nothing wrong with any of this! Great founding engineers are worth their weight in gold to a startup, and they are not easy to find.

This might be a good time to say a few words about the role of the founding engineer, because it’s one of the worst-understood roles in the entire tech business. My friend Dan Moore, under whose auspices I am writing this letter to you, has written a well thought out essay about how founding engineers need to be well-informed, wise, and probably pretty senior. Meanwhile I’ve worked at MANY hot startups and Open Source projects where the founding engineers – the guys (and they were 100% guys) who banged out the initial bits for the MVP – were young, smelly, and profane but able to bust out working code on the quick and dirty.

It is so critical for founders to understand that when you do a newco you’re placing two bets – a business bet, and a technical bet – that trade off against each other. The business bet is that you’ll find product-market fit before your tech debt screws you, and then you’ll have the money to hire an experienced team to rewrite your code when it matters. The technical bet is that quality software will make your business work, and then you won’t have any tech debt to deal with going forward because your software will be perfect – but this never happens. Optimize on winning the business bet ASAP by using quick-and-dirty founding engineers, and you’ll see that money-cash-devs can wipe out all your technical debt pretty fast if properly deployed.

What kind of founder do you want to be?

See this tree growing around a bicycle? The tree is your company, and the founders are the bicycle. Less poetically, founders are the cat piss that you can never get out of the carpet. For better or worse, as a founder your strengths and weaknesses, your quirks and blind spots, your early network… all of this will be reproduced in the company in a way that makes it difficult to reverse. The major method by which this happens is hiring, especially hiring people who become leaders in the company early on.

That means if you care about certain organizational practices, you need to address them WAY EARLY. For example, diversity and inclusion: once you hire the first 10 devs, you are very likely to have the same demographic mix that they represent when you have 100 or 1000 devs. Sorry, we all want this to not be true! But if you care about hiring people who reflect your customer base, you need to think about it from DAY ONE. If your product will mostly appeal to women, you better be thinking about how to hire women right away. If your target market is Latinos, better hire some. If you want to bid on military contracts, maybe hire from the ex-mil pool. If you have a plan and stay ready, you won’t have to get ready when things are hectic.

This may not be your specific issue, but all founders need to think about their deepest ethical values before they start – from the point of view of what would be best for the company, not you specifically. As a personal example: because I’ve had multiple life-threatening health conditions and my heirs are all far older and non-technical, I had it written into my contract that if I die my co-founder will vote my shares but all financial proceeds will go to my estate. This allows for the company to continue to function in a way that it couldn’t if my non-technical heirs suddenly were forced to make important decisions for a tech company. When you become a founder the good of ALL THE STAKEHOLDERS in your company becomes your primary responsibility; and although only you can say how you plan to best serve everyone fairly, I’d suggest that you don’t want to end up the subject of lawsuit or a documentary film accusing you of negligence or egomania.

Join a community of founders

This is a bit self-serving, but I’m gonna put it out there: if you want to become a founder, join up with other founders and learn from them. This is the true secret of Silicon Valley: not that their techies are smarter, harder working, or more connected to venture capital – but that they self-selected to want to learn from each other, and the ecosystem has evolved to support that in a million tiny ways. Organizations like my meetup for entrepreneurial engineers, 106 Miles, will help you get connected to practices and people you can ask for help and talk to – even if you end up rejecting their advice. Come visit us when you’re in Silicon Valley! We may be doing more online events soon as well.

Being a startup founder isn’t for everyone, but if it’s something you have an interest in you shouldn’t wait to learn about it and perfect your founder skillset. Start today! Let me know if I can help – although you should know my specialty is being a “disagreeable giver” – and best of luck!

— Your startup buddy, Joyce

Joyce Park has spent 22 years in startups and Open Source projects as an engineer, an eng manager, and a founder. She recently moved back from Silicon Valley to the Seattle area where she grew up.

Your network increases optionality

This is a guest post from Karl Hughes. Enjoy.

Dear new developer,

I was in your shoes in 2011. I was finishing up a degree in mechanical engineering that I would never use and looking for a way to join a startup as a software developer.

Maybe it was the entrepreneur in me, and maybe it was just naivety, but instead of applying for jobs, I decided to start emailing interesting companies instead. I made a list of technology startups in the education industry and emailed each of them my pitch.

Two of them got back to me and one (Uloop) had an office three hours away in Nashville. I drove to meet their CEO and after a few conversations, they brought me on as a freelancer. When I graduated a few months later, they offered me a full-time role managing their blog and writing custom WordPress plugins.

Since then, I’ve worked at three different edtech startups and never once had a formal “job interview.” Every company I’ve worked for has hired me because I met someone there and stayed in touch for months. When a job opened up, they reached out to me to see if I was interested.

My first job hunt showed me that your strength as a software developer is not in your resume, your knowledge of algorithms, your ability to keep up with the hottest frameworks, or even your problem-solving skills. The most powerful tool you have is your network.

The Employer’s Perspective

As a job-seeker, you know that looking for a job is scary, but from an employer’s perspective, hiring is scary too.

After sitting in the hiring manager’s seat several times in the past few years, I can tell you that I’m as scared of hiring the wrong person as you are of screwing up the job interview. If I make a bad hire, I look bad to my boss, and my team’s productivity will suffer. Having to fire someone kills morale and hurts the manager’s reputation, so nobody wants to do it.

This fear is why managers look for people in their networks or work with recruiters. The very last place employers look for applicants is the cold resume bin.

How I Built My Network

If you want to avoid the black hole of submitting your resume online, you need to build a network. I don’t know you well enough to give you a perfect formula for your situation, so I’ll just tell you how I built my network. I hope some of these ideas resonate.

First, I started as a freelancer before I ever had a “real” job as a programmer. Most people don’t recommend this approach for new developers, but it forced me to learn to “sell” myself really well. When I started with Uloop, I often had no idea how to accomplish a task, but I bet that I could learn it before they discovered I was making it up.

After getting that first job, I started attending meetups and conferences regularly. Uloop was a small company, so there wasn’t much opportunity to network within the organization, but I had moved to Chicago, where there were plenty of programming meetups and tech events to attend.

I tried meeting people at these events, but it was hard. I’m not that outgoing, so instead, I would email the event’s speaker or organizer afterward and invite them to a one-on-one coffee or lunch. Some of the people I met like this are among my closest mentors and friends today.

As I attended more meetups and got to know speakers and leaders, people started inviting me to give back. I was little more than a junior developer at the time, but I was asked to speak at bootcamps, meetups, and even a couple of small conferences because of my network.

Naturally, I was nervous the first few times I got up in front of a group to share my experience. I knew there were people in the crowd with decades of experience on me, and I expected them to stand up and call me out if I made any mistakes. I found that practice and gradually increasing the stakes helped me. By trying a talk out at a local meetup and slowly working up to larger audiences at a conference, I gained confidence over time.

Giving a talk at a meetup or conference is a lot of work, and you don’t typically get paid for it. That said, I knew how helpful it was hearing developers who were more experienced than me back when I was first learning to code, so I have always enjoyed the opportunity to give back.

One side effect of speaking is that you get even more opportunities to increase your network. At some point, I switched from being the one asking speakers to meet with me to the one that attendees were asking to speak with. I always enjoy these interactions with new developers, and the opportunity to encourage or help others is my primary motivation for speaking and writing this letter.

Keeping in Touch

Everyone who talks about networking tells you to go out and meet more people, but that’s worthless if you don’t keep in touch with anyone. As I started to meet more people in Chicago, I realized that I needed to come up with a way to have more encounters with each of them.

“It takes on average about 3 encounters — and by that I mean intentional rather than passing interactions where you’ve gotten together primarily to just hang out — to really see if there’s potential for a relationship with someone.” – Brett McKay

The first step was to start a spreadsheet of people I wanted to keep up with. Most of them were more experienced than me, but many were peers or newer developers I “clicked” with or found interesting.

Next, I made a reminder to reach out to 1-2 people on the list every week. I’d ask how they were doing and see if they wanted to get lunch or coffee sometime. I tried to find organic reasons to connect (birthdays, an article related to their industry, etc.) and ask them questions about their lives. One of the easiest ways to make someone like you is to get them talking about something they like. People love talking about themselves.

While this sounds calculated, I do genuinely enjoy these conversations. We’re all busy, but having a system like this ensures that I don’t forget to maintain my network. If I ever feel like I’m no longer getting along with someone, I remove them from my list and no harm is done.

The reason most people don’t do this is that it takes a lot of time. I still spend 4-6 hours per week keeping in touch with or expanding my network. It may seem like a lot, but the investment has paid dividends and afforded me many interesting conversations and relationships along the way. This strategy of intentionally staying in touch with people has led to friendships, co-workers, job offers, and clients.

Make It Yours

No career advice will work for everyone.

I didn’t write this letter to give you a formula for networking, but rather to let you know that unconventional approaches can work. My network has been an invaluable asset, but luck and privilege played a huge part too.

If I hadn’t been able to drive three hours to take a meeting with my future boss, would he have hired me? If I needed to be home after work to help care for a family member, would I have been able to network at Meetups? If I weren’t a white male in an industry dominated by white males, would people have taken the time to meet with me?

I don’t know.

I have no idea what your career path will look like, but I hope my story gives you the courage to build a path that works for you.

Signed,
Karl

Karl is a former CTO and freelance writer. He’s currently the founder of Draft.dev where he helps companies create content that reaches software developers.

Seek feedback loops

Dear new developer,

Feedback loops are so important. (If you’re not sure what that is, I’d recommend “Thinking in Systems”.)

These loops help systems improve. If you don’t have feedback, you’ll improve more slowly, in my experience. Why? Because you won’t know what you are doing that is good and what is garbage. It’s really hard to evaluate that kind of stuff yourself. You can do it, it just takes time and perspective.

And of course, you want to do more of what is good. Here are some kinds of feedback loops which have helped me.

  • tests
  • one to ones
  • public writing
  • being a contractor

Automated tests are a really tight feedback loop. You can make changes to code and know if you’ve blown things up. (Type systems are another tight feedback loop preferred by some.) This is helpful in many situations, including when you are debugging a problem.

One to ones are a great way to gather feedback from your manager on problems, challenges and situations that you have faced. By doing it in a one to one (rather than a one off meeting), you’ll build context and history around these. After all, the tenth time you bring up the fact you find front-end development challenging indicates that this is a pattern, and you should evolve yourself or the position to help with the challenge. When you have your meeting, make sure you ask for feedback explicitly. When you get it, avoid being defensive. If you make it hard to get feedback, you’ll get less.

Public writing, especially a blog, is a great way to get feedback. You’ll be able to put your thoughts out in public. This can be scary and frustrating; some communities are more gentle about feedback than others. But the act of writing forces you to make the implicit explicit. And sharing that knowledge is a great way to get feedback. (Even a lack of response is feedback; what you were writing didn’t resonated with the audience you shared it with.)

I think everyone should try being a contractor. First it makes you appreciative of everyone else in a business, because when you are contracting, you often have to take on roles outside of development (sales, accounting, marketing). But for the purposes of this post, contracting is a great way to get feedback from the market. You’ll learn about which skills are in demand and what organizations will pay for those skills. Of course, you can find this out as an employee, but if you are a contractor, especially a short term one, you’ll be interacting with possible hiring managers much more often than as an employee. And the feedback loop is brutal and blunt: do they hire you or not.

Feedback loops are a key way to find out whether what you are doing is working or not. Seek them out.

Sincerely,

Dan

What’s your best advice for a new developer?

Dear new developer,

Dev.to is a relatively new community of developers. A few years ago, someone on that community asked for advice for junior developers, and I found the answers fascinating. Here are a few of my favorites.

People should respect you. It’s your right to push back against disrespectful interactions. If it’s waved away with “oh, [person] is just like that,” know that a) that is bullshit and b) both the person being disrespectful AND the one dismissing it are wrong. – Sarah Mei

Respectful communication and interaction is the foundation of trust, which is the foundation of team building, which is the foundation of software delivery.

Not getting your pull request through code review first time is okay. Everybody has their own approaches to problems, and a comment on your code review saying “X could be improved by Y because Z” doesn’t necessarily mean you’re not a good enough developer for only thinking of X, rather than Y. It’s usually more a case of your haven’t encountered a scenario that leads you to see the reasoning Z that causes you to use Y over X yet. – Aidan Walters-Williams

We all have something to learn. And our code is not ourselves, so when someone tries to improve our code, they aren’t attacking us.

Reporting a problem you’ve discovered is good, thorough analyses are better, proposing a solution is best. It doesn’t have to be right, it just has to start the discussion. – Dian Fey

It’s always good to go a step beyond reporting a problem because a) additional investigation may reveal it isn’t actually a problem and b) if it is a problem, the more you provide up front, the easier it will be for anyone trying to solve the problem (including future you) to replicate the context and hence investigate the problem with less effort.

There are a lot of great gems in the post.

Sincerely,

Dan

A letter to myself as a fresh software engineer

This is a guest post from Luca Florio, lightly edited. Enjoy.

Dear Self,

You just graduated and you are ready to start your career in the IT field. I cannot spoil anything, but I assure you it will be an interesting ride. I’m writing you this letter because I want to give you some advice that will help you be a better professional. Nothing you won’t learn by yourself in the next few years, but it is something that I wish someone had told me when I started my career. They are not ordered by any means and are all equally important.

Run a marathon, not a sprint.

The road to becoming a good software engineer is a long one. Don’t rush on stuff, and don’t give up just because you are not getting an easy and fast win. Take your time to learn and become good in the topics you are interested in. Remember that this is a marathon, not a sprint.

Be humble, not stupid.

It is good — sorry, it is fundamental — to be humble. There is always something to learn from others, even when you are an experienced professional. But this doesn’t mean that everyone is better than you. You have to respect yourself and your skills. When you don’t respect yourself you become stupid, not humble.

Compare with yourself, not others.

There is no point in comparing yourself with others. There will always be someone better than you in your job. And there will always be someone better than the one that is better than you. And there will… ok, you got the point. Just do your best. If you think someone is a better engineer than you are, learn from him/her. Keep doing your best, and eventually, you will be a reference for someone else.

Respect people, not titles.

During your career, you will work with exceptional professional. Most important, you will meet exceptional human beings. Respect people for who they are, not for the title they have. If “foo” is “Principal Senior Lead Engineering Chief Architect” doesn’t mean that he deserves more respect than “bar” that is a junior software developer.

Choose the challenge, not comfort.

The road will be full of crossroads. There may be multiple choices, but everything boils down to a choice between your comfort zone, or go outside your comfort zone. There may be a moment in your life — hopefully after decades of work — when you will feel the need to cool down a bit because you will be satisfied with what you achieved. Until that moment, try to go out of your comfort zone. It will make you a better professional and you will feel more satisfied with your career. Remember that the best things often happen outside the comfort zone.

Jump on the whiteboard, not on the keyboard.

When you have to design a new feature or a new system, don’t jump on the keyboard to start coding. The “muscle” you have to train and use as an engineer is your brain, not your fingers. Always think before acting. For this reason, jump on the whiteboard instead of the keyboard, and start thinking of what you should implement. Better if you have a sparring partner to challenge your thoughts. Oh, when I say “the whiteboard” I mean “every object that can help you think”, be it pen and paper, a notebook application, draw.io, etc.

Deliver value, not code.

Please don’t be affected by the NIH syndrome. There is no point in reinventing the wheel. Avoid wasting time in something that is already out there. If you can achieve your goal simply glueing together some tools, just do it. What you should deliver as a software engineer is value to your business, not lines of code.

Choose life, not work.

In the IT field, it is easy to focus too much on work. After all, for most of us, it is not just a job, it is passion. Remember that work is important, but life is more. Live a meaningful and rich life. Play sports, read books, find hobbies, travel and see the beautiful world we are living in. Hangout with friends, find a partner for your life and give to your partner all the love, attention, and support that you can. You’ll be surprised how much having a rich life will improve you as a professional.

That’s all I can tell you right now. I still have a lot to learn.

One last thing: enjoy the ride! 🚀

With love,

(a more experienced) You.

Previously published at florio.dev.

Luca Florio is a Software Engineer working remotely for Pleo, a Danish startup. He loves to study new things and share what he learns in his blog.

How to go through a layoff

Dear new developer,

At some point in your career, you might get laid off. This is different than being fired for performance reasons (which might happen too, unfortunately). First off, I am not a lawyer, so this is based on experience, reading and research, not a law degree.

Please don’t take this as legal advice or anything other than an informative blog post.

So, you get called in for the meeting. Your boss is there. Likely someone from HR is there. They tell you the news that the company has decided to part ways with you.

Your heart sinks. You get a big fat packet of paper. The HR person runs through it quickly and asks if you have any questions. You feel a bit dazed.

Take a deep breath. Realize that no matter how crushing this feels, two things are true:

  • this isn’t personal.
  • you’ll get through this.

Ask any questions you have. Some important questions:

  • when do you have to sign this packet of documents by
  • is there a severance, and if so, how much
  • what about other things that were yours (401k, FSA, HSA)
  • how to say goodbye to your teammates
  • what about other things that are the company’s (computer, books, equipment, etc)
  • who at the company you should contact if you have other questions

Don’t be unprofessional. Don’t get mad.

Don’t try to get your job back (it’s gone, sorry!). Don’t agree to anything other than reviewing the paperwork.

Make sure they have a non work email for you so they can send you additional docs if needed.

By the way, if they have their act together, you won’t have access to your work accounts after the meeting, for better or worse.

You can ask why you are being let go. Don’t be surprised if you don’t get many details.

Email or LinkedIn are good options for saying goodbye. Write a quick note to your former co-workers stating that you enjoyed working with them. You can express regret at leaving, but there’s no sense in badmouthing anyone. You never know if you’ll end up working with these folks again.

After the meeting, take some notes on what happened during the meeting. Use your own computer or a notebook. This will help make sure you understood everything that happened. If you want, add some details about anything leading up to the layoff (some things are more obvious warning signs in retrospect, and you want to remember them in the future).

Before you sign anything, it’s always a good idea to run any agreement by an employment lawyer. Yes, they cost a lot of money ($X00/hr) but they’ve seen these kind of contracts before and are legally obligated to do right by you–unlike the company’s lawyers who wrote up the agreements, who are obligated to look out for the company. At this point it’s “just business”, and you want to protect yourself. Ask the lawyer for their advice (“does this seem reasonable, are there other clauses I should ask for”), but make clear your budget and timeline. (If you don’t know a lawyer, ask for a referral from a friend.) There may be some back and forth with the company over the documents.

After the lawyer has looked any agreements and you’ve had some time to think, you can sign the agreement. Or you don’t, based on their advice and your feelings.

After that take a bit of time to grieve, if you can. Even if the company or job wasn’t the perfect fit for you, it hurts to part ways.

Then, roll up your sleeves and start looking for a new opportunity. Is it time to try contracting? Maybe something else that is risky? Or to reach out to your network and see what is available?

A layoff feels like a defeat. But you’ll get through it.

Sincerely,

Dan

“It never gets easier, you just go faster.”

Dear New Developer,

Congratulations! Let’s take a moment to celebrate the decision you’ve made to launch or redirect your career. What lies ahead is a lot of hard work, satisfaction, the occasional desire to throw your laptop out a window, and a ton of learning. That’s true of most professions, so you’re also in good company.

As a developer, you will solve a thousand puzzles, and then a thousand more. Your brain will stretch and grow. You will dream about databases or pixels or curly braces. I once had a dream where I was walking down a hallway, but the hallway was my code. It was a good dream. I found a bug.

Greg LeMond, a pro cyclist and three-time Tour de France winner, once said something about cycling that I want to share with you: lemond

“It never gets easier, you just go faster.”

In so many ways, that describes a career in software. The puzzles you struggle with today will be easy in a month or a year. You’ll learn new patterns and best practices. Then you’ll take on new, harder challenges. You’ll struggle with those and learn and grow. Then you’ll start the cycle (pun intended) all over again.

Something I’ll add, though, is that you’ll be able to approach later challenges with more experience and confidence. What we bring to our jobs is an accumulation of skills and experience. This isn’t linear. It sometimes goes smoothly, sometimes it’s faster than we imagine possible. Then there are stretches where it feels like we’re clambering around in the dark.

For instance, I was once asked to write a WAP application (think super early mobile apps before smart phones existed). I had absolutely no idea what I was doing and I was mostly left alone on the project. I started by drawing some screens, took a deep breath, and started building. It was really tough going, but so many lessons have stuck with me from that experience. My skills at breaking down challenges and approaching them bit by bit really improved. I became comfortable throwing away code because the first code I wrote was atrocious. Plus, the project was eventually canceled, which was entirely the right business decision. Through that, I learned about evaluating tradeoffs in terms of business value—my time was better spent on higher priority projects.

In my current adventure, nearly 20 years later, I’m once again writing a mobile app and applying all of those lessons. Picking up languages and frameworks that I haven’t used before is far less daunting. Ensuring that I’m working on the most important thing is a constant recalibration, but one that is comfortable now. Working through stumbling blocks one at a time and having patterns for getting through them is second nature.

Just like learning isn’t linear, neither are careers. Your path will be your own. What you are doing today may or may not be what you’re doing in ten years. You might go into any number of other areas in software, or stay the course as a developer. It’s your life and all those choices are equally valid. One of my former colleagues quit to make hand-built microphones; another makes goat cheese in the Catalan Pyrenees. My personal philosophy is that at each opportunity to make a career decision, you should pick the direction that interests you most. Just like you learn faster when you are interested in your subject, you will ship better software (or make better cheese) when you are interested in your job.

There’s much more I’d love to tell you, but this letter is growing long. I’ll add some concise tidbits before I end.

  • You belong here. Try not to doubt that.
  • Get really good at debugging. It’s a skill and you will need it.
  • If you don’t respect your boss, or if they don’t respect you back, go find a new one.
  • Learning is part of your job. Make time for it.
  • Don’t be afraid to put your code in production.
  • Be a good team member. You will accomplish more and learn faster.
  • Ask lots of questions. Someone else probably wants to hear the answer.
  • And finally, have fun! You’ve got this!

I wish you all the luck in the world!

Sincerely,
Rebecca Campbell

Rebecca Campbell said “hello, world” to software development more than 20 years ago. She started as a developer before moving into team management and then senior leadership, and is currently working on co-founding a startup. She blogs sporadically at nerdygirl.com.

The best career advice I’ve ever gotten

This is a guest blog post, lightly edited, from Josh Doody. Enjoy.

Dear new developer,

Let’s talk about jobs.

My first job

I was 25, and I wanted to move my career along as quickly as possible. I had my first real job, and had gotten three raises and a promotion in only two and a half years, nudging my salary up 12% from when I started. I was feeling pretty good.

Then two things happened that changed my career’s trajectory. First, my boss told me that striving for big raises and promotions would get me nowhere. “The way things work around here,” he said, “is you might get a big raise one year, or even two raises, but they’ll eventually work out so that you’re right back at the average. It’s hard to get ahead or fall behind.” He meant that I might be on top now, but eventually I’d regress to the mean. My boss had been working at the company for 30 years, so he knew what he was talking about. Ouch.

Second, I had been begging for a new challenge and just hadn’t gotten one. I had been looking for ways to stay interested, but got more and more bored, so I asked my boss for a new challenge. He eventually offered me a new opportunity: the same work I had been doing, but in a crummier location. I asked if we could keep looking.

A couple of months later, my boss came to me with yet another opportunity: I would move to a different building and redraw schematics for a 20-year-old piece of test equipment. I could hardly believe it, but he’d actually found a worse position than the one I’d already turned down.

But he made it clear that I couldn’t keep saying no to these opportunities—I was being too picky, and it was making both him and me look bad—so I reluctantly accepted the position.

I moved from a building where I had tons of friends and a 10-minute commute to a building where I had no friends and a 40-minute commute. The clock was ticking on my time at that first job.

Looking for something new

I started looking for a new job for two reasons: first, I needed to get out of there; but second, I wanted to know if I was over-valuing my abilities. I was young but self-aware enough to realize that one very plausible explanation for my frustration was that I just wasn’t very good at what I was doing. Maybe my boss was in the uncomfortable position of having a really ambitious, but really ineffective employee on his hands. Maybe he had done everything he could to pacify me without putting me on an important project that I would just screw up.

Around this time, a friend reached out asking if I knew any web developers looking for work. I told him that I did know someone…me! I had a little bit of web development experience and after we talked, he suggested I might be a good fit for his startup’s client services team. I interviewed with the company’s CCO and he offered me a job as a Project Manager. I had also been interviewing for a managerial position in a different city and, although I didn’t get that job, those two opportunities reassured me that I was a valuable enough employee to take seriously. I happily took the Project Manager job at the start-up.

Before I could start my new job, I had to wrap things up at my old job. Ironically, my manager on my temporary project (redrawing old schematics) had been the best boss I’d worked for my whole time there. On one of my last days, as we were looking over some schematics, he gave me the best career advice I’d ever gotten:

Josh, your first job is where you get your first job. Your second job is where you get experience. Your third job is where you get paid.

My second job

My second job meant a career change from electrical engineering to project management. I took a small pay cut, but that was completely reasonable considering I had no client-facing experience. I went on to work there for five years, scratching and clawing my way to a slightly higher salary than I’d been making as an engineer.

Of course, the money wasn’t what I was after—I wanted experience, and I found it by pursuing unusual opportunities, including a “special project” that ended up being crushed after nine months and getting me laid off. But they soon hired me back to work in a different capacity, which again provided great experience for slightly less pay. This position marked my second pay cut since starting my career, and I was making exactly the same salary I’d made as a test engineer, five years earlier. But by then, I had amazing experience and was in a position to move nowhere but up.

After five years in my second job, I finished up my MBA, which I’d been pursuing on the weekends. I decided to quit and take some time off to travel, relax and recharge.

My third job

After my hiatus, an old colleague from the start-up reached out from a different company: “You looking for work?” I was, and my experience landed me my third job, where I would make almost 30% more money than I had been making when I quit the start-up eight months earlier. Just like my sage manager said, my third job was where I got paid.

I’m glad I heard that advice during my first job, because it allowed me keep putting in time when things got tough. I knew that getting paid was inevitable if I continued to do good work and gain experience. That advice allowed me to stop obsessing over raises and promotions and start focusing on trying new things and building my resume so that when I did encounter a lucrative opportunity, I would be ready.

Sincerely,

Josh

Previously published on JoshDoody.com

Josh Doody is a salary negotiation coach who helps experienced software developers negotiate job offers from big tech companies like Google and Amazon. He also wrote Fearless Salary Negotiation: A step-by-step guide to getting paid what you’re worth to help software developers navigate job interviews and salary discussions to earn more throughout their careers.

Be Adaptable and Authentic

This is a guest post from Morgan Whaley, lightly edited. Enjoy.

Dear new developer,

Honestly my #1 piece of career or technical advice to new developers is:

Be adaptable and authentic.

I don’t think there is any one magic bullet to helping someone “break into” a job, or business, or new city. Humans are all different and the beauty of diversity in industry and environments is when everyone truly brings themselves and overrides the homogenization that we accuse modern cities and tech of becoming.

If something isn’t working, there’s “no harm, no foul” in changing approaches, or taking a break, or simply admitting something isn’t working.

I see a lot of people who treat that first job like it’s a task they gotta beat into submission and they tie so much self-worth to it. Which is completely understandable… but the more you resist a situation and don’t remain open to possibilities, the more you are going to run into brick walls.

Morgan

PS Also, LEAVE YOUR HOUSE AND GO TALK TO PEOPLE FACE TO FACE OH MY GOD PLEASE IT’LL BE OK.

Morgan Whaley is a Senior Prototype Architect at Charter Communications.

You have to fit the job

Dear new developer,

A few years ago I was job hunting (during a hot job market and with almost two decades of experience) and had a lot of people turn me down or say I wasn’t a good fit. Sometimes it was for coding ability, sometimes it was for familiarity with various systems, sometimes it was because I wanted too much money. I have turned down or left jobs for a variety of reasons, including money, demands on my time, or even just a bad feeling.

What I want to drive home, dear new developer, is that a job needs to fit both sides. The employer and the employee should both feel like they are getting a good deal.

The honest truth is that this means that there are some jobs that you could perform well at that the employer doesn’t know, believe or trust that you can. That can be a blow when you are looking for work. I’ve been there, hungry for anything that will help pay the bills. But you have to have faith. And keep looking. There are lots of developer jobs out there, at big companies and small companies, product companies and consulting companies, software companies and companies that don’t know they are software companies yet. And often, especially as a new developer, you can get hired for your potential.

I’ve also been in jobs where I contorted myself, either a little or a lot, because I thought that was what was needed. I’m all for taking one for the team for a while and doing an unpleasant task or job. But if I have to do it for months and years then that is the wrong job for me.

You have to fit the job, and the job has to fit you.

Sincerely,

Dan