Often our clients come to us with great ideas, but being the professionals in what they do, they do not necessarily know how we work at RubyGarage, particularly, how we assign different specialists to different projects and why. This blog post is aimed to help you get accustomed with all kinds people somehow involved in the product creation product.
Before we proceed to the web development team, it is important to clear out two categories of people that are vital for any product we do:
Final users - those are the people who will use the product after it’s released to the public. The successful product is the one that addresses the needs of its users in the most effective and comfortable way. So what we do at RubyGarage is basically trying to understand and implement the best way to satisfy the wants of final users.
Clients - are the ones who have a desire to create a new product. Here we should notice that often the client is the company that has a few people responsible for the product. There might be a business owner, a product owner, specialists involved in different aspects of the product and so on, and we easily communicate with all of them when required. For this post we’re going to call them simply clients.
Finally, an average RubyGarage development team contains approximately 3-9 members who are fully dedicated to a particular project and responsible for building the product. In web projects a typical team includes:
1. Product & Project Manager
In general, the product manager (or simply PM) is responsible for making a successful product. For that he is often required to communicate with clients and help them make necessary decisions, not mentioning the necessity to know completely everything about the product itself.
To make a better understanding of PM’s work, we’d like to highlight his key strategic responsibilities:
Understanding the final user needs
As stated above, a product cannot be successful without fulfilling the needs and desires of those who will eventually use it (and pay for it). So the PM does everything to collect the necessary info and process it. Such data provides necessary insights on the product roadmap and priorities in deploying features.
On the other side, it is the client that comes to RubyGarage and has the idea of the product to be implemented. So the PM who gathers requirements and negotiates them with the client.
Communicating with the client
Although it’s obvious that the PM mediates between the client and the web development team, communication with the client implies a few important things to mention. Since the product manager has the necessary experience, he helps the client to create a perfect business model for the current product, explains the product roadmap and helps decide what to do next, thus tracking the project progress.
If there’s anything the team requires to clear out, it’s the project manager who works closely with them and goes to the client for additional info. He also collects the client’s feedback and manages his expectations once a product or its part has been presented.
The previously gathered requirements are then represented as documentation for the whole team, where its every member can also see how the product should actually be done, and the tools and resources required for that.
Managing the time schedule
The successful project is also much about the speed. So it is the product manager who defines how many people should be involved in the product creation process and when and how much time they should dedicate to it. The progress is tracked and synced with the client.
Defining and controlling the workflow
Here the product manager defines the interaction and communication between the team members and the milestones. Once the milestones are defined and the development process has started, the project manager keeps an eye on how it goes: whether the planned functionality is released in time, if all team is perfectly in touch; whether people stick to the workflow in general.
we mention here the product manager and the project manager as a one person, however, in some companies these responsibilities might be split. In this case the product manager takes the responsibility to bring the product that corresponds to the client’s requirements, while the project manager keeps an eye on the process of product creation and does everything to stick to the deadlines and establish the best workflow possible.
As you see, the product manager is the key person in the project who does a lot of work during its course. Sometimes our clients prefer to assign their own specialist for this role; in this case we always highlight all the above-mentioned responsibilities to be sure that the client is fully aware of our workflow and of the consequences of such decision.
2. UX Designers
Just like the product manager, the UX designer is responsible for gathering the requirements. However, while the PM just manages the process, the UX designer knows exactly how to do that, which includes:
- Creating personas, which are characters representing different kinds of target users who are most probably will use a product in a similar way.
- Building user stories (also knows as scenarios or storyboards), describing the user behavior during his interaction with the product.
- Designing the information architecture, i.e. the way the information in the product will be organized and represented to its user.
- Designing wireframes, which is basically a product blueprint that has all its elements arranged to help accomplish a user’s goals. (But sometimes it can done by the UI designer).
- Creating a prototype of the product and then performing user tests on it. The prototype helps to check that users will act just like the previously created personas, behave according to the existing user stories and be satisfied with the way the information is architected.
It is important to note that the UX designer is constantly involved in the project. Even when the product is done, the UX designer keeps evaluating user experience to improve the product effectiveness. Such research can provide hypotheses on how the product can be further optimized, how the site conversion can be increased, how the user satisfaction can be improved, etc. Each hypotheses then gets checked via user testing.
3. UI Designers
The User Interface designer is responsible for the visual design in general. That includes selecting the color scheme, the fonts, the general visual style, guideline adoption to the interface design requirements and the overall visual representation of the product. So while the UX designer creates the prototype functionality and user interaction patterns, the UI designer brings visual design to it. And when the visual design is ready, only then the prototype can be used for product demonstration.
A specific aspect of the web product is animation, which is usually done via programming code for optimization and compatibility reasons. But on the prototype stage the UI designer can quickly draw simple animations to demonstrate the future look and feel of the product.
Sometimes, when the company is very young and doesn’t have it’s own brand book, the UI designer can also think of the branding essentials, such as logo, brand colors and fonts, which are often used in the product’s visual style.
Both the UX and UI designers work tightly with the developers throughout the whole product lifecycle. Not only they interact for a better understanding of the product, but also because of the limitations each team member has when implementing the desired functionality and design.
Often the UX and UI design are done by one person in a team, and RubyGarage here is no exclusion. Our experience shows that such approach is effective in small teams. In such case the UX/UI designer is responsible for both the visual and information design, has the necessary competences and skills to be responsible for it and better understands and visualizes the final product.
When design of the product is ready, it’s time for developers to bring it to life.
Developers is the most valuable resource of RubyGarage and, obviously, of any company involved in building IT products. Usually ours developers are full-stack, which means that they can do any development-related work within one product, but in case the product is pretty large, it’s always best to split the responsibilities and improve the workflow. In the latter case our developers are split into a few groups.
HTML/CSS developers are responsible for taking the previously designed visual representation of the product and turning it into the code. Notice that we’re not talking about functionality here, rather about how to convert the artworks made by UI designers into an optimized code that is quick to load and easy to improve.
Front-end developers work on the functionality of the product interface, i.e. a particular part of the product with which the final users will interact. In other words, front-end developers are responsible for all the components manipulated by users. In their work they use primarily next tools:
Eventually the front-end developers should check if the visual design of the product perfectly corresponds the work provided by UI designers, if it works as intended in all popular web browsers, if it is responsible (and looks well on any screen) and if the code is valid.
If the product should be represented on the mobile platforms, this is where iOS/Android developers come into play.
Back-end developers go deeply into the product and are responsible for its functionality, business logic, and for the infrastructure and any back-end tools required to make it work. Thus, they use a completely different set of tools:
- Ruby. That’s an object-oriented programming language having a lot of advantages for making web products. (For more details, check out our “Cool stuff about Ruby language” post).
- Ruby on Rails. Being one of the most popular and used web application frameworks written in Ruby, Ruby on Rails also encourages following many web standards and thus is perfect for building web products.
- Sinatra. It’s a small open source web application library providing a free alternative for Ruby on Rails. Unlike RoR, it is focused on creating simple web applications quickly and easily.
- RSpec. A complex Ruby framework used mainly for tests and ensuring the quality of the product.
- PostgreSQL. It’s claimed to be the most advanced database storing and management system for all sizes of applications, and that’s why use it in our workflow.
Of course, that’s not all the tools that back-end developers exploit, but the most used ones.
Another responsibility of back-end developers is maintaining server infrastructure changes and software delivery processes, a compound of practices also known as DevOps. DevOps and back-end development is often done by different people if the project is big enough.
In general, it is the developers who are responsible for making the functional product that is scalable, testable, fault-free and corresponds to the business requirements. Sticking to the adopted design patterns and code style guides, the developers should write the code of the highest quality so that it could allow to quickly change the product structure and logic in case of any need (for instance, when it was decided to pivot the product or the final users were unsatisfied of the product and it requires major remake). If you want to learn more about it, such approach takes its roots from the Extreme Programming methodology, which is aimed to ensure the quality of code written.
5. QA engineers
Quality assurance engineers are always involved in the web product creation process since they check if the product or its functionality corresponds to the business and design requirements. Such checking is also known as acceptance testing, which is performed each time the developers bring out the new functionality.
In case acceptance tests are failed, the QA engineers write bug reports and follow the process until everything is fixed. In general, QA engineers should avoid bringing the low-quality product on the production server.
Other than that QA engineers can sometimes perform code review, be responsible for quality assurance in processes like software integration, change management, release management and others parts of the product cycle. Such responsibilities often depend on the project and on the way the team builds its workflow.
This is basically all the members that should be present in every web development team to bring the highest quality product possible. So now, if you’re going to hire a web team, we hope you won’t be confused with all those different kinds of people working hard on your product to make it shine.