Thursday, June 11, 2020

Skills to Learn for Software Developers and Others

The previous post discussed math topics I'm interested in learning, this will discuss programming-related skills that are important and I'd like to improve at.

While there are many technical skills important for software developers, this post will cover general (non-programming) skills, and programming skills that are useful for other careers.

General skills
These are general skills that are important in software development and in many other office jobs as well:
  • Focus - Often one encounters difficulties and it's easy to get frustrated and distracted. The test is still failing? Might as well browse emails or the web. But switching tasks breaks up the train of thought you had so you'll take even longer to solve the problem. (One second, just going to check my emails. Now where was I..? ) Often one needs relentless focus on an issue in order to make progress quickly. And not just "guess and check" thinking where you randomly try different things hoping you'll find a solution, but "binary search" thinking where you hone in on the issue until it's solved. There are times when it can be helpful to take a break and return to the problem later, but that should be done after you've given the problem solid focus and hit a wall. 
  • Typing 
    • While raw typing speed should never be a significant bottleneck when programming, any effort on typing or fixing typos can take your focus off the main issue at hand.
    • Programmers type far more chats and emails than actual code; 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, terminal and IDE. Moving to the mouse is another micro distraction that is best avoided. 
  • Memory / note system - When learning programming one struggles with remembering all sorts of details about language and syntax, but eventually you get the overall hang of how things work, and can easily look 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.
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. Besides writing SQL when developing an actual application, it's essential in many other cases such as:
    • 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 other professions, such as analysts or product managers, will also find it 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 one can learn many skills on the job, often it's helpful to take a step back and learn the subject in-depth. This way you can learn how to do something properly instead of just finding the easiest solution at the time. This would be an area where schools could help, but as expected, they don't give these subjects their proper due.

No comments:

Post a Comment