AppD Java Agent Software Engineer II Sydney
At AppDynamics, our Application Intelligence Platform empowers today’s software-defined businesses with the ability to proactively monitor, manage, and optimize the most complex software environments. Because we start with user interactions, our platform can dynamically collect millions of performance data points across your applications and infrastructure. We then apply intelligence to instantly identify performance anomalies, enable automatic fixes and continuously measure business impact. And all this happens in real time, in production, with cloud or on-premise deployment flexibility. So even in the most dynamic production environments, you can know more and know it faster. It’s more than monitoring—it’s true Application Intelligence. For more information, visit  www.appdynamics.com.
AppDynamics was acquired by Cisco in 2017 for a record breaking multiple. This acquisition reinforces Cisco’s strategic direction and its shift to software-centric solutions and provides AppDynamics with the resources and support to further accelerate the hyper growth of the business, and the career opportunities for our world-class teams.
About the Role
The Support Engineering team is responsible for coming up with solutions to help empower our customers in solving their application software and infrastructure monitoring requirements. You may be tasked with creating and maintaining reference implementations for a given technology/ies that exercise our software, helping customers who report problems by either providing them solutions without requiring any code changes, or in reporting/addressing product shortcomings, documenting/sharing best practices, keeping abreast of the technology landscape/how our customers monitoring needs are evolving, etc. Being flexible, a quick unorthodox thinker, decisive in the face of ambiguity, able to wear multiple hats ranging from technology guru to being an advocate for customers are qualities essential for success in this role. Previous exposure working directly with multiple customers concurrently is essential.
* 3+years of software development, in-depth technical troubleshooting, debugging and software maintenance experience required
* Solid computer science fundamentals – algorithms/data structures/algorithm complexity analysis are essential.
* Solid programming background in an object-oriented programming language is essential.
* Excellent debugging skills for JVM performance-related issues. Including an understanding of the JVMs memory management, especially pertinent to garbage collection.
* Having knowledge on thread dumps and heap dump analysis will be good to have.
* Out of the box, unorthodox thinking, self-starter and independent, but always willing to communicate and share ideas.
* Enthusiastic to learn new technologies and passionate about programming
* Must have a solid grasp on Unix/Linux including but not limited to commonly used commands, networking including troubleshooting network connectivity using tools like tcpdump/Wireshark, shell scripting (Bash, Korn, etc.) familiarity, file systems understanding, basic system performance commands, etc.
* Intermediate to advanced level familiarity with SQL and PL/SQL. Expected to understand explain plans – their purpose, and how to use those to tune queries, index management, etc. Any exposure to database internals, and tools for administration/backups/recovery etc. is a benefit.
* Understanding of virtualization technology like hypervisors, containerization.
* Excellent customer-facing skills and solid command of written and verbal English.
* Databases: Oracle, MySQL, AuroraDB PostgreSQL, NoSql – document oriented/columnar/key-value pair
* Other Technical Skills: App Server setup/troubleshooting – WebSphere/WebLogic, Glassfish, Tomcat/Jetty, etc., networking troubleshooting, SSL/TLS familiarity
About the Role
We are looking for a Java Software Engineer to join our team. In this position, you will be responsible for debugging complex multi-tiered applications in various Java / J2EE frameworks that can be used to test the product. You will also be responsible for working with customers to provide advanced technical support and solve complex problems in customer environments.
Your primary responsibilities will include:
* Debug multi-tiered complex applications using various Java / J2EE ecosystem technologies, learn new stacks, technologies added in J2EE and implement applications using them.
* Modify the existing applications to simulate various implementations of SOA, RMI, Messaging, Web services, Caching and commonly used development Frameworks like Spring, Struts, Servlets, EJB, Guice, etc. Use virtualization technology to create a mock environment quickly.
* Provide technical support and work with customers to solve complex issues with the product in their environment.
* Create Customer-focused functionalities to complement the product coverage
* Developing tools to help with troubleshooting and addressing product defects, fixing bugs and following up on fixes.
* Review and use System, OS, JVM, and application-level performance tuning guidelines.