General Technical Skills for Everyone
Professional software developers need to learn many different topics and skills, but this post will cover skills that are useful for both software developers and people in a wide range of careers. This will be split into two categories: general skills and general programming skills.
General skills
These are general skills that are important in software development and in many other office jobs as well:
Focus - Often you will encounter difficulties and it's easy to get frustrated and distracted. “The code test is still failing - may as well browse emails or the web.” But switching tasks breaks up your train of thought, so you'll take even longer to solve the problem. Often you need to relentlessly focus on an issue in order to make progress quickly. And you can’t just do "guess and check" thinking where you randomly try different things hoping you'll find a solution, you need to do "binary search" thinking where you hone in on the issue until it's solved. Sometimes it can be helpful to take a break and return to the problem later, but you should only do that after you've given the problem solid focus and hit a wall.
Typing
While raw typing speed isn’t usually a significant bottleneck when doing “thinking” work (e.g programming), any effort on typing or fixing typos can take your focus off the main issue at hand.
Many office workers these days type a significant number of chats and emails, it's best to do this as quickly as possible.
Besides basic typing skills, one should also be comfortable with the relevant keyboard shortcuts for their OS and software. Moving one’s hand to the mouse is a micro-distraction that is best avoided.
Memory / note system - When learning a subject like programming you may initially struggle with remembering details about the language and syntax, but eventually you remember how things work overall, and can easily look specific up syntax as needed. But there will still be many issues that you solve (or get help with) where you'll want to remember the solution for the future, and your memory isn't always enough. It's useful to have a note or bookmark system to quickly lookup how to do things. This can be a simple text file with a good search function, or a more complex organized notebook system.
General programming skills
These are programming skills that are useful for many jobs, not just for professional software developers:
SQL - The world is built on SQL, often with a few other layers stacked on top of it. SQL isn’t just used when developing actual applications, it's essential in many other cases as well:
analyzing experiments or general usage of a product
finding sample data to test something out
querying logs to debug an issue in production
Many alternatives to SQL have been developed, but there's often no avoiding SQL itself. It helps to become proficient with it so one can quickly find the data they need and avoid common bugs such as accidentally duplicating rows. Many professionals, , such as business analysts or product managers, will find SQL useful.
Regex - Programming is often about finding the right example to base your code on, or about quickly finding and replacing text. Regex makes this faster. Anyone who deals with large data or texts will find it helpful as well.
Scripting - Sometimes it's useful to write a quick script to help generate code or analyze data. Non-professional programmers may want to write a script to help with their science research or with their spreadsheets.
Worth learning
While you can learn many skills on the job, often it's helpful to take a step back and learn certain subjects on their own in a bit more depth. This way you can learn how to do something properly instead of just finding the easiest solution at the time. The above subjects aren’t taught widely in schools, but it’s something that would be useful for many people to learn so they can draw on their knowledge when it comes up in life.