I completed two years at Cisco in August recently. I think it is a good time to jot down my learnings and experiences from the past two years. It was my first corporate job; however, I did not land up in a typical software development job. Hence, my experiences are quite different and unique in a sense.
I joined Cisco in 2018. As it usually happens with university recruits, I was also randomly assigned to a team in the Office of CTO in Security Business Group (SBG) in Cisco. I got assigned to a non-product team that worked in a semi-research environment to develop PoCs demonstrating the integration of future-looking technologies with the existing Cisco portfolio. The nature of this work gave me some exciting skills and exposure to latest trends in industry, but it came with its own set of disadvantages. I will discuss some of them at the end of this article.
Take Ownership of your work
Every member worked on a reasonably independent project in my team, directly supervised by a Principal Engineer or a Technical Lead. Most of my superiors (including my manager) were located in the USA, so there were many early-night meetings involved. This also meant that nobody watched (micromanaged 🙊) me, and I was given quite a bit of autonomy. I really appreciate this aspect.
I learned how to come out of a problem when there is nobody to help or guide you. Of course, I asked for help whenever needed; the freedom I enjoyed at work was unparalleled.
During two years, there were many occasions when some of my design and development choices were questioned. I successfully defended some of them and had to change the others. In the process, I learned the caveats in my understanding and the importance of others' perspectives while solving difficult problems.
Developers should have experience with operations
As I mentioned above, most of my projects were individual projects. Naturally, the responsibility of setting up and maintenance of the build-environment also fell on my shoulders. My experience with Linux system administration from college time came to my rescue here. In the process, I learned how invaluable the skills of DevOps can be for a developer.
There is a lot that I don't know yet, but my basics have grown strong enough to grasp any new technology in a reasonable amount of time over the past two years.
Communications
I have never been a good speaker, and talking to strangers has been one of my weakest skills. After joining Cisco, this aspect of my personality has changed considerably. Attending regular meetings and speaking about my ideas and work gave me confidence. There are still some caveats with my public speaking skills. I hope that I would be able to overcome these challenges with more experience.
Innovation
The industry provides you access to the best minds in your field. You get to meet wise people working and using their knowledge and expertise to generate ideas that can change the world (or at least the industry). It motivates you to compete with them. Although I have been unable to generate any patentable idea in the past two years, I have been invited to participate in the discussions, which led to patent applications. My biggest takeaway from these discussions was that breadth is more useful than depth when it comes to idea generation. Knowing various fields and connecting two seemingly different domains is a skill whose importance cannot be overemphasized.
Another thing I learned is that aiming for perfection doesn't help anyone. To keep waiting for that best idea to pop up in your mind is illusionary and will never happen. I have been a victim of this tendency to perfectionism the whole of my life. For the past couple of months, I have been actively trying to avoid this habit. My inconsistency in regularly writing on this blog can also be attributed to my search for the ideal blog post.
In my opinion, quantity is better than quality. The same is true with the generation of ideas. If you keep waiting that you will get the ultimate idea one day, believe me, it will never happen.
Take a step back & rethink
It happened quite a few times that I started looking for a solution to a problem in one direction. After spending a considerable amount of time, I figured out that the direction was wrong or worse, my understanding of the problem was wrong. In such situations, it is better to backtrack and think again. It also helps to ask someone for help. Sometimes, others can give you a different perspective that you might not be able to see.
Don't hesitate to brag about yourself
When I joined Cisco, my colleagues suggested me to set up 1-1 with my manager to stay in touch with him and showcase my work. I hesitated. I thought that what is the point of talking about my work when it is visible to everybody through weekly meetings. Now I understand, it is such a crucial step which shouldn't be ignored at all. Keep a brag document and use it to keep records of your work, achievements, and accomplishments. I never needed it till now, but I plan to use it in the future.
Coming to downsides, I have only one qualm. As I mentioned above, my team was not a product team. So I missed out on some of the necessary product development experience. I believe that having some experience developing and shipping production-ready code is an absolute requirement to move towards my career goals. Thankfully, I have switched my team now, and now I will be working on a full-fledged security offering of Cisco.
So, these are some of my insights from the past two years at Cisco. I want to share a lot of other thoughts, but their time hasn't come yet. I will definitely share more of these as I spend more time in the industry and tech.