There is no better feeling as aCisco Software Engineerthan finally delivering an important and eagerly-awaited feature to our customers, and that is exactly what my team (Cisco Cloud Security) did a few months ago. There was a lot of hard work, dedication and a focus on customer satisfaction while my team came together to get the complex project completed.
Based in Tel Aviv, we are small team of three developers and a team leader and our specialization is developing end-to-end features in the Cisco Umbrella product.
Not only was there a diverse technology stack that included React, Python, SQL, Go, OPA, and lexical analysis, but it also involved integration with co-workers around the globe including our Tel Aviv, San Jose, Vancouver, and London teams! Despite all those challenges we managed to deliver a high-quality feature right on time, and I learned a lot along the way too!
1. Design-Although it sounds obvious, many companies jump straight in to coding and skip over design. That's not the case at Cisco as having a good design is crucial for a successful project!
At the beginning of the project, we had meetings with all teams involved -including our Product Managers and architects. After a few healthy debates (this is what brainstorming and collaboration are all about!), we summarized everything into one document that focused on business and technical aspects. The document was reviewed by all stakeholders before coding began. Although it felt a bit frustrating at first, this made the development fluent with minimal changes along the way and helped to streamline our overall success.
2. Find your bottlenecks in advance-Each project has tasks that may block you from proceeding to the next phase -which could waste time and even delay the project.
During the early stages of our project we found these bottlenecks and removed them from our backlog as fast as we could. This included everything from learning new technology or codebases, PR that needed to be reviewed, API that would be developed by another team, or final approval from the designer. Being aware of these tasks and eliminating them quickly is a big step towards a successful project.
3. Communication and Transparency-If you have a question -ASK!! Don't hesitate. Whether it's a technical issue or something in the design you're not quick sure about -it never hurts to ask. Someone on your team may be able to clarify, or perhaps you can work together to make a process work even better.
Make sure your team has an easy way to communicate, too! We are using Webex Teams, of course, and we believe in over communication. We're always sharing our process or updating the team on a newer interface so that everyone remains on the same page towards success.
By being transparent and having extra eyes throughout the team on our work we were able to get fast feedback and do quick fixes along the way. Remember -it is always easier to fix something in the early stages of a project than finding it out too late.
There will always be surprises along the way, too. So, know how to bypass them and deliver on time. Not everything has to be scalable or super-efficient from day one -sometimes it's better to make a "quick fix" (which is secure and reliable) to enable you to deliver on time and then improve upon it later on.
Remember that there are customers on the other side -and your goal is to make their product experience perfect! I'm glad to say that is exactly what my team did.
Ready to join our global teams? Apply now.
Subscribe to the We Are Cisco Blog