Software Development Process

The Human Side of Software Development

|

16 minute read

Iman Čizmić

Ensuring peak performance across business endeavors

Iman Cizmic

Ensuring peak performance across business endeavors

Iman Cizmic

Ensuring peak performance across business endeavors

Technology seamlessly integrates into our everyday lives. Various tools constantly facilitate and speed up our daily tasks. Yet, the complexities of how these technologies are created and the minds behind their development often remain unknown. At RUBICON, in our software development process, women play a crucial part, so we engaged with some of our female team members and explored their roles. They described their regular working day, explained how they work on professional development, and gave advice to everyone aspiring to start a career in their field of work. Whether you are contemplating a career in IT or simply curious about software creation, this article aims to clarify the process. It also introduces you to the people driving it. So, if you're on the verge of starting your IT career or still weighing your options, continue reading for insights that could guide your decision.

Product Owners: Guiding Software Development

Berina and Lamija, our experienced product owners (POs), exemplify the human factor that drives product development. Despite their different educational backgrounds—Berina with a BSc in Computer Science and Informatics, and Lamija with a BSc in Economics and Business—they share a common ground in their day-to-day responsibilities and play an important role in communicating requirements between clients and our development team. Berina’s journey at RUBICON started as a software developer. Later she became a PO and then the Chief Operations Officer. Being a software developer and then a Product Owner highlights her evolution from focusing on code to overseeing the project's big picture. Berina’s technical background gives added value to her role as the product owner.

Tasks of product owners involve a careful balance of consultations with clients to refine their requirements, aligning features for backlogs, and collaborating closely with tech leads to address problems. This synergy ensures the development team is always aligned with the client's vision, facilitating smooth project progress and successful deliveries of products.

The pivotal role of a product owner is ensuring client and team satisfaction, besides timely and successful project completion. Berina finds joy in seeing ideas come to life and exceed client expectations, and Lamija delights in the role's dynamic challenges. They face hurdles, like balancing competing priorities. Yet, they navigate these by communicating and setting realistic expectations from the project's start.

Berina and Lamija’s regular days are filled with meetings, from backlog preparations to sprint planning, and constant communication with clients and teams. This communication ensures alignment and responsiveness to changes. It reflects RUBICON's commitment to agile methodologies.

For aspiring product owners, they advise diving into the product domain, developing a sense of ownership, and continuous learning and listening. Also, do not be afraid of the “tech talk” if you are not a tech person. Continuous professional development should be of the utmost importance. Through literature, courses, and workshops, you can stay up-to-date with the latest trends.

They both highlight the importance of technical and communication skills in software development and underscore the significance of understanding and internalizing client visions. This human-centered approach, blending technical acumen with client engagement, makes the product owner's role indispensable in the software development world.

UX/UI Designers: Crafting User Journeys

To explain the role of UX/UI design as a part of software development, we collected insights from Amra, our Head of Design Team. Amra is a Bachelor of Architecture. After discovering the perks of UX/UI, she decided to use her architecture knowledge and love to design software.

She says that UX/UI is more than just creating visually appealing elements. It involves a deep understanding of user needs and behaviors, which ensures that every aspect of the software is intuitive and user-friendly. This approach is crucial in bridging the gap between technical functionality and the end-user's experience. It makes the software not only operational but also enjoyable and easy to navigate. 

Amra’s typical working day usually begins with going through emails and checking if there is something that requires immediate reaction. Then she has a daily standup meeting with her team, followed by firing up Figma and working on the design tasks for that day. During the day, she communicates with the entire team, including software engineers, QA, and product owners. Depending on the day, she prepares for and attends agile ceremonies. 

When it comes to the interaction with the client, she tries to go above and beyond what the product requirements are when it comes to UX. She considers the whole picture and offers solutions that might solve more than was initially demanded.

What she loves the most about her role is the collaboration and problem-solving part. She enjoys building on the ideas she comes up with stakeholders and the team. For anyone aspiring to work in this role, Amra suggests a lot of studying, reading, extensive research, and re-working existing solutions. Understand the biggest usability issues today and find the best practices for solving them. She says that being a UX/UI designer demands a lot of hard work and a lot of back and forth, but that it's very worth it because it's a beautiful job.

Frontend Engineering: Shaping User Interfaces and Experiences

In plain words, frontend engineers have a role in transforming design concepts into tangible user-friendly interfaces. Our frontend engineer, Esmina, has a Master's degree in Computer Science and Informatics. She provided us with her insights into this important role in the software development process.

According to Esmina, the role extends beyond visual implementation. Frontend development plays an important part in effective communication and coordination. It aligns with project goals, bridging design and backend. To ensure that client needs are met, a comprehensive approach is needed to gather and understand project requirements. Also, it is important to maintain continuous feedback loops throughout the project. Initial workshops and regular sync sessions, both with clients and the team members, contribute to refining and identifying the best solutions for client needs.

Esmina starts her regular working day by checking emails and reviewing her calendar. This sets the stage for a day filled with individual tasks and meetings. In her role, she thrives on teamwork, enjoying the exchange of ideas with colleagues from various departments. This collaboration is key in resolving complex issues and aligning the team toward shared goals. Challenges she faces are finding innovative solutions for unique project requirements, not seen before. To address the challenges, there needs to be extensive research, both into the intricacies of the specific problem and the associated technical practices.

To stay abreast of industry trends, Esmina follows industry blogs, engages in social media discussions, and pursues continuous learning through online courses.

For those aspiring to be frontend engineers, she advises a strong foundation in HTML, CSS, and JavaScript/TypeScript. Also, problem-solving skills and a deep understanding of technical concepts are necessary. Esmina further emphasizes the importance of teamwork, adaptability to various technologies and frameworks, and the willingness to tackle challenging projects for professional growth.

Backend Engineering: The Backbone of Innovation

Backend engineering is an essential element of the software development process. We asked Samija, our backend engineer with a bachelor's degree in Computer Science and Informatics, for her insights on this role. A backend engineer serves as the backbone of the development process. They ensure that the software functionalities operate seamlessly behind the scenes.

The charm of backend development lies in its dynamic and ever-evolving nature, continuous problem-solving, and code development. Backend engineers enjoy the intellectual challenge of enhancing application performance, ensuring security, and scalability. They are responsible for the separation of logic and data from the part that the user sees and accesses. The challenges in this field vary from project to project. They range from interpreting client requirements to integrating new features with existing systems. Overcoming them sharpens the skills of backend developers, pushing them to innovate and excel. 

Samija’s usual working day consists of working on unfinished tasks from the previous day if there are any. She also cleans up her items and tasks in the backlog if necessary, and/or starts working on a new item. In the mornings, there are daily standup meetings, and then she continues completing her regular tasks. Client interactions are typically indirect, and mediated through a product owner.

For those aspiring to a career in backend development, her advice is to embrace the learning curve and leverage the collective knowledge of experienced colleagues. Do not be intimidated by people who know more than you - use them to gain more knowledge. Always ask them questions, because any good developer will be happy to help. If you get stuck on a task, know that the next time it will be a piece of cake for you. Use the challenges you face as an opportunity to grow and learn from them, and you will be unstoppable.

Data Engineering: Paving the Way for Easier Data-Driven Decisions 

Data engineering is a fast-developing field today. Esmina, both our frontend and data engineer, brings valuable insights into the significance and challenges of the data engineer role. Data engineering is an aspect of software development, involving constant adaptation and learning, as Esmina describes. Each project presents a new adventure. It considers different data, industries, and challenges, which makes the role exciting, demanding, and constantly evolving. It's interesting to explore how data can help solve all sorts of problems in various situations. You can use what you pick up in one project to come up with creative solutions in the next one. 

Data engineer works on designing and setting up the structure for how the data is collected, stored, and processed. An important task is creating strong data models and combining different data sources so there is one reliable and accurate set of information to work with. Building and fine-tuning data pipelines constitute important responsibilities of this role. It's about making sure the flow of information happens seamlessly from where it starts to where it's needed. The data engineer needs to make sure that the requirements are transformed into a solid data setup that matches the project's goals.

Data accuracy and integrity are the main challenges in this field. As Esmina notes, fixing errors, managing missing information, and maintaining data integrity are ongoing tasks. The diversity of data, especially from different sources, requires a comprehensive understanding and an ability to process data in real time. This adds complexity to the role.

Additionally, client interaction is key in data engineering. Esmina emphasizes the importance of engaging in collaborative sessions with clients, product owners, and stakeholders to explore the data. There, clients present its structure and basic usage and we must dive deep into the intricacies. This is a must to gain a comprehensive understanding and ensure that their requirements are not only understood but integrated into the data-driven solutions we develop. Maintaining an open line of communication allows engineers to address concerns promptly. They can also adapt to changing priorities and ensure that the outcomes align precisely with the client's expectations.

Esmina advises those aspiring to a data engineering career to start with the basics of databases, data modeling, and programming languages. In particular, she recommends learning Python. Proficiency in SQL, familiarity with ETL processes, understanding of data architecture, distributed computing, different storage formats, and familiarity with collaborative tools are also important. If you want to focus your career on data engineering you have to have a problem-solving mindset, the ability to adapt, and continuously learn.

Mobile Engineering: Ensuring Cross-Platform Creativity

Samija's dual expertise as both a backend and mobile engineer at RUBICON gives us a unique perspective on mobile app development. Her experience is largely marked by her work with Flutter for cross-platform applications. She finds immense joy in the simplicity and elegance of the Flutter framework. It's the framework's efficiency and intuitiveness that fascinates her daily. Given that mobile app development is a blend of frontend and backend elements, it is making development an exciting and enjoyable experience.

The unique challenges Samija faces in her role revolve around the platform-specific requirements and limitations inherent in cross-platform development. Overcoming these obstacles often involves finding or creating the right package to address a specific issue. This problem-solving aspect shows the necessity of being creative and adaptable in mobile development.

In her advice to newcomers in the field, Samija encourages a playful and experimental approach. She believes in the power of creating small, fun apps as a way to not only enjoy mobile development but also to rapidly improve skills in this area. This hands-on approach aligns with the dynamic nature of mobile app development.

DevOps Engineering: Bridging the Gap Between Software Development and Operation

DevOps Engineers bridge the gap between software development and operations. Nadza, our DevOps engineer, shared her experience.

A DevOps engineer makes a major contribution by implementing CI/CD practices. It is important to design the right CI/CD process that makes sense for your exact project. Next up are automation, reliability and stability, and cost optimization, among many others. Sustainability and environmental impact are gaining attention, so DevOps practices can contribute to more energy-efficient and sustainable software development and deployment. 

During the project work, a DevOps engineer must collaborate with project managers and stakeholders. They have to gather comprehensive requirements related to development, deployment, and infrastructure. Writing these down and agreeing upon them is a foundation for getting the job done. Next, DevOps processes need to be tailored to meet specific client needs, taking into account factors such as compliance, security, and industry standards. Maintaining clear and effective communication with clients throughout the project lifecycle is crucial. Regularly updating them on the progress, milestones, and any issues that may arise is also required.

Nadza's typical working day starts with checking communication channels and project management tools, like Jira or AzureBoard. Then she meticulously organizes her tasks for the day. This preparation is followed by daily stand-up meetings and tackling the actual work of the day.

To stay up to date with the latest trends, Nadza commits time to experiment with new technologies, takes part in tech forums, joins online communities, and networks with peers. She believes in the power of community learning, utilizing platforms like Slack, Discord, and coding challenges to sharpen her skills.

Her advice to aspirants in this field centers on understanding fundamental concepts, being resilient, and facing challenges. 

Quality Assurance Engineering: Ensuring Software Excellence

Quality assurance (QA) engineer ensures the success and reliability of our products. Two exemplary members of our QA team, Lejla and Esma, share their insights about this role. Lejla has a Master of Architecture while Esma holds a Master's degree in Physics. Their different educational backgrounds enrich their approach to software quality.

Quality assurance engineers act as the final safeguard before a product reaches users. When a QA engineer approves that something is working, that means fewer issues for users and greater project success. This responsibility carries challenges, such as managing a high workload and finding flaws that are not too obvious. Yet, quality of work is always prioritized over quantity. It's better to take time and test tasks than to make approvals after light testing.

Their working days typically begin with morning meetings. Then, they review the backlog, plan tasks, do testing tasks, and write test documentation. Both Esma and Lejla enjoy the challenge and satisfaction of ensuring that features are thoroughly tested before going live. This contributes significantly to the user experience and project success.

For those aspiring to enter the field of QA, Lejla advises not to hesitate to ask questions and learn from every experience. Esma encourages embracing new challenges and persevering through the initial complexity of projects.

Endnotes: Together, Building the Software of Tomorrow

Developing software is a complex and thorough process. The journey involves numerous skilled professionals, each with their unique responsibilities. It includes understanding the client's needs, developing an MVP, and creating the final product. Yet, what stands out is their ability to work in harmony. They maintain smooth communication and collaboration to keep the development process flowing seamlessly. The ability to work in seamless harmony is underpinned by RUBICON’s supportive culture that prioritizes flexible hours, values personal time, and encourages a continual exchange of knowledge through engaging projects, autonomy, and the guidance of experienced colleagues. We also foster a culture where relaxation moments, such as having coffee and lunch with colleagues or playing games after work, are cherished.

Moreover, women play prominent roles in every aspect of the software development process at RUBICON, including leadership positions. This speaks volumes about our commitment to diversity and inclusion. Integration of women in tech, as seen through the experiences of Berina, Lamija, Amra, Esmina, Samija, Nadza, Lejla, and Esma, is of the uttermost importance to the industry.

Overall, the software development process at RUBICON is proof of the power of collaborative effort, diverse skill sets, and gender inclusivity. Each individual plays a pivotal role in driving innovation and delivering high-quality software solutions.

Explore more stories

Explore more stories

Explore more stories

Contact us to enhance your business through a foundation of innovation, security, and sustainability.
Contact us to enhance your business through a foundation of innovation, security, and sustainability.
Contact us to enhance your business through a foundation of innovation, security, and sustainability.