The following is guest blog by Sam Pita, a software engineer in Nashville, TN and board member for Girls in Tech Nashville.
I remember daydreaming about what my first job as a software developer would be like. I anticipated that it would be overwhelming, scary, challenging, fun, and rewarding. What I didn’t anticipate was that I would be juggling the craziness of a new job and a new industry with a completely new socially-distanced, hyper-digital world. Yep, I began my first ever software development job at a tech startup in March 2020– the beginning of the COVID-19 pandemic.
It took me a second to mentally adjust to the fact that I would not be physically in an office with my team (you can read more about that here), but in general, I’ve still gotten a pretty good startup experience.
What is the “startup experience”?
There is a stereotype that exists about startups. As Forbes.com put it so well, the phrase startup culture usually makes you think of “working at home whenever you want, happy hours, unlimited PTOs, and having to act like ‘one big happy family.’ Pet-friendly offices. Ping-pong tables. Zen rooms.” But along with the perks, working for a fledgling startup is also notorious for things like lack of organized processes, job roles that juggle multiple hats, working far more than 40 hours a week, and lack of job security if funding runs out.
How much of this is actually true? Although I can’t speak for everyone, I wanted to share my own personal experience. Please keep in mind that everyone’s experience varies and may be totally different than mine.
What was my actual startup experience like?
Having all these generalizations in my head about startups made me a little nervous to start working at one… but the reality was very different. We have all been working remotely due to the pandemic, so I don’t know anything about the perks of pet-friendly offices or ping-pong tables. But what I have experienced so far is much more valuable than those things.
Here’s what I learned during these last 9 months of working at a startup:
Embrace the Learning Curve
I went straight from my full-time coding bootcamp into my first job as a software developer. And you know what? On my first day on the job, I felt like I knew NOTHING. Not because my coding bootcamp failed to prepare me. I learned a lot in those 6 months. But it’s like being given a set of tools and learning to make a birdhouse. Then a chair. Then a table. It all seems to make sense, right? Then suddenly, you’re dropped off in a brand new place and told to build a village. That’s what I felt like at my new job.
Even though I started out with the “easier” tickets, they were still difficult to me, a brand new developer.
Sometimes I would be stuck on something for a few hours, sometimes for a whole day.
Sometimes I would write some code and feel pretty good about it and then compare it to a coworker’s code. My code would look rudimentary or clunky in comparison.
Sometimes I would get my feature working by copying and pasting some code from elsewhere in the codebase and changing a few things here and there, but I wouldn’t really understand what all the code was doing.
All these things built up and made me feel frustrated and inadequate. What I was experiencing was the learning curve that every developer faces at their first job.
I wanted to be able to get assigned a ticket, place my hands at my keyboard, and instinctually know exactly what to code and how to do it. But at your first coding job, things will NOT be instinctual. Code will not look like your practice exercises or school projects. I spent more time being walked through how to do something or shown how something works by a coworker than actually coding in my first few weeks.
This all changed with repetition. I developed a pattern of attempting things that worked really well for me– Try. Get Stuck. Look at other similar parts of the codebase for reference. Try again. Still stuck. Google things. Try again. Still stuck. Reach out to a coworker for help.
This may feel tedious, but honestly, I felt like I had HUGE strides in my development skills each week that went by. For every month that passed, I felt like I had consumed a whole other 6-month bootcamp’s worth of knowledge. And now I am able to figure things out MUCH faster, usually without anyone’s help (ok… maybe the internet’s help sometimes!).
That’s the thing about a startup. You will be challenged, but if you embrace the learning curve, you will reap the rewards quickly as compared to a large corporation where the working (and learning) pace will be much slower.
Face Your Imposter Syndrome
Starting at my company, there was so much to learn: a whole new codebase, technologies, coding languages, git workflows, daily standups… so many things! I felt overwhelmed.
Inevitably, I got stuck on my first few tickets, and I was mortified. The tickets were for a front-end codebase built with ReactJS, a framework that I learned in my bootcamp.
“I should know this… why can’t I figure it out?!”
“This looks nothing like my code from school.”
“Google isn’t giving me the right answer.”
“Maybe if I stare at it a little longer… it’s already been 3 hours?!”
“Once they find out I can’t figure out this stupid little thing, they’ll fire me.”
“[Insert coworker’s name here] is going to be soooo annoyed if I ask him/her another question.”
Thoughts like these would run through my head constantly. But I never got fired. In fact, at my one-month check-in, my manager even told me I was doing a good job. He said that I was proactive about reaching out to people, even in our weird, virtual pandemic situation, and learning about the codebase. That was what he was worried about. That I wouldn’t ask for help over chat or Zoom and be permanently stuck. And as I looked back at my first month at the company, I realized that I had learned a lot. Even though it didn’t feel like it sometimes, I had already grown as a developer, and that’s all they could ask for from a junior developer. That I was learning and contributing every day.
Which brings me to my next point…
“Contributing” Doesn’t Mean Writing Code Every Second
I had put this unrealistic pressure on myself to be “worthy” of my new software developer salary. I thought, “Well they’re paying me all this money, I better work for it!” which is the wrong attitude to have. I felt like if I got stuck on something for a few hours, then I was wasn’t upholding my end of the bargain by contributing code every minute.
However, writing code isn’t the only valuable thing you can provide your company. Here are some other things you can provide:
- Moral support to your other teammates. Do you produce good work when you feel isolated and judged? Or do you produce your best work when you feel like you’re supported and given the room to try things, make mistakes, ask questions, and learn together? Being a friend to your coworkers and creating a safe working environment can make everyone produce higher quality work. Although we were working remotely, I invited some developers to weekly virtual lunches with me. We talked about many things but I was also able to vent about my feelings of inadequacy for the position. They shared that they still have the same feelings, even with more experience than me. We formed a camaraderie that gave me more confidence in my role on the team and reminded me that these feelings of being “not good enough” are normal.
- Learning new skills. It’s ok to be stuck as long as you learn something at the end of it. Also, if there is a need for a specific skill or language on the software team, you can talk to you manager about taking time out of your day to learn that skill so you can fill that void. Although it may require a lot of research, reading, and things besides coding, learning a new skill makes you more valuable to your company.
- Having good meetings. A large part of software development is discussing what needs to be built and how to accomplish that. Although no one likes a long day of unnecessary meetings, having concise meetings with planned out questions to make sure everyone is on the same page can make things easier for everyone in the long haul. And when it’s actually time for you to start coding, it should take less time since there will be less things for you to have to stop and clarify during the development process. Knowing the right questions to ask comes with experience, but it’s a skill that can improve everyone’s productivity.
Your Teammates are Crucial
Relying on and trusting in your teammates is critical to your development as a new software engineer. I 100% would never had gotten my mind wrapped around our codebase if my coworkers didn’t take time out of their days to show me what was going on.
Some things I had to be shown over and over and over. I would try to rotate which coworkers I asked so that I wouldn’t take up too much of any one person’s time. I learned that some coworkers were better at certain things, so I could go to this person to learn about Redux-Saga, and this person to learn about DevOps.
I do feel blessed that everyone on my team was happy to have a Zoom call with me every once in a while to chat and explain things. If I didn’t have kind and patient teammates to rely on, well… I feel like my job at this company might not have worked out. I would have floundered on my own without anyone to show me the ropes.
Sadly, I have heard about people who have taken their first dev role and found that their teammates were unwilling to answer questions, or worse… they didn’t have teammates to go to with questions. Those experiences always turn out to be miserable. I am a firm believer that your teammates are crucial to your initial professional development and that, given a good team to rely on, your skills can truly soar. That is why I implore anyone who is searching for their first software development role to ask a lot of questions about the team. How many people would be on your team? Are there any other junior developers on your team? Who, if anyone, would you go to with questions? If the answer to that last question is something vague or unclear, that would be a huge red flag.
There is ALWAYS something new to learn
Only now am I getting time to extensively dive into learning back-end development at my company…. and it’s literally like learning a new language. It’s hard. I’m taken right back into that mindset of feeling inadequate for this role. But now I have the experience to know that as long as I keep trying and asking questions every day, that feeling of stumbling around in the dark will fade. I will only gain confidence by doing it over and over again, and that, in turn, will make me a more valuable developer to this company and anyone I work for in the future.
In software development there is always something new to learn, but isn’t that the appeal? We are in an industry where we’ll never get bored or run out of things to learn. Especially at a startup, where roles are a little more blurry, there are opportunities at every turn for you to be hands-on in trying something new. Did you learn front-end development? Already master back-end development? Try some Product Management! Or DevOps! Or data engineering!
It can be intimidating to know how much there is out there to learn, but try to view it with excitement and the opportunity of endless possibilities. You have the possibility of learning something that you find fun and interesting. Working at startup gives you more control to steer your career in any direction that you like, which is a very powerful thing.
I am really grateful for my startup experience so far. It has progressed my skills as a software developer at an extremely rapid pace and taught me a lot about both believing in myself and the power of teamwork. I got the opportunity to build many features from scratch, including a whole new application, which wouldn’t have happened if I were a junior developer at a large corporation.
During my bootcamp, I actually received another job offer at a multi-billion dollar company. I had accepted it because I thought it would be my only job offer coming straight out of school, but some things didn’t completely sit right with me. The software development team seemed pretty quiet and uninterested in asking me any questions or getting to know me during the interview. The technologies were older and less appealing to me. It was clear that I wouldn’t be too hands-on with the codebase for a few months. When this other job offer at my current company came up, the team was so vibrant and friendly in comparison. The technologies were modern and right up my alley, and I would get the opportunity to build features almost immediately. I accepted this offer instead and have never been more confident about a career decision in my life.
But working at a startup won’t be for everybody. If you’re coming from a large company, a startup will be much faster paced and there can be less guidance and structure than you’re used to. It may even come across as a little chaotic. Some weeks you may have to spend longer hours at work. If you’re looking for a steady pace with a predictable schedule (maybe you have kids!), then a larger, more established company may be a better fit for you.