6 Lessons I learned as a software developer and product owner in my first year AFTER college

Freddy Straub
7 min readOct 14, 2023

--

Introduction

Stepping into the world of software development and product ownership right after college can be an exhilarating yet challenging journey. The transition from textbooks and lectures to real-world projects can be quite a ride. In my first year after college, I had the privilege of experiencing this transition, and it was filled with valuable lessons. Here, I’ll share six important takeaways that I believe will help you navigate the early stages of your career as a software developer and product owner.

One Source of Truth Matters

During my first year out of college, I found myself thrust into a challenging project with a tight deadline. The project involved multiple stakeholders — two Product Owners (POs) on the business side, one on the supplier side, and an additional one from the IT department of the business. It was a complex web of individuals with various perspectives and objectives.

What made this project particularly challenging was the constantly shifting requirements. It felt like every other day, the business-side POs were introducing new changes and amendments to the project. As a result, the stories that emerged from these requirements were often a fusion of contributions from both business and supplier POs, creating a confusing mishmash of ideas.

Unfortunately, the supplier-side PO wasn’t always the most reliable in maintaining consistency with the project’s objectives. This led to a situation where nobody on the team truly knew what was agreed upon. The Scrum board became a chaotic puzzle of stories that contradicted each other, contained duplicates, or lacked proper details.

The testing team was caught in the crossfire of this communication breakdown. They diligently tested the software in collaboration with the business side, only to find that the actual requirements were never adequately documented in the user stories. This misalignment led to a flood of bug reports, further adding to the project’s woes.

This experience taught me the vital importance of having a single source of truth in project management. Without a centralized repository for project information, confusion can reign supreme, jeopardizing the success of the project and causing frustration among the team. Clear communication and consolidated documentation are essential to keep everyone on the same page and prevent the chaos that can arise from conflicting information.

Precision over Wordiness in Requirements

In my early days, I used to think that more extensive requirement documents were better. However, I soon realized that the key is precision, not verbosity. Clear, concise, and precise requirements make it easier for everyone involved to understand and implement the project correctly. Also, you should only mention the important things unique to the specific project and don’t bloat it with standardized information.

UI/UX is More Complex Than It Seems

In my early days as a software developer and product owner, I embarked on a project that aimed to modernize a dated, legacy system. The task was to breathe new life into this massive, multifaceted system, which had evolved over time into a tangled web of interconnected subsystems.

At that point, I didn’t possess a wealth of experience when it came to planning such a monumental overhaul. I had enthusiasm and a vision for creating a sleek, visually appealing interface, but I was about to learn that there’s more to UI/UX than meets the eye.

I started by collaborating with our talented UI design team. Together, we devised a solution that promised to give the entire system a fresh and modern facelift. However, as we delved deeper into the project, the senior developers raised questions about seemingly minuscule details and the importance of adhering to global design standards. It was a wake-up call that revealed how intricate and multifaceted UI/UX truly is.

The experienced developers had the ability to foresee potential pitfalls and point out inconsistencies in my plans. They helped me understand that UI/UX isn’t just about creating something beautiful; it’s about ensuring that the design is functional, consistent, and user-friendly. These invaluable lessons taught me to pay meticulous attention to the finer details and adhere to global design standards, which are often the linchpin of a successful UI/UX transformation.

Balanced Preparation is Key

Recalling the project I mentioned earlier (as elaborated in the “One Source of Truth Matters” lesson), it became abundantly clear that our journey lacked one critical element: prior good preparation. Looking back, I believe this deficiency was a major factor contributing to the project’s untimely completion and the issues I detailed earlier.

Upon receiving valuable feedback from our seasoned senior developers, I decided to take action to ensure this wouldn’t happen again. My approach was simple: produce a robust set of requirement documents to keep everything on track within my realm of responsibility. This endeavor proved fruitful; it provided clarity and structure to the project, ensuring everyone had a shared understanding of the goals.

However, in my eagerness to avoid the pitfalls of inadequate preparation, I swung to the other extreme. I began crafting complex, verbose sentences and delving into excessive detail, trying to anticipate every possible nuance of the system. This approach turned out to be counterproductive as it consumed an inordinate amount of time and resources. In reality, many aspects evolved differently during the project’s course, rendering some of my initial preparations irrelevant.

It was a valuable lesson in finding the delicate balance between preparation and over-preparation. While meticulous planning is essential, it’s equally important to remain agile and adaptable as a project progresses. The experience taught me that the right amount of preparation is a fine line to walk, and it’s crucial to strike that balance to ensure the project’s success without becoming mired in unnecessary complexity.

Maintain an Organized Workspace

In the same project that I previously discussed, where the challenges of maintaining a “One Source of Truth” became evident, another significant issue arose — maintaining an organized workspace. This issue stemmed from the collaborative efforts of developers from both the supplier and internal teams, all working on the same project.

The problem we faced was the lack of clear communication and the frequent changes in the project’s direction. This led to a rather haphazard process, where a single story could have multiple statuses, with those statuses themselves changing frequently throughout the project’s lifecycle. It was akin to trying to navigate through shifting sands.

Furthermore, the lines of separation between tasks that were billable and those to be handled by our internal team members were often blurred. The process itself, dictating who should do what and what parameters and paths a story required, underwent constant shifts and modifications as the project evolved. The result was a state of perpetual flux, which added layers of complexity to the project.

In the midst of this chaos, the backlog, a fundamental tool in project management, was not effectively prioritized. Stories were sometimes placed unesstimated into a running sprint, which defied the principles of a well-organized workspace. During the refining, estimating, and planning phases, clarity was elusive, and the established procedures weren’t consistently followed.

This experience underscored the critical importance of maintaining a well-organized workspace in software development. Without a clear and structured process, tasks can become muddled, and the team’s efficiency can suffer. It taught me that a streamlined workflow, clear communication, and adherence to established processes are essential for maintaining an organized workspace, preventing confusion, and ultimately achieving project success.

Effective Communication is Non-Negotiable

In the world of software development, effective communication is more than just a good practice; it’s an essential element that can make or break a project. This holds especially true for the Product Owner, as they play a pivotal role in ensuring that requirements are properly conveyed to the team, that everyone stays up to date, and that the team remains aligned with project goals.

From my experience, I’ve learned that if a Product Owner isn’t able to communicate requirements clearly and ensure that everyone is on the same page, it can lead to the downfall of a project. Missed deadlines, unhappy teams, and frustrated stakeholders are often the result of communication breakdowns. Learning to listen actively, express thoughts clearly, and facilitate open dialogue is a skill that not only enhances team happiness but is a fundamental factor in meeting project deadlines and achieving overall success.

Conclusion

In summary, the early stages of your career in software development and product ownership are a valuable learning experience. Here are the key takeaways to help you thrive:

  1. One Source of Truth: Maintain a single source of truth to prevent confusion and ensure clear communication within your project.
  2. Precision over Wordiness: Focus on clear, concise, and precise requirements rather than lengthy documents.
  3. UI/UX Complexity: Understand that UI/UX is not just about aesthetics; it’s about functionality and adherence to global design standards.
  4. Balanced Preparation: Strike the right balance between preparation and over-preparation, remaining adaptable as the project progresses.
  5. Organized Workspace: Keep your workspace organized to enhance team efficiency and streamline project management.
  6. Effective Communication: Effective communication is non-negotiable for success; it ensures everyone is on the same page and prevents project breakdowns.

Embrace these lessons, and you’ll thrive in the dynamic world of software development. Every project is an opportunity for growth and contribution to the ever-evolving tech landscape.

Cheers!

--

--