The Key Skills That Industry Expects
To finish this book, I want to share with you a list of the skills and knowledge that employers expect candidates to have. 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 well do you score against this list?
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
Popular Technologies
- 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
Your Next Steps
Today, this list might look somewhat daunting, if not positively overwhelming. I can assure you that after a couple of years in the computing industry, you’ll look back at this list and probably spot things that are missing from it!
The only way to tick off more of the items on the list is to put the hours in. If you want to join the computing industry, then you should already be curious about technology and how it works. Now you need to invest in yourself, and in your future, by learning as many of these things as you can.
My advice is to do so through a series of small projects. A project is a great way to explore something new, because every successful project delivers something usable at the end of it. Your mind will be engaged and focused, which in turn leads to better learning. It’s better if you come up with a real problem to solve with each project, to avoid doing things that are too simplistic to learn anything from.
However you learn, you need to repeat these skills over and over so that they stick.
Tweet