I’m a developer and I’ve been tutoring new coders for years. One of the biggest things that trips new coders up when they’re trying to get a job or even when they’ve got one is they never learned how to code together with other people. That’s why myself and some others wrote this guide, covering who does what and how on a dev team, so you won’t make the same mistakes. Wanna know more about these guides (there are others), me, and why we made them? See here.
If you consume just one thing from this list, the following is a relatively quick video on all the different roles on a software development team and how they fit together.
If you want some more information, or if you just prefer reading to watching, try these resources too:
- Who does what on a development team (~3 min article)
- The seven phases of software development (~10 minute article)
Combined, those two articles will put everything else below into some good context and have you ready to get a bit more depth so that you can take part in one of these teams either professionally or in getting practice for a group project (which I highly recommend). They are also probably both leaving you wondering… okay so how specifically do those teams work? We’ll get to that.
The way that dev teams work vary with companies/startups, so there isn’t a single set process to how developer teams work and all companies follow since it’s all personalized. There are various methodologies such as Agile that can be implemented by a company in getting work done, things that will be a benefit to know and understand prior to entering a new work place, but the specifics of how that work gets done will vary quite widely. Other than the general concepts like software dev cycle or implementation of some version control system (again depending on the company), your eventual experience of development work may differ from what you read below. Thus, I’ve tried to keep things fairly high level, avoiding too much detail, so that you’ll have just enough context to move forward confidently. I’ve also focused a bit more on Agile and Scrum as those seem to be the more common systems in the workplace.
By this point, you’re probably thinking that this is all a lot to read and get through, and it’ll take effort to work with other learner developers / designers / PMs in this way, but that’s precisely why it’s important to an employer or for doing this in “real world” teams. Having this experience and knowledge will make a hiring manager far more confident in your being able to fit into how their team actually gets work done, not just your technical skills. This is something that bites self-taught developers (and even some bootcamp graduates and CS students, depending on their program) time and time again with trying to go from skills to job, and the biggest frustration for everyone on a team when a brand-new developer joins. To make things worse, self-taught developers often ignore all of these skills entirely in favor of taking more and more tutorials, so get an edge over other applicants and actually learn this stuff! As important as it is that your technical skills are great, don’t neglect the fact that software development is a team sport.
Product managers are like the ship captains for products (a mini-CEO or “product owner”) and the project manager is like a first mate. Depending on the size of the company, developers may work directly with product managers a lot (e.g. in a startup) or almost never see them (e.g. in a massive company). In smaller companies, product managers will also take on project manager responsibilities, so the two are the “same person.” There can thus be a lot of overlap and blurred lines between the two roles. The two resources below will help to clear it up a bit:
- What is a product manager and how do they work? (quick video)
- What is a project manager and how to do they work? (quick video)
Particularly on smaller teams, product or project manager will often also serve as a scrum master if your team is using scrum (which I cover below).
If you’re interested in more details on how product and project managers work in an Agile setting, particularly if you want to work as one in a group project, try these guides from Atlassian, the company that makes Jira, which is one of the most common software development project management tools:
Despite or because of project/product managers being integral to the development cycle, developers will either love or… not love… working with them, and the ones we like working with tend to have some things in common, watch this for details.
When you hear “designer” you’re probably thinking of an artist type of person who paints a picture of what a site should look like. Designers in a development team may do this (e.g. web or UI designers), but they’ll also often do a lot of other things too. Before we get into too much detail, familiarize yourself with UI versus UX with these two quick videos (UI and UX). As you can see, the user interface is quite specific but user experience is very broad. In crafting a user experience, designers are vital partners to the product & project managers and key stakeholders working with developers. Often the designer and product owner will brainstorm very closely together on what a product roadmap should be (what should get done and when). If you’ve read the resources about the development life cycle above, this quick thread delineates where a designer fits into that. Designers will often make wireframes and write the user stories that define what problems a dev team will solve, the following resources will help you to flesh out what that means:
- What are wireframes? (quick video – watching this will help you to understand that and how designers define how an app works, not just how it looks)
- What are user stories? (this article goes through how designers and most members of a dev team frame the user-centric work they need to do)
- Designers will also be particularly focused on user accessibility (video), but so should everyone on the dev team
I’m not a designer, but I made a quick guide on some more essential design concepts here. If you are a designer or know more about it than me, please contribute to it! All these guides are wikis and I welcome your edits.
One of the best things I recommend in learning to code or build software beyond tutorials is to get together with a group of peers and mock yourselves up into a development team. The Codecademy Pro Slack community has specific resources and prompts on this sort of thing, but you can also DIY it with other people you find here on the forums, the Codecademy Facebook group, or something else like a local meetup. If you are tackling a team project, depending on the size of your team you’ll usually want to have a product / project manager combo and a designer. Teammates playing those roles can also write code, but it will help to have specific people responsible for specific tasks. Dividing out tasks from there can be easy, fun, and effective when done in a scrum setting, which I recommend and cover below, or you can keep it simple and have the project manager just assign out work. If you want to go ahead and build a project together, I made a guide on getting projects started too.
There are a lot of different ways that developers get work done, but the most popular models for the development cycle are Waterfall and Agile. Which one you use depends on the company and the project you’re working on, and sometimes you can mix and match elements of both.
Agile is generally more common for getting work done in the tech startup world, so many of the resources in this article as a whole will lean more to Agile than Waterfall.
If you’re familiar with rugby, you’ll recognize the word “scrum” as something that players do when they all lock arms together and push forward, like this:
That’s how a lot of developer teams are set up too, where we can get our heads together towards common goals, and it’s also called Scrum. Another, similar setup is called Kanban, which is a lot more fluid. Some teams combine aspects of both in Scrumbans, Kanplans, or other hybrids, but those are rarer and not something beginners should try, better to first become familiar with one or both and more complex variations can follow.
If you’re interested in more practical info on how to use either Scrum or Kanban, for example if you’re working on a small group project together, I’d recommend the resources on Atlassian – here for Scrum, here for Kanban, and browse from there. If you’re focused more on how developers work in an Agile framework, check out this overview, but know that a lot of the developer focused resources there may be super confusing to a beginner.
If you’re doing a group project with other learners and have the time to work this way, I’d recommend trying Scrum first. Kanban can be easier to manage for learners with very different time commitments. Learn about both and discuss it with your team, it’s most important that you agree on what’s right for you.
Here are some more resources about other, specific parts of the Scrum workflow:
- What is a sprint, how do they work? Quick video overview and some more detail in an article.
- How to plan and run a sprint (read this article), and then some quick tips on effective sprint planning in this video. Cheat sheet here.
- Daily standups and why they’re useful (article)
There’s more to working on a team than knowing who does what and how to fit in with that. Developers don’t just sit off to one side coding away – as I hope you’ve learned from the above, software development is a team sport, and I’d argue that programming itself is a social activity too. Don’t neglect your soft skills in working with others, it’ll help you to get the job, get the job done, and rise through the ranks.
- The importance of teamwork to developers (article)
- How you can be a good team player on a dev team (article)
Pair programming is a useful thing to do while learning even if you don’t do this at your eventual job (e.g. you want to be a solo freelancer). It’s more a specific dynamic for working together than a technical tool per se. Some developer teams will occasionally use this skill in order to get past technical issues.
- What is pair programming?
- Pair programming tutorials - download this PDF, watch this for how to do it in a way that’s best for learning, read this to try it yourself, and this as more of a guide.
- If you’re a beginner, watch two Codecademy employees pair program and follow along yourself here. The course they cover is basic, but that’s not a bad thing.
Please reply to this thread with your own resources, advice, and feedback! We made this post a wiki so it can be updated and maintained by the community just as we combined to make them in the first place, we’re just starting them off. See our other guides here.