Beyond the Code: What It Means to Be a Software Engineer

This week, I'd like to have a frank discussion about what it really means to be a software engineer. If you think this job is all about sitting in a dark room, sipping energy drinks, and churning out lines of code, you're in for a rude awakening. First and foremost, writing code is just a fraction of what software engineers do. Yes, it's important, but it's far from everything. Let me break down the real responsibilities you'll face as a software engineer: Code Reviews: If you're not spending time reviewing your team's code, you're not pulling your weight. It's that simple. Your colleagues depend on you to catch errors, suggest improvements, and maintain code quality. This skill is more important today than ever before because AI is writing huge amounts of code now (and will only continue to write more)...so we're left reviewing it, making sure it does what it's supposed to, how it's supposed to. Problem-Solving Beyond Your Screen: Expect to spend a significant portion of your day answering Slack messages, emails, and explaining issues to others. You're not just solving coding problems; you're solving communication problems too. Hands down, the best skill a software engineer can have is good communication. Knowledge Sharing: Learn something new? Come up with a good solution to something? It's your duty to share it. Your team's success depends on collective growth, not individual hoarding of information. Not only that, but you'll often need to share that knowledge with non-technical people...and as Dr. Richard Feynman said..."If you can't explain something to a first year student, then you haven't really understood." Documentation: Your code isn't as self-explanatory as you may think. There's almost always additional context and use cases that code alone doesn't explain. It's your responsibility to make sure that information is shared with the rest of your team. Don't make them have to go hunt it down (or mistakenly discover it) on their own. Additionally, other people, including non-developers, need to understand how your software works. Get comfortable with writing clear, concise documentation. Testing: If you think your job ends when the code compiles, think again. Writing comprehensive tests to ensure your code works exactly as intended is a major part of the job. Some even think you should be writing your tests before you write you the code! Collaboration: Software development isn't a solo sport. You'll be working with designers, product managers, QA teams, other developers, customers/clients, leaders, and more. Learn to play nice with others. Project Management: Planning, estimation, progress tracking – these are all part of your job now. Time to brush up on those organizational skills. Oh, and those code review skills are gonna be important here too as you look through different areas of code in order to figure out how long it's going to take you to write that fancy code. Continuous Learning: The tech world doesn't stand still, and neither can you. Keeping up with new technologies and best practices is non-negotiable. From the latest technologies, to updates to the software you're already using, to new security vulnerabilities you're responsible for protecting your users from...there's always something more to learn in this industry. So don't get the impression that just because you finished that course or bootcamp, or acquired that degree, that you're done studying and learning. Client Interaction: Yes, you might have to talk to actual humans who use your software. Shocking, I know. Be prepared to gather requirements, provide updates, and maybe even help a few of them figure out how to actually use that amazing software you built. Security: Keeping software secure is an ongoing battle. You'll need to stay vigilant about threats and vulnerabilities, both in your code and your dependencies. Remember this: we write more for humans than for machines. So learning good communication skills is vital in order to be a successful Software Engineer. It will also launch your career in huge ways

Apr 1, 2025 - 14:14
 0
Beyond the Code: What It Means to Be a Software Engineer

This week, I'd like to have a frank discussion about what it really means to be a software engineer. If you think this job is all about sitting in a dark room, sipping energy drinks, and churning out lines of code, you're in for a rude awakening.

First and foremost, writing code is just a fraction of what software engineers do. Yes, it's important, but it's far from everything. Let me break down the real responsibilities you'll face as a software engineer:

  1. Code Reviews: If you're not spending time reviewing your team's code, you're not pulling your weight. It's that simple. Your colleagues depend on you to catch errors, suggest improvements, and maintain code quality. This skill is more important today than ever before because AI is writing huge amounts of code now (and will only continue to write more)...so we're left reviewing it, making sure it does what it's supposed to, how it's supposed to.

  2. Problem-Solving Beyond Your Screen: Expect to spend a significant portion of your day answering Slack messages, emails, and explaining issues to others. You're not just solving coding problems; you're solving communication problems too. Hands down, the best skill a software engineer can have is good communication.

  3. Knowledge Sharing: Learn something new? Come up with a good solution to something? It's your duty to share it. Your team's success depends on collective growth, not individual hoarding of information. Not only that, but you'll often need to share that knowledge with non-technical people...and as Dr. Richard Feynman said..."If you can't explain something to a first year student, then you haven't really understood."

  4. Documentation: Your code isn't as self-explanatory as you may think. There's almost always additional context and use cases that code alone doesn't explain. It's your responsibility to make sure that information is shared with the rest of your team. Don't make them have to go hunt it down (or mistakenly discover it) on their own.

Additionally, other people, including non-developers, need to understand how your software works. Get comfortable with writing clear, concise documentation.

  1. Testing: If you think your job ends when the code compiles, think again. Writing comprehensive tests to ensure your code works exactly as intended is a major part of the job. Some even think you should be writing your tests before you write you the code!

  2. Collaboration: Software development isn't a solo sport. You'll be working with designers, product managers, QA teams, other developers, customers/clients, leaders, and more. Learn to play nice with others.

  3. Project Management: Planning, estimation, progress tracking – these are all part of your job now. Time to brush up on those organizational skills. Oh, and those code review skills are gonna be important here too as you look through different areas of code in order to figure out how long it's going to take you to write that fancy code.

  4. Continuous Learning: The tech world doesn't stand still, and neither can you. Keeping up with new technologies and best practices is non-negotiable. From the latest technologies, to updates to the software you're already using, to new security vulnerabilities you're responsible for protecting your users from...there's always something more to learn in this industry. So don't get the impression that just because you finished that course or bootcamp, or acquired that degree, that you're done studying and learning.

  5. Client Interaction: Yes, you might have to talk to actual humans who use your software. Shocking, I know. Be prepared to gather requirements, provide updates, and maybe even help a few of them figure out how to actually use that amazing software you built.

  6. Security: Keeping software secure is an ongoing battle. You'll need to stay vigilant about threats and vulnerabilities, both in your code and your dependencies.

Remember this: we write more for humans than for machines. So learning good communication skills is vital in order to be a successful Software Engineer. It will also launch your career in huge ways