Our featured blogger is none other than Megan Cindric, a former instructor and student with the camp who is now employed as a software engineer for a company developing medical software. Check out her interview below, then read the rest of the post to get her thoughts on software development!
Have you ever wondered how the applications and websites we rely on each and every day come to life? From social media websites to online shopping platforms, these applications touch nearly every facet of our daily lives, but who’s the person behind the curtain making all of these systems work? Enter the Software Developer: The individuals building these applications from the ground up, writing code, testing applications, and ensuring they give their users the best experience possible each and every day.
But have you ever wondered what it’s really like to be a software developer, beyond what you see in movies or tv? It’s not just about sitting behind a computer screen – it’s a journey filled with problem-solving, creativity, collaboration, and a whole lot of learning. Let’s pull back the curtain and dive into the world of a software developer’s daily adventures!
Before we dive into the daily ins and outs, let me introduce myself. My name is Megan Cindric, and my path into the world of technology is a bit outside of the norm – I started my journey with no prior experience in Software Development or coding, as a devCodeCamp student in 2020. After my time as a bootcamp student, I transitioned into a Software Development Engineer role, before having the opportunity to re-join devCodeCamp, this time as an instructor. Finally, I transitioned into my current role, working as a fully remote Software Development Engineer. Now, I want to emphasize that my daily routine isn’t a universal template. The reality is, depending on various factors like your workplace (in-person, remote, hybrid), team size, and your company’s unique workflow, your day-to-day experience might differ from my own!
The Sprint Cadence
As we start on this journey into a software developer’s world, let’s begin by zooming out a bit and looking at the foundation that drives development work: Agile methodologies. Most software development teams, my own included, will utilize some form of Agile workflow, working in short, iterative segments called “sprints” that typically range between 1-4 weeks. This gives the team a chance to break down a large-scale application into smaller tasks that can be accomplished in a shorter length of time. For each sprint, a number of tasks will be assigned to members of the team, either by the team members themselves or a manager. At the end of the sprint, we have time to review and reflect on what went well, and what could be improved in the next sprint. It’s an ever-evolving structure that allows our team to make informed changes based on our collective experiences, and is a fantastic structure for projects that can span several months or years!
On most mornings, our team kicks the day off with a brief standup meeting. These meetings are short in length – typically no more than 15 minutes – and gives our team a chance to touch base before we launch into the workday. Each member of the team has the opportunity to share what they’ve accomplished since the last standup, what they’re planning to work on that day, and any impediments or blockers they’re currently facing. This last piece is especially crucial, and allows the team to collaborate & brainstorm solutions to move past those roadblocks. Once standup is finished, we’re ready to jump in and begin our day!
My day-to-day work as a software developer can vary greatly depending on the current day in our sprint, the tasks I’ve been assigned, meetings, demos, and other responsibilities. In my opinion, this is one of the greatest benefits of working as a software developer – no two days look exactly the same! That being said, most of my days consist of a combination of the following tasks:
- Writing Code – Regardless of the day, my primary focus is usually centered on writing code. A significant portion of my day consists of reading & interpreting the tasks I’ve been assigned, understanding the desired outcome of those tasks, and translating that into code. This is a creative and very iterative process – a single task could go through any number of changes before it’s finalized and added to our application!
- Reviewing Code – Collaboration is key when working as a software developer, and a significant aspect of this involves code reviews. This might include giving feedback to a teammate on a feature they’ve created, or receiving feedback on my own code. It’s not just about catching errors either – it’s an opportunity to share knowledge, learn from diverse perspectives, and collectively improve our coding standards. Through this process, we ensure high quality of our code, identify potential issues before changes are added, and foster a culture of continued learning and growth with our team.
- Bug Fixes/Troubleshooting – It’s inevitable that things will break in your code, there’s no way around it. As software developers, it’s our responsibility to ensure our code operates seamlessly, delivering a positive user experience. Personally, I like to treat these issues like an interesting puzzle to solve, like my own coding Rubix Cube. Troubleshooting issues is a blend of detective work, logical reasoning, attention to detail, and thinking outside the box. Sometimes, it might involve tracing a bug across multiple areas of the application before I’m able to pinpoint the cause. Or, it could simply be a typo in a variable name or a misplaced semicolon. Fortunately, troubleshooting isn’t a solitary journey – there’s always the opportunity to ask for help during daily standups if I’ve hit a particularly tricky issue. And that final “ah-ha!” moment when the issue is fixed makes the entire process immensely rewarding and worthwhile!
- Research & Self-Guided Learning – One of my favorite parts of being a software developer is the focus on continuous learning & growth. In the ever-changing world of technology, there are always new tools, ideas, and coding approaches waiting to be explored. This might involve diving into technical documentation, experimenting with new tools and languages, or pursuing additional certifications to expand your skill set. Oftentimes, this process goes hand-in-hand with everyday tasks like writing & reviewing code and troubleshooting issues! My most significant periods of growth have come from exploring unfamiliar areas of the application, receiving feedback on my code from teammates, and tracking down the root cause of particularly tricky bugs.
- Meetings & Administrative Tasks – As mentioned earlier, collaboration is key as a software developer, be it with team members, project managers, or clients. The type and number of meetings varies by the day – beyond daily standup meetings, there are discussions about project requirements, reflecting & planning for the next phase of the project, check-in meetings with managers, and presenting completed work to clients. Additional responsibilities like responding to emails, documenting code changes, and ensuring our project board is up-to-date are essential for project organization and communication amongst our team.
A Few Words on Working Remotely
Where you work (remote, in-person, or hybrid) can significantly influence your workflow and areas of focus. As a fully-remote software developer, I put very strong emphasis on communication, being proactive about reaching out to my team, and maximizing my team collaboration time. While sometimes it can feel a little bit isolating when working fully remote, in my opinion the pros of having greater flexibility with my time and location vastly outweigh the cons. That being said, I know quite a few Software Developers who prefer to work in in-person settings, and thrive on having face-to-face human interactions – that’s perfectly normal too! We’re social creatures with social needs, and oftentimes our jobs are a way to have those needs met. The good news is Software Developer roles can be in-person, remote, or even a hybrid of both, so there’s plenty of options to explore to find the perfect fit for your needs. If I could offer some advice for the job search, I’d recommend taking your own personal preferences into account, and even pursuing some personality assessments like the Big Five Personality factors to better understand how you operate, and what type of role might be best suited for you.
And that’s a brief peek behind the curtain into the day-to-day life of a software developer! This role goes far beyond just writing lines of code – it’s a journey filled with creative problem-solving, exploration, and a constant strive towards growth and improvement. In my own experience, the decision to move into Software Development has been absolutely life-changing. I’ve found a role where I get to tackle new and exciting problems each and every day, where I’m challenged to grow and continually learn, and I can see the results of my work having a positive impact on the world around me.
So, whether you’re already on the path to becoming a software developer, or just curious about what this exciting world entails, remember – it’s a world where innovation meets collaboration, and where your creativity can help to fuel the creations of tomorrow!