I recently spoke to computer science students at Washington State University's Everett campus about what it's like to work in industry. Here were some of the follow-up questions I got after the event.
Could you elaborate upon what kind of personal projects to do for portfolio work? Some more examples? For starting out, I am trying to tie in something related to my interests but also has to do with web development. My hobbies are game dev and composing music.
Your resume is usually a cut-and-dry telling of the facts of your professional and academic experiences. It's a well-structured format that everyone is familiar with. A personal website or portfolio should give some flavor and color to your resume. It's a great idea to showcase your passions on your personal site outside of your technical projects. You could practice your web development skills by building websites and applications for the things you care about.
My personal website (www.codertwalker.com) isn't the cleanest or best organized, but it documents a lot of the things I'm involved with. To a certain extent, it helps me document and remember the things I've done.
How much do I need to already have learned to get hired? I remember you saying you barely knew any and workplaces have a certain way of working and organizing code, but as someone really interested in learning to code and building websites, which languages and tools should I know how to use? In the beginning, should I just focus on one thing at a time?
Every company and every team does things differently. When you start working on a team you'll learn what standards and expectations they have for contributing to the codebase. I really enjoy using Facebook's React to build web applications, but at this stage in your career I'd recommend you try a bunch of different frameworks (Ruby on Rails, Vue.js, React.js, Ember, Angular, etc.) and learn a little bit about all of them. You'll have a much better idea of how each framework and tool works when you can compare them to others.
One of my favorite parts about my company is the freedom to work from home. At this point in my life, I don't think I'd be successful in a full-time remote position. I enjoy working with my coworkers and seeing them in person. Most days I have the choice of working from home or going into the office, barring any important meetings or events. On the days I work from home I save time by not commuting in or out of the office (roughly an hour each way) and I'm able to use that time to get more sleep and get more done around the apartment. I've also been regularly working out on days I work from home, which I just don't have the energy or discipline to do after getting home from the office.
A typical day working from home involves me logging on in the morning and drudging through emails and setting my calendar for the day and then getting started on my development sprint work. Our daily standup meeting is at 11am and that's where we all talk about our progress and any blockers. Regardless of whether or not someone is working from home we always jump onto our Zoom video chat and that's where we do things like screen shares and whatnot. I enjoy working at my desk at work and at home, but the biggest difference is what I do with the time I'd otherwise spend commuting.
What kind of job positions are related with each "stack" of web development? What is it like working on each one and how difficult or complex are they?
Across the board these positions are usually referred to as "Software Engineering" and each job posting will hopefully give you a hint as to what you're working on. Technology itself is a fast-paced industry and every level has its intricacies. I think the conventional wisdom is that frontend development is easier than say APIs, databases, or infrastructure but I think that's bullshit to be quite honest. Smaller companies are more likely to have full-stack developers that service the entire application, and larger companies usually chunk that work out to larger teams so that they can focus on the details and the nuances at each layer.
If you're someone who's very visual and feels a sense of accomplishment when you can see and interact with your product visually, I'd say that UI engineering is a great place for you. Building web apps and native mobile apps (iOS, Android) require a lot of the same thinking and overlapping efforts in different contexts. If you're someone who enjoys working with data and large systems then you might find the more backend services like APIs, databases, and infrastructure more interesting.
They're all complex but like with anything, taking time to study and learn the domain is going to get you far. There are plenty of smart folks who can do amazing things writing operating systems that would feel out of their element writing user interfacing applications in the same way that I'd feel out of place writing an operating system.