Programming languages and software development technologies builds around 25% of a programmer skills. They have the largest learning content, but they change very fast in the time. If we look at job offers from the software industry they usually mention words like the ones bellow, but in the job offers they secretly mention the three main skills: coding, thinking algorithmically and to know the fundamentals of computer science and software engineering.
For those clearly technological skills the programming language does matter
- Note: only this 25% of the profession the programming language does matter!
- For the rest 75% of the skills the programming language doesn't matter and these skills are resistant in the time and transportable between different languages and technologies.
Here are some commonly used software development stacks which software companies are looking for (current May 2017):
- C # + OOP + FP + classes from .NET + SQL Server + Entity Framework (EF) + ASP.NET MVC + HTTP + HTML + CSS + JS + DOM + jQuery
- Java + Java API classes + OOP + FP + databases + MySQL + HTTP + web programming + HTML + CSS + JS + DOM + jQuery + JSP / Servlets + Spring MVC or Java EE / JSF
- PHP + PLO + databases + MySQL + HTTP + web development + HTML + CSS + JS + DOM + jQuery + Laravel / Symfony / and other MVC framework for PHP
- Python + OOP + FP + databases + MongoDB or MySQL + HTTP + web development + HTML + CSS + JS + DOM + jQuery + Django
- C ++ + OOP + STL + Boost + native development + databases + HTTP + other languages
- Swift + MacOS + iOS + Cocoa + Cocoa Touch + XCode + HTTP + REST + other languages
If the words above looks scary and absolutely incomprehensible then you are at the very beginning of your carrier and you need many years of learning until you reach the profession "software engineer". Do not worry, every programmer goes through one or several technology stacks and needs to study a set of interconnected technologies, but the bottom line is the ability to write programming logic (coding), and the skill to think algorithmically (to solve programming problems). It's not possible without them!