To gather insights for DZone's Cloud Research Guide, scheduled for release in April, 2016, we spoke to 28 executives, from 23 companies, who develop and deploy applications in the cloud for their own company or for their clients.
Here's who we talked to:
Neeraj Gupta, S.V.P. Product & Engineering, Apcera | Jad Naous, Product Lead, AppDynamics | Ez Natarajan, V.P. Head Cloud Services Business Unit, Beyondsoft | Alon Girmonsky, CEO and Founder, BlazeMeter | Kunal Bharati, Cloud Architect and Nishant Patel, CTO, Built.io | Sacha Labourey, CEO, Cloudbees | Deirdre Mahon, CMO and Fraser McKay, V.P. of Products, Cloud Cruiser | Flint Brenton, CEO, CollabNet | Ali Din, Senior V.P. and CMO and Walid Elemary, V.P. Product Development, dinCloud | Mike Masterson, Director of Strategic Business Development, Dynatrace | Gabe Monroy, CTO and Jasen Hansen, Chief Architect, Engine Yard | Fred Simon, Co-Founder and Chief Architect, JFrog | Jim Frey, V.P. of Products and Ian Pye, Co-Founder and Principal Engineer, Kentik | Johan den Haan, CTO, Mendix | Mounil Patel, V.P. Strategic Field Engagement, Mimecast | Faisal Memon, Product Manager, NGINX | Arvind Mehrotra, President and Global Business Head – Infrastructure Management Services, NIIT Technologies | Jens Eckels, Director, PaaS Business Group, Oracle | Pat Harper, SVP Operations, PGi | Joan Wrabetz, CTO, Quali | Partha Seetala, CTO, Robin Systems | Nick Kephart, Senior Director Product Marketing, ThousandEyes | Kiran Bondalapati, CTO and Co-Founder, ZeroStack.
When we asked these executives, "What are the skills that make someone good at developing and deploying applications on the cloud?" here's what they told us:
- The cloud symbolizes a significant infrastructure change from owning hardware. Cloud is providing infrastructure as a service. There is little visibility into what you’re actually getting and the performance of the resources you are paying for. We provide the ability to know what you’re getting and the performance influence at each level so you know the performance and influence of each of the various elements of the cloud.
- Data is coming from the cloud. The cloud is a starting point. Need to know where the data is coming from.
- As long as you’re following the 12-factors you’ll have a broad set of programming languages that enables developers to use what they want. The platform can bend to your needs.
- Knows their way around the sandbox. We offer a self-service catalog for those with no or few skills. The more complex the Dev/Net model the more it's all API driven. The cloud provides a veneer with API access you can control everything through the public cloud interface. 50% of our clients create and run sandboxes through the self-serve catalog. The other 50% are developers that get in and manipulate switches, routers, and APIs.
- Understand application complexity out of the box. Know the requirements of the business and the customer. Look for opportunities to be innovative. Have a framework that can be built around business requirements. Understand the UX, whether or not the customer is comfortable and if not can you get them comfortable. We look for someone with intellectual skills around programming, UX, and problem-solving.
- It depends on the layer of the stack. More people are compressing the stack with DevOps. If someone is in DevOps, they need to know how the infrastructure works – what’s available on AWS, how machines are deployed, infrastructure or app problems, fault-tolerant code, reduced latency for requests. Each request needs to be low latency since an app may be running hundreds of tests at a time and deploying quickly.
- Understand the components of the cloud and their boundaries – Java to the next level with the container environment and the next generation of Java. Know where the platform is headed. Microservices based on the architecture the application is built in. Know which cloud provider supports that network. Container services are an orchestration framework. Understand how to use the algorithm in the cloud what APIs are needed to scale with. Developers must think about how the app will scale.
- 1) Good at building apps, knowledge of different architectures, leverage knowledge, logic, and coding skill. 2) Thinking about security on the front end. 3) Premium on ease of use since most of the apps are used on mobile.
- Difficult to find one person that can do all of the things needed – Agile, continuous delivery, UX, security, data ownership. You need a team when looking at cloud strategy. A cross-functional team that has a common understanding of what you are trying to achieve and how you’re trying to achieve it.
- It’s challenging. Know how to debug distributed systems. It's not a binary thing you're drilling into as you focus on high reliability. Any user interactions lead to hundreds of server touches. Must be able to work around failure. Good sense of high-quality programming on and continuous development environment – staging, production, rigorous attention to testing, accountable and ready to help.
- Shift from creating to assembling. Think of app design in waterfall model not assembly of the architecture with well-defined API contracts. Aware of ecosystem and security. How to deploy and scale the app.
- 1) Appetite for keeping up with changes in cloud technology – from January to July the tech stack can become obsolete – containers did this. Stay abreast of important changes in the technology stack. 2) Focus on the minimum viable product. 3) Ability to build agnostic of platform or provider. Achieve choice through the cloud.
- Developers no longer just write code. They need to be cognizant of a complex system working to solve problems. Think DevOps style. Developers have to keep the big picture in mind – how things work in the field and on their own networks. Follow design patterns to keep things simple. Understand what’s going on when the application is running. Understand all of the operations even if you’re not responsible for them.
- Not necessarily technology experts but people eager to change. Willingness to compromise. Change in thinking that your app is special. Not using something standard. Electrolux and Netflix operate entirely on AWS – why isn’t that good enough for you? Think about the app as standardized. Don’t develop complexity for the sake of complexity.
- A backend developer must be good at technology, coding and programming. On the cloud side you must think scalability and high availability. Know deployment tools like Chef and Ansible. Frontend engineers work with APIs. Depends on if you’re a developer or DevOps.
- Our goal is to understand the business domain and to find solutions. Transform the business problem to a visual abstract model of the app. Ability to model the app to solve the business problem is key. The platform should be able to support a cloud-native app on any type of cloud (public, private, or hybrid).
- DevOps enables you to structure communications and your team around the business to solve a problem and provide business value. This leads to innovative solutions and a redefined culture. A big part of is the NGINX tool set and the automation it enables.
- Ability to build solutions across multiple platforms to provide a high-quality customer experience. Ability to work with geographically dispersed teams. Stay up to date with technologies that are constantly changing. Collaborate to provide value.
- Automation. Automate everything if you are deploying to the cloud on a regular basis. Write code to do the work.
- It depends on what’s needed. Complex architectures require different skillsets, different components, knowledge of mobile, client-side development and the transactions taking place.
- Ability to learn new languages and frameworks, front-end like Angular JS, Docker on the operations side. Know how to use in the environment and wrap into the product. Comfortable, curious, learning new frameworks. What are the new frameworks to be working on? Trying out the latest thing.
- If you're using the right cloud technology, it should be similar to the kinds of skills you already have as a developer to a point. But cloud-native development tends to require a broader focus on APIs and services and awareness of the cloud's deployment model around it. Microservices-based development is a somewhat extreme example of this, but if a developer wants to get into cloud-native development, microservices, micro-containers, Docker, scripting languages and a lot of REST is in their future.
What do you consider to be the key skills for developing cloud-based applications?