Lane’s Answer
Hi Jessica!
Great question! I'm relatively new to the software engineering world, so I know best what it's like to just be starting out. Hope my experience is helpful :)
The first thing I'd say is that my job is really project-focused. I tend to be working on one "feature" at a time, and I'll take that feature all the way from being an abstract idea to it actually being out in the real world before starting on my next project. On average, I probably spend about 85% of my time working on things directly related to my feature and the other 15% on things related to helping other people with their projects.
When I am working on my feature, I am usually doing one of three things.
First, I might be thinking about what my feature is supposed to do and/or what it is supposed to look like. Normally, these kinds of decisions are made mostly by other people -- like product managers or designers -- but I get to give input, too. This kind of work can involve sketching out little diagrams on paper or on a whiteboard.
Second, I might be thinking about how I want to best structure my code to achieve those functionality and design goals. There are often many ways to do the same thing when you are coding, and so I spend a lot of time at this step trying to figure out which way makes the most sense. This kind of work can involve looking through our codebase to see how people have done it in the past or asking people who are experts in certain particular areas.
Lastly, I might be actually writing and debugging the code that I thought out in the previous step. This step is often the most time consuming and it's what I spent most of my day doing. This kind of work can involve writing code, running it in our development environment (a place we can test code without affecting the real website), and then trying to see where things went wrong. As I've grown in my career, I've been able to make this step take less time by spending more time on the previous steps -- I've spent a lot of time re-writing code because we changed the functionality or design after I started coding.
When I am *not* working on my feature, I am usually helping other people via our code review process.
In order to be able to "push" a new feature to the real website, you get must sign-off from other engineers that your code does what you say it does, meets certain style guidelines, and -- most importantly -- will not break anything. You get this approval by asking other engineers to do a "code review" of your code. In this process, they look through the changes you made and can leave comments or suggestions. Once they are satisfied -- often after a few rounds of back and forth -- they will approve your changes and you can release them out in the world.
To summarize, I spend most of my day working on the design or coding of my own project, but I also devote a fair amount of time helping other people with their projects. Being earlier in my career, I spend more time coding than more experienced people, who spend more of their time thinking about how things should be.
Hope that helps!