And all of these answers would be correct. So it's tricky to get a clear and concise definition sometimes about what it is that a programmer actually does. As a full-stack developer, I've worn many hats during the past decade working professionally. So today I will break down the different types of programming that you could get yourself into. What languages you'll need to accomplish them and which tools are required to get started. And to give some insight into how being a "programmer" isn't necessarily any one particular thing, but can vary widely depending on the field of work that you find yourself in.
VS Code, Sublime, Visual Studio, Atom
This is probably the most popular form of programming that you can find right now in the workplace. For obvious reasons, it's the most visual one (except for video game development) and the most readily available as most people know what a website is.
Note that this is different than a front-end designer. This is the coding portion of front-end development.
A back-end programmer implements the non-visual features of a web application. This can include anything from payment systems to email management. They also write API's and integrate API's into their web projects. Typically can traverse most of the stack, minus web development.
Visual Studio, VS Code, NetBeans, Eclipse, Xcode
C#, PHP, Java, C, C++
Typically a back-end programmer will spend much of their time working on a back-end language such as C#, PHP, C++, C, and Java. The core of their work will revolve around creating ways to store and retrieve data efficiently from a database, such as Sql Server or MySql. They will create and implement API's to modify and retrieve data and use other 3rd party API's as well to add functionality to already existing projects.
Typically any functionality on a web application that isn't purely visual, but more functional, such as implementing a payment system or sending out emails are done through back-end server side code. This is typically the first kind of coding that most programmers will be exposed to during their college years mainly in the form of C++ or Java. Back-end programmers typically earn slightly more than their front-end counterparts due to the more complex atmosphere that comes with implementing internal systems.
Data Science programming
Read and parse large datasets. Will typically write scripts to organize data into a proper database. Can use a querying language to later retrieve more coherent datasets for reporting and analysis.
MatLab, SciLab, Visual Studio
Python, R, SQL
Data scientist get to play with data all day long. Usually very big data. Millions of records perhaps or even billions depending on the project. Many times, this data is not structured in any way that is usable to anyone. Which is why data scientists spend their days writing scripts in languages such as Python and R in order to clean up these sets. Once the data has been parsed and stored accordingly in a database, the real work can begin. And that will depend on your companies needs usually. Whether you are creating API's in order to serve the data, or are spending your days in a DBMS writing SQL statements.
Due to the increased demand of data scientist, competition for jobs is high and salaries are among the highest on this list. However, because of its relative new acceptance as a professional field, it is missing from many college curriculum's.
Video Game programming
Video game programmers can spend their days creating level editors or working on physics engines for upcoming desktop and mobile games. Some will spend their times working with pre-existing game engines, such as Unity, while others will build custom software from scratch.
Visual Studio, Xcode, Unity Editor
Varies based on specific area of expertise, but could include C, C++, C#, Swift, Java
Video game programming is drastically different than the other types mentioned above and can also span many different disciplines internally. Animations and game design aside, many of the biggest games today require very custom software in order to be created. And this is where many video game programmer's will spend their time working in. This means that you might not exactly be able to get exact training for the job, as you will be working on something that is completely new.
You will be working on implementing physics engines and custom level editors in this field. And this can normally be done in any language that supports desktop application development such as C++ or C# for Windows. Game developers who are highly specialized in engines such as Unity, can spend much of their time working on writing Unity scripts in whichever IDE makes sense for them. Video game developers typically see much higher salaries due to the specialized nature of game development. Some universities have begun to offer degrees in game development currently however.
While you might be wearing many hats throughout your programming career, it is important to realize that being a programmer doesn't necessarily fit into any one criteria. There are many more programming fields that were not mentioned above, such as mobile app developer and even programming macros in Excel. The most difficult part in the beginning is probably choosing a path and then sticking with it. And also knowing that there really isn't any wrong path that you can take with software engineering. All of the previously mentioned fields of coding offer their own benefits to those who are willing to put in the time and dedication to become well versed in them.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.