How to Successfully Collaborate in Software Development

Company Spotlight | Industry Resources

From its humble beginnings as software created in a home office, Rent Manager has grown in size and scale to the powerful property management solution that it is today. As the software itself grew, so too did the team needed to maintain and develop new and existing features for its ever-expanding customer base. Today, LCS employs a vast team of software developers, with several branches dedicated to working on different parts of the program. Together, our developers work on features that will enhance the user experience in the software.

Collaborative Software Development

Development projects at LCS begin with a feature request set out by a customer or high-level management. After specifications and project parameters are set, the project is then passed off to one of the development teams, where the pieces of the project are assigned to individual developers. When the development build is completed, the code is sent to Quality Assurance to test for errors. This process is repeated until the code works properly, and then all the different parts are merged into the product for customers to use.

Throughout the process, developers are in constant contact with one another, discussing their work and what still needs to be done.

During the course of a project, my team is always communicating. We discuss progress we’ve made, and ask questions of one another. Even if there aren’t any updates to share, it helps to know where everyone is, so we are prepared when we encounter challenges.

John Krumpe, Software Developer

Many of our developers have said their previous roles involved projects with little to no collaboration between team members. Luckily, with enough communication and best practices, developers can easily transition into LCS’ shared and communicative project style. Here’s how some of our software development team works in a collaborative development environment at LCS.

Individual vs. Team Efforts

As with any project in other fields, working with others is an entirely different experience than   solo work. You’ll need to take into account different working styles and increased communication needs, among other differences. According to our developers, it’s important to keep this in mind when embarking on a collaborative build.

Most of the time, working alone means a smaller project, and with others typically means the project is larger. This means the solo project typically takes less time to plan and execute, whereas the collaborative project takes longer to split up into small parts for each person to work on their piece. This also requires [developers] to communicate when combining their pieces, to make sure that they work not only as a standalone but work together.

Michael Federer, Software Developer

In my experience, working independently as a developer has required more bias for action than collaborative projects, because there will be more situations where the best approach to take is unclear, but putting off a decision can be costly in terms of time.

John Krumpe, Software Developer

Communication is Key in Software Development

With more steps in the process and more hands in the project, frequent communication with the other parties involved is a must.

A clear plan or specification (that doesn’t change too much) is another [key aspect], including figuring out what needs to be done to complete the project, particularly what you need from other teams, early in the process. I’ve had embarrassing moments before where I worked through most of my part of a project before realizing that I needed complicated API changes made, and I had not communicated that to the API team yet.

Levi Swartz, Software Developer

It is important that from the very start, everyone is on the same page about the design of the project. If one team is less informed than another, this can be a huge setback later on in development. It is important that these lines of communication between Quality Assurance, Business Analysts, and Development teams are maintained and updated as the project moves along.

John Krumpe, Software Developer

Most times talking through complicated problems and asking clarity questions instead of trying to figure it out yourself saves a lot of time and questions half-way through programming.

Oskar Wilkosz, Software Developer

Divide and Conquer

With such large-scale development projects, individual components need to be split logically amongst the team. Usually, management will assign portions of a project to individual developers, but as stated above, keeping that consistent line of communication open when divvying up responsibilities is the key to making sure the project meets its deadline.

Usually, it’s split up depending on the workload a developer could take on. If a developer is better at certain parts, then usually they take those tickets since they’re comfortable there.

Oskar Wilkosz, Software Developer

It is important that you have clearly defined roles, and specific parts that each person will work on, because you do not want to step on each other’s toes and having two [developers] doing the same work.

Michael Federer, Software Developer

Since I was a newer developer on my first major project, my teammates typically suggested I take tickets that would either enable me to learn a new concept or were a suitable challenge for a newcomer. This was helpful in the beginning, and as a result, I have been able to take on more and more challenging tickets. Overall, work is separated by scope, so that by the end of a project, everyone basically becomes an expert on a different part of the project.

John Krumpe, Software Developer

Refresh and Reorient to Overcome Obstacles

As with any project, sometimes unforeseen obstacles come up that need to be addressed. Whether it’s a wayward piece of code or a compressed timetable, our developers have learned over the course of their development experience that rolling with the punches and being adaptable in the face of a challenge is the best way to deal with adversity.

I was working on a project where another teammate and I were doing the same part of a project.  I was able to catch this quickly though, because of our daily standups, where we talk about what we did the previous day.

Michael Federer, Software Developer

My first large project required adaptability and patience as the design shifted a lot over time. Since the timeframe for this project was short, I needed to be able to pivot quickly when tasks changed. I’ve learned from this that patience and flexibility are key in maintaining urgency.

John Krumpe, Software Developer

The LCS Difference

For several of our software developers, coming into LCS was an entirely new experience compared to collegiate development projects or previous roles. While our collaborative environment was surprising to some, it seems unanimous that when it comes to software development teams, LCS is a pretty great place to be.

I think we have both more and less freedom to architect things than I was expecting. On one hand, we have to stick very closely to the spec, and work to emulate existing design patterns elsewhere in the project, but once those requirements are met, the actual logic and component design is almost entirely up to you! It’s freeing!

Levi Swartz, Software Developer

It is a very collaborative environment, which was a surprise to me.  When I first interviewed, and got a job, I figured that I would be stuck at a desk from 8-5 and not talk to anyone, except for at the beginning of a project, but that has not been the case whatsoever. There are seldom days where I do not have at least a dozen interactions with my fellow developers.

Michael Federer, Software Developer

Software Developers continue to make Rent Manager more innovative and successful for our customers. If you’re a software developer looking for a company that will help grow your skills and fosters an environment of collaboration and learning, look no further than LCS. Check out our open software developer positions and apply today.