Job Description:
Software Engineer (focus Network applications) Job Description:
We are seeking a highly skilled and motivated Software Engineer to join our Network Applications development team. In this role, you will be responsible for designing, developing, and maintaining robust and scalable network applications. You will collaborate with cross-functional teams to integrate network applications with existing systems and develop new solutions to enhance our network capabilities. This position offers the opportunity to work on cutting-edge internet technologies in a dynamic and innovative environment. The ideal candidate will be a quick learner, capable of picking up diverse networking applications, application protocols and supporting programing languages concepts quickly.
Responsibilities:
- Design and develop high-performance network applications using OOP languages like Java, Python, C++.
- Implement, enhance network applications such as DNS based global load balancers and supporting policy engines, HTTPS based reverse proxies and backend for supporting services like management and reporting portal.
- Implement, enhance and maintain network control plane applications like DNS/DoH/DoT, DHCP, Radius, NTP
- Implement, enhance network applications related to configuration of network devices and efficiently managing changes to those configurations over time.
- Be able to store and retrieve network application and device configurations in relational databases using optimized queries and best practices.
- Develop and maintain RESTful APIs for IPC across components and data retrieval.
- Perform test driven development and create automated unit test cases (Junit, Pyunit etc.) and end to end test automation for all development tasks.
- Optimize existing network applications for security, performance, reliability and scalability.
- Participate in the entire application lifecycle, focusing on coding, code reviews, debugging, and testing.
- Write clean, maintainable, and efficient code, adhering to best practices and coding standards.
- Collaborate with network engineers and other software developers to integrate network applications with other systems.
- Provide technical support for network applications, including troubleshooting and resolving issues.
- Keeping up-to-date with emerging trends and technologies in network engineering and programming paradigms.
Preferred Qualifications:
- Master's degree in Computer Science or Computer Applications, or a degree in Electrical and Computer Engineering with computer science courses.
- 3-9 years of industry experience preferably in data communications companies.
Required Skills For software engineer network applications:
- Expertise in Object oriented programming design and languages such as Java and C++ and knowledge of Shell programming and Python.
- Solid experience with normalized database design, optimization, and management in MySQL.
- Strong knowledge of SQL, foreign keys, multi table joins, views, different join types, E-R diagrams, ORM mapping and database transactions and stored procedures.
- Familiarity with JSON, XML, XSD, web services and RESTful APIs.
- Expertise in asynchronous socket programming with Java and C++.
- Expertise in data structures, algorithms, and design patterns. Knowledge of test-driven development, thread safe programing, best practices/tools for development
- Knowledge of data structures especially tries, trees and graphs along with efficient algorithms to traverse them, application of tries on IP address and CIDR subnet searches.
- Experience with multi-threading safe programming, real-time systems, and inter-process communications.
- Understanding of network protocols (TCP/IP, QUIC, DNS, HTTP, DHCP,.),
- Familiarity with software development and CI/CD tools (e.g., Git, Ansible, Jenkins).
- Detailed knowledge of Linux-based OSes (e.g., Ubuntu, Rocky Linux, Red Hat)
- Strong analytical and problem-solving skills.
- Excellent verbal and written communication skills.
- Ability to work collaboratively in a team and independently with minimal supervision.
Desired Skills For software engineer network applications:
- Knowledge of virtualization and containerization technologies (e.g., KVM, Docker).
- Ability to create new microservices from scratch
- Knowledge of JSON, NoSql databases like MongoDB, Cassandra etc.
- Knowledge of XSLT for XML transformations
- Familiarity with Cloud computing technologies especially Azure based.
- Familiarity with network and application security best practices including OAUTH, certificates, PKI.
- Understanding of networking protocols (TCP/IP, QUIC, DNS, HTTP, DHCP, BGP, OSPF, ISIS, VRRP, MPLS)
- Experience with Agile/Scrum methodologies and a collaborative approach to software development.
Weekly Hours:
40
Time Type:
Regular
Location:
Bangalore, Karnataka, India
It is the policy of AT&T to provide equal employment opportunity (EEO) to all persons regardless of age, color, national origin, citizenship status, physical or mental disability, race, religion, creed, gender, sex, sexual orientation, gender identity and/or expression, genetic information, marital status, status with regard to public assistance, veteran status, or any other characteristic protected by federal, state or local law. In addition, AT&T will provide reasonable accommodations for qualified individuals with disabilities.