Communication is the most important skill for collaborating with other developers to ensure that you're on the same page when you're building products. Also so that people are keeping track of each other's timelines, and the understanding of what the product requirements are consistent. Hi, I'm Laila Rizvi. I am a back-end software engineer at Instagram, working on Instagram calling in San Francisco. Effective collaboration is important so that we can move cohesively together on large projects with people that have a wide range of skills. As engineers actually have to collaborate with one another a lot. When we build features together, we have to work in parallel with one another to design the best features for our users. We also have to collaborate with a lot of non-engineers a lot. For example, when we built Instagram Live, we had to work with our product managers to figure out what we should build. We had to work with our user researchers to figure out what areas we should focus on to build the best products for our users. We had to work with our designers to figure out the right look and feel for our product. We had to work as engineers to figure out what we can actually build in the timeline that we had. Communication, is one of the most important skills for working with other developers. Learning how to give developers the right amount of context for what they're working on. Learning how to ruthlessly prioritize your work is also very important as a software engineer, there's always going to be an endless amount of things that you can do to improve your product. Learning which things are most important to unblock other developers or unblock yourself is the most important skill. The last thing that's really important to learn as a software developer is to accurately estimate your products, when you first start out, it'll be a little bit tricky, but over time learning how to say how long the project is going to take and being able to explain the trade-offs is going to be very critical. The skills you need as a software developer changes from company to company a little bit. When you're at a big company like Meta, engineers are much more specialized. Whereas if you're in a startup, you wear many different hats. As an engineer at Meta, we have to learn to be able to give just the right amount of context to people for what we need to get done. Because we're working with people a little context on the work we're doing. There's so many engineers there. But if you're in a startup, if people generally have a little more context on what you're working on, but they might not be as specialized in that area, you have to do a little bit more learning potentially, and you have to maybe give less context to them. Some challenges I've encountered while learning to collaborate is that, I have to learn how to adjust, how I work with different people depending on their work preferences. Some people I work with are visual learners. I learn to whiteboard when I'm talking to them. Some people I work with, like to think before they speak. I learned to be a little more patient when I'm talking to them, to listen to them. A scale that I'm working on learning to develop my own career is I'm learning how to work on mobile. I'm a back-end engineer, and I work with mobile engineers every single day to better build products for them. It's nicer for me to understand how they operate, how their codebase work so that we can build better things together. To learn mobile, I took an Android boot camp class at Meta that Meta provided for back-end engineers interested in learning mobile. After I finished the course, the Android engineers on my team have been giving me small tasks and small projects for me to drive so that I can learn a little bit more about how they work. Practicing effective version control leads to better collaborating because it helps you understand why certain changes were made. If you look at commit. It also helps you context switch between different features or projects that you're working on. Effective collaboration led to a better outcome on a recent project of mine. I'm a back-end engineer, and I was driving the back-end parts of IQ project for my team, I had unexpectedly take time off but I had a lot of clear commits for my code changes in Git. I had a lot of documentation for my team so they were able to easily pick up where I left off, and the project ended up staying on track. You should keep learning to collaborate with other people, because the more people you work with, the better products you build, because you'll get different perspectives on what you're building. It's rewarding because your product that you're working on ends up being better, the more people you work with, the more people you can learn from. Ultimately it's rewarding, because the product that you build is going to be better. Because it's going to have a lot more different input and a lot more different perspectives for how it should be built.