The topic of skills development has surfaced a lot over the last month or two. Team members are gearing up for 2015 and managers are working on development plans. I’ve been speaking with my team and sharing thoughts on how to stand out in the crowd and thrive. I promised to share more thoughts in a post so here it is.
This is an exciting time in technology. Systems appear to have infinite processing power unlocking new applications that were previously unthinkable (e.g., emotiv). The Internet of Things continues to penetrate our personal and professional life (e.g., quantified self). Yet it appears we are only scratching the surface of what’s possible in the future. Again, this is an exciting time in technology.
As with any ascent turbulence is a factor. The new technologies and IT delivery models such as SaaS (Software-as-a-Service), IaaS (Infrastructure-as-a-Service), and PaaS (Platform-as-a-Service) are challenging the skills needed to make valuable contributions. The question becomes what skills are needed to thrive as technology continues to move forward. Each organization (online or traditional enterprise) is a bit different in their technology needs and how they work. However, there are common skills that apply to all and that’s what I’ll focus on.
Below is a summary of the common skills needed for technology professionals to make valuable contributions to the organization. As you read on you may think some of this is not new, it’s not. What’s changing is a greater need for well-rounded technology professionals that can see the entire field, adapt, and bring creative ideas that provide business value.
- Collaboration – Software and infrastructure teams (engineering and operations) must work both cohesively and collaboratively to bring quality solutions forward in a timely manner. A culture of frequent and open communication is needed to make this happen. You may think this sounds familiar (DevOps), and it is. I do believe in the DevOps model and have been promoting it for years without using the label. The key to DevOps is working collaboratively as described above. Each member of the team should be sensitive to challenges their colleagues face. For example, software developers must appreciate what it takes to turn up 50 servers for a next day go-live. This creates a great understanding and respect to facilitate a constructive relationship. Leadership plays a major role to promote this culture and team members must be open to a more effective and efficient way of working.
- Software – Learning software architecture and development skills is essential for all technology professionals. It’s no secret that software is the engine that drives the ultimate value. Thoughtful software planning and architecture is essential in today’s environment. Infrastructure personnel should be involved in the conversation as a deep understanding of software enables them to architect effective solutions (e.g., how to scale and accommodate workload spikes, how to build in the right levels of resiliency).
- Software/Application/Data Personnel – The key is architecting software to take advantage of scale-out capability and high levels of resiliency afforded by today’s technology. Building software using the basic principles of asynchronous services with message queues is essential. Another software skill that applies to a smaller community is parallel programming. This skill is sorely needed. Admittedly compilers are limited in their ability to take full advantage of multiple cores, but this is a skills discussion and I won’t concentrate on that 🙂
- Infrastructure Personnel – Software skills are also required for infrastructure engineers as today’s infrastructure is more about software than hardware. The shift towards orchestrating and automating the delivery of infrastructure services suggest that infrastructure engineers leverage platforms such as OpenStack, OpenNebula, or CloudStack (list not all inclusive) to deliver data center services. Additionally, solutions such as Chef or Puppet are used to manage server configurations. These solutions require some level of programming/scripting proficiency to be effective. This is just a basic example but hopefully you get the point that infrastructure personnel must have some level of programming knowledge, it’s unavoidable.
- Networking – The network is absolutely essential to everything we do today. Data center, WAN, and internet networks are particularly important as these aggregation points impact access to application services.
- Software/Application/Data Personnel – Personnel must seek to understand constraints of the network and make the necessary solution adjustments to ensure a great user experience. For example, client-side processing and local data stores should be considered when high speed connections aren’t available. Additionally, using standard protocols to take advantage of WAN acceleration, where available, is a win-win for IT and the user community.
- Infrastructure Personnel – Data center networks have shifted from physical to virtual and all infrastructure engineers must understand how to architect, deploy, and manage them. Whether you leverage VMWare VDS and/or Cisco Nexus 1000V all infrastructure personnel should understand the details. Engineers should understand virtual data center switching and how networks are extended across data centers using GRE or VxLAN tunnels (if that’s your choice to extend the network).
- Data analytics – Before I go down this path I need to make one key point – know what question(s) you are trying to answer before pursuing data. If you don’t know the right question(s) to ask data will do you no good. Back to the topic of the day. Basic skills to perform analysis and visualize data will be required for technology professionals to thrive in the future. Of course point tools are available to provide reports and highlight trends. There are times when deeper analysis is needed to understand what’s causal or where opportunities exist. Technology professionals of the future will be able to work with the raw data leveraging platforms such as Domo or Splunk and highlight potential focus areas. For example, network engineers can analyze netflow data from different network elements to determine MAPI traffic optimization’s impact on access times. This helps to understand the value of WAN acceleration. My point is in the future we should be able to answer interesting questions using analytic skills rather than viewing standard reports that don’t tell the entire story.
- Security – This is not a new thought but I can’t ignore it. I strongly believe it’s not a winning strategy for one group (security team) to be responsible and accountable for security.The primary role of the IT Security team is to work with business leadership to determine the acceptable risk levels and collaboratively (there’s that word again) establish guidelines for the delivery of IT services. Each IT team member must have the skills necessary to take on the responsibility of security within their domain. There is much more to IT security, I’m only providing directional thoughts (not even scratching the surface).
- Software Developers/Application/Data Personnel – Software developers should take basic measures to reject nonconformant data inputs. They should understand the security implications of their coding decisions. For example, when developing in JavaScript understanding same-origin policies and the implications of document.domains is very important. Database architects should understand the importance of using separate data schemas when implementing multi-tenant environments. These are basic examples to highlight the need to focus on security when capturing input, processing data, producing output, and storing results.
- Infrastructure Personnel – An understanding of hypervisor, VM (virtual machine), and virtual network vulnerabilities and threats is required (list not all inclusive). Recognizing the need to isolate sensitize workloads to prevent data exposure via shared memory and IO resources is essential. The automated, virtual delivery of IT has its advantages and also has added complexity and vulnerabilities to the environment. Infrastructure personnel must understand this and focus on the right controls.
Collaboration, software, networking, data analytics, and security are the common skill areas that make for a well-rounded, highly successful technology professional. The level of expertise and specific competencies needed are driven by the needs of the business and IT organization.
I can’t address these skills without discussing the leadership needed to put technology professionals in a position to be successful. Technology leadership should understand there is a shift from “doing what you are told” to creative contributions. Why are open source projects so effective at solving real problems (e.g., Docker, OpenStack, Node.js, Python)? Techies choose to contribute because they can be creative and bring themselves to their work – no one is telling them what they should do and how they should do it. They can bring their passion to the table without asking permission.
Leadership should promote this behavior within the enterprise and reap the benefits of a happier workforce that overachieves. Sure, leadership must provide the vision and communicate clear objectives, that doesn’t change. What changes is how those objectives are achieved.
In summary, the skills needed to be successful in the future are shifting and technology professionals must be more well-rounded. Leadership is also accountable for adapting to these shifts. Encouraging creative contributions is required to enable these professionals to thrive. This combination of well-rounded skills and effective leadership will create high-performing teams that solve real business problems while doing a great job protecting data assets.