My First Year as a Software Engineer: A Retrospective

Shirley Lin
Grailed Engineering
6 min readMar 4, 2019

--

My name is Shirley, and I’m a Fashion Designer turned Software Engineer, currently tech leading the Buyer Squad at Grailed.

A year ago, I had just finished up the Web Development Immersive at the Flatiron School. I’d met an Engineer from Grailed, and had interviewed and accepted my first big-girl Software Engineering role. And I was terrified.

One year later, I can safely say that I’m a (real) Software Engineer. I’m tech leading a team at Grailed, working on improving the experience of buyers on the platform. A quick aside — thank you to everyone who supported me, and the team at Grailed that gave me opportunities to succeed, laughed with me, and learned with me. I remember the vast ocean of unknowns I had before starting my job, and it’s crazy to look back at how far I’ve come in just a year. To any new engineers who are feeling doubt or experiencing imposter syndrome — you are not alone. A year later, you too will look back at everything you’ve accomplished.

Some Technologies/Things I’ve Learned:

vim

Within the first week of starting my job, I realized that almost every other engineer was using vim. They were flying through tabs, almost never even touching their mouse. And I wanted to be like them! Vim is hard. But the only way to learn it is to use it. I remember having to pair program with my manager, and fumbling my way through shortcuts that I had definitely not memorized yet. Nowadays, though, my workflow is efficient and comfortable — I’ve found a great compromise by using Atom w/ vim keybindings.

Key Learning: Improve your workflow. It will make you a faster and happier developer.

Flow Typing

At Grailed, our front-end is built with React and Redux. With a huge amount of Javascript, we’re always looking for tools to make developing easier. We use Flow, a static type checker for Javascript, to enforce some safety for our types. It doesn’t quite make Javascript a typed language, but it’s a baby step towards it, and it makes it very easy to look at a function and know exactly what should be passed in and returned.

Key Learning: When there’s 15 developers touching the same codebase, making code readable is VERY important.

Lodash/Functional Programming

Before starting at Grailed, I had never really ventured into libraries like underscore.js or lodash. Lodash is used fairly heavily within our stack, particularly lodash/fp. My first time seeing something like:

compose([
map(prop('value')),
filter('searchable'),
prop('filters.stratas'),
]);

I had no idea what I was looking at. Functional programming was a whole new style for me, but I embraced the challenge. I’m always looking to see how I can pull out a compose.

Key Learning: There will always be something you don’t know.

Other Fun Things I’ve Learned:

Some Things I’ve Done:

Attended a Conference

Last June, I attended dinosaur.js in Denver, with 2 of my coworkers. Grailed has a great conference policy, and encourages developers to go to at least 1 conference a year. I’d never been to a conference before, and it was an amazing experience. There were tons of interesting talks, some valuable workshops, and a great community of like-minded individuals. Being in a place with hundreds of developers is a crazy thing, and something I highly recommend you seek out.

Key Learning: If your company has opportunities to attend conferences, take them!

Interviewed Candidates

Being on the other side of the interview process has been enlightening and way less scary. I’ve been involved with the interview process in some way since about 3 months into my time at Grailed, and my involvement has gradually evolved from there. At Grailed, we focus a lot on hiring the right people. I get asked a lot by prospective employees what my favorite part about working at Grailed is, and my answer is always the people I work with. The engineering team at Grailed is filled with smart, low-ego, collaborative people that foster a sense of learning and responsibility.

Key Learning: If culture is important to you, find a company where culture is just as important to them.

Hosted a Lunch & Learn

Public speaking has never been my thing, so the prospect of getting up in front of a group of engineers, and speaking about something that I (sort of) know about is incredibly daunting. Thankfully, when that group of engineers are all friends, and are supportive, silly people — it’s a lot less scary. Recently, I hosted a lunch and learn on Cypress, a very cool end-to-end testing framework that was actually my first real project at Grailed. I was still a little shaky and nervous, but spreading your knowledge is extremely valuable for the entire team.

Key Learning: You have something to share. Share it.

  1. Embrace the Fear — Beginning your career as a Software Engineer isn’t easy. You’ll run into countless things you don’t know, you’ll take the site down, and you’ll be pushed out of your comfort zone. Know that everyone has been there.
  2. Be Curious — Nobody knows everything. Make an honest effort to figure things out on your own, but don’t be afraid to ask questions. You won’t look stupid, I promise. When you see something you don’t understand in the codebase, ask someone who does. You’ll get so much more out of it, so much faster.
  3. Step Up — Especially in a start up environment, there will be things that may not necessarily be your responsibility, but you have the capacity to do. Be flexible and willing to help out, and it will only benefit you in the long-run.
  4. Think About the User — Having empathy for your user is extremely important. It may make perfect sense to you to do something one way, but always keep in mind that you are not building things for yourself, you’re building for millions of people that you don’t know.
  5. Know Your Strengths, & Your Weaknesses — And be willing to admit them. I still have so much to learn about databases and performance. I’m still slightly fuzzy on how exactly webpack works. I should speak up more and be more proactive about giving feedback. But I’m also really good at thinking through projects. I can build you what you want in React quickly. And I strike a good balance of keeping in mind Product & Engineering. Nobody’s perfect, but know your weaknesses, and work on them.
  6. Welcome Feedback — It may not be fun to feel like you’re being criticized and doing things wrong, but feedback is vital to growing and learning. Be open and receptive to feedback, and try to process it and really think it through before reacting. A culture of feedback will help you be a better engineer and a better coworker.

If you’re interested in joining us at Grailed, we’re hiring! Check out our openings here.

--

--

Shirley Lin
Grailed Engineering

software engineer @codecademy, prev @datacamp, @grailed