Interview with Mr. Sundeep Udutha
As a Software Developer Intern at Cisco Systems this summer, Sundeep is mentoring my path into the world of Cloud Services and Networking. He is one of the Technical Leaders for the design and architecture of InterCloud Fabric Hybrid Cloud Project at Cisco. Below are a few questions I asked to gain an insight into the career of a Software Developer.
1. For how long have you worked at Cisco & in what capacity?
Sundeep started working Cisco June 2007 after completing his Master's in Computer Science from University of Missouri-Kansas City. He started working as a Senior Software Engineer uptil 2013 and then transitioned into the role of the Cisco InterCloud Fabric Director in Cloud Services and Networking Group at Cisco. As a recent Technical Lead for the Hybrid Cloud and Management Services Project, Sundeep aims to enchance the design and user model.
2. Please describe the difficulties you have faced in your career as a Software Developer
Sundeep has stepped into many shoes during his journey as a Software Developer. Below are some of the challenges & obstacles he articulated based on experience.
- Analysis paralysis-Over-analysing a problem or a solution takes up many man-hours and can prove detrimental in the the long haul.
- Sprint planning-While transitioning from the traditional software development model to Agile, Sundeep talks about the dire consequences of not planning a sprint correctly. As one of the technical leads, he has to spend considerable amount of time on choosing the right User Stories to groom and implement.
- Story sizes to fit into one Sprint-He further explains how important it is to make sure the user-stories chosen are not over-promised to the Product Manager and dont overwhelm the developers.
- Overengineering a solution vs. just right solution
- Cross functional dependencies– One of the major roles of a Technical Leader are making the right trade-offs. Functional requirements clarification should be given equal priority as Product marketing feedback.
- Proposing and overcoming communication challenges-The communication stream between the senior management, Product manager, developers and other technical leads needs to be efficient and effective. This proves as a major challenge due to availability co-ordination and time-constraints.
- Skill set Issues-Lack of open source tools knowledge that can be ideally reused
3. Please describe the technologies you work with on a day-to-day basis
Sundeep has had over 10 years of collective work experience as a Software Developer. Some of the technologies he used are:
- Code Versioning Systems:
- Git
- Cisco custom ACME tool – wrapper on ClearCase
- Build Tools:
- Make – C
- Maven, Gradle – Java
- IDE:
- Eclipse, IntelliJ – Java
- PyCharm, IDLE – Python
- VIM – Bash scripting
- Debugger Tools:
- GDB for C
- IDE provided debugger for Java
- Chrome inspector – Java script
4. Please describe the Software Development Lifecycles you use in your current project.
- Agile SDLC - Sprint planning, daily scrums, backlog grooming, three amigos meeting to take story confidence from 20% to 50%, design peer review
- Waterfall SDLC - Functional specification review, design specification review, code development, code drops to QA
5. How do you plan/organize your day at Cisco?
Apart from regular team software development life cycle, Sundeep spends some time personally thinking about things to do for the day, plan and put some expectations, give scope for interruptions and execute.
6. What types of Software do you develop for Cisco?
- Application programming
- Java programming for management layer or control layer
- C programming for embedded systems - data path forwarding, control layer.
- Scripts for anything that is repetitive day to day
- Python scripts for unit-test or infra tasks – copying images, installing something, local build, deploy etc
- Bash scripts for infra tasks – copying images, installing something etc
7. Please describe your over-arching role in Cisco as a Software Developer.
Sundeep carefully articulates his activities and responsibilties at Cisco. A concise list is below:
- Take marketing requirements and convert into functional requirements by holding daily scrum & look-ahead meetings with developrs and technical designers
- Design for a feature and and review designs of peers, so gain an overall understanding of the product & observe commonalities and flaws
- Use powerpoint slides, UML diagrams – sequence diagrams etc - to pictorially depict ideas and decisions to the whole team.
- Participate in team’s design documents, test documents to develop a strong literature about the system being developed. This will typically help future team-members to understand the system and build upon its design.
- Develop code, unit-tests, functional tests and perform daily activites like stand-up scrum meetings etc s a software developer would
- Contributing towards automation testing - Sundeep claims that he sees tremendous potential in autocloud tests & functional tests to help deliver a high quality, robust product to the customer.
- Test the code developed. Sundeeps affirms that that testing is as much as a responsibility of the developer as is developing code & use-cases.
- Develop debug tools required – scripts, framework provided CLI commands to dump database
- Integrate with other developers work for full system functionality and do system testing
- Coordinate with cross functional teams(Product marketing, Technical Marketing Engineering, Documentation team, Manufacturing team, QA, customer support teams, release engineering) to ensure appropriate understanding of developed feature.
- Support customer support or escalation teams to address customer issues hence re-enforcing a work ethic in the team that facilitates customer-oriented development.
- Adapt the local environment or QA test beds to address customer use cases to the extent possible
- Provide feedback to solution testing teams – use bunch of external products, other internal products forming a solution offered to customer
- File any patents related to the work or other ideas discovered
- Identifying open source libraries used and registering in company tools to track the usage
- Ensuring the release packaging is done, release process to customer