The Key Skills That Industry Expects

By Stuart Herbert

I hope you’ve enjoyed this book, and the stories and information that our volunteer authors have shared with you. How does it compare with what you thought you needed to know by the time you graduate?

Just in case we haven’t achieved it yet, I’m going to finish the book doing my best to shatter any illusions you might have that your degree is all that you need to know in order to be employable in the computing industry today. It isn’t, and this list is why.

This is a list of the skills and knowledge that employers expect new graduates to have, taken from my book Getting Hired. I’ve compiled this list over the last few years from talking to fellow employers both online and at industry-leading conferences. It isn’t complete, but I’m confident that it’s reasonably representative.

How many skills on this list are you currently learning about?

Client-Side Skills

  • Ajax requests
  • Automated testing using Selenium
  • Cross-browser testing
  • CSS
  • HTML
  • JavaScript
  • Mobile development
  • RESTful API requests

Network / Internet Skills

  • DNS
  • HTTP
  • File transfer using FTP, SSH / SCP / SFTP
  • Firewalls, NAT, public and private networking

Server-Side Skills

  • Application frameworks implementing MVC
  • Code and data caching
  • Key/value datastores
  • Relational database servers
  • RESTful web services
  • Reverse proxying using Varnish
  • Scripting languages such as PHP, Python and Ruby
  • Service security (XSS, XSRF, buffer overflows, encryption and so on)
  • Session management
  • SQL
  • SSL and TLS
  • Web servers such as Apache

Devop Skills

  • Adding new users to a server
  • Automation
  • Basic server security
  • Code deployment
  • Filesystems
  • Linux shell scripting
  • Operating system installation
  • Scaling horizontally
  • Setting up a website
  • TCP/IP networking

File And Data Formats

  • JSON
  • RSS and Atom
  • XML
  • XPath
  • YAML

Development Practices & Skills

  • Accessibility
  • API design
  • Avoiding not-invented-here syndrome
  • Avoiding over and under-engineering
  • Behaviour-driven development
  • Binary logic
  • Bitwise operations
  • Building reusable code
  • Code reviews
  • Continuous integration
  • Data structures and algorithms
  • Debugging software
  • Design patterns
  • Evaluation of source code / code smells
  • Multi-threaded programming
  • Network programming
  • Object-oriented programming
  • Optimising software
  • Parallel / multi-core programming
  • Premature optimisation
  • Primitive data types (strings, floats, integers)
  • Prototyping
  • Refactoring
  • Regular expressions
  • Simplicity
  • Software architectures
  • Source control, including branching and tagging
  • Technical debt
  • Test-driven development
  • Tracking down memory leaks
  • Unit testing
  • Usability design
  • User experience design
  • Apache
  • C#
  • CentOS Linux
  • Debian Linux
  • Git
  • Java
  • JavaScript
  • Memcached
  • Objective C
  • PHP
  • Python
  • RedHat Linux
  • Ruby
  • Scala
  • Subversion

Other Skills

  • Awareness of technology history
  • Basic maths
  • Basic PC hardware
  • Business analysis, requirements, use cases, user stories, MoSCoW ratings
  • Content management systems (e.g WordPress or Drupal)
  • Continuous learning
  • Finding solutions to problems (Googling, GitHub, Quora, Reddit, Stack Exchange)
  • Good timekeeping
  • Hitting deadlines
  • How open source works; contributing to open source
  • Project management inc Agile, Kanban
  • Teamwork & collaboration

It’s Not Your University’s Fault

If you’re looking at this list, and having trouble matching up to your course curriculum, I want to be clear that the gap between the two isn’t your university’s fault.

Universities are here to teach the fundamentals, and to teach their research, and these are areas that they excel in. But they’re not here to teach you all of the practices that you need to be able to do for your first job. Why? The computing industry moves at an amazing pace - so fast, in fact, that if your university tried to teach you all of these skills, their curriculum would be obsolete by the time they finished writing it.

This is why you need to be learning all the time - whether you’re in your first year as an undergraduate and still getting to grips with things, or whether like me you’re about to enter your 20th year in industry (and, in my case, my 32nd year programming computers). Eventually, you’ll see that fashions come and fashions go in cycles, as our industry re-discovers and re-invents the wheel for the upteemth time.

The only constant is change.

So This List Is Useless, Right?

Not quite. It reflects the tools and technologies that people are using today. Many of the items on the list have been around for a few years. It’s how they are used that keeps changing. You need to keep on top of the how to keep your skills up to date. Once you’ve learned how to do each of these things in the first place, of course :)

Reader Comments And Feedback

Reader Comments And Feedback

Reader Comments And Feedback