A rough guide intended for absolute beginners who want a quick overview of what learning programming leads to, and the kind of skills that are useful to programmers.
Styles of programming
Back-End
Work with servers and databases. By definition this is non graphic, and also gives perhaps the widest choice of languages and tech, since installation woes and cross platform support are not an issue.
- Languages: Java, PHP, PERL, SQL, Go, Python
- Related: Cloud solutions (AWS, Azure), Docker, Serverless, Node.js
Mobile
Program forward looking hardware (accelerometers, multi-touch, AI chips, styluses) and overall spearheading innovation in software design and interaction. Most apps simply don't leverage these features but even then, a hugely dynamic market and startup space.
- Languages: Swift (iOS) and Java (Android)
Game Development and VR/AR
Modern game dev is mostly through standalone game engines managing the gritty details such as high quality graphics and scene management; still perhaps 30% of high profile video games (ex mobile) use proprietary game engines.
- Languages: C#, C++
- Related: Unity, Unreal, Godot
Web apps
Though using only a small subset of programming languages, web apps may still account for most advertised coding jobs. High visibility, dynamic community.
- Languages: HTML, CSS, JavaScript, TypeScript
- Related: React, AWS, Azure, Firebase
Desktop apps and systems programming
Easier languages (Java, C#) are used for business apps, whereas "systems languages" (C, C++, Rust) are used in programming operating systems, IoT things and high performance apps such as game engines and machine learning libraries.
- Common languages: C#, Swift, Java, C, C++, Rust
- Related: Visual Studio, XCode, Eclipse
Shell-scripting
Every programmer end up with a little knowledge of so called command line tools - aka shellscripting - which are used to perform simple operations (such as compressing or copying files) and automate programming workflows.
- Languages: Bash, Powershell
- Related: Linux, Docker
The best platform/language to start with?
Perhaps Python, Javascript, Processing, C or C#
Python falls in the "easy to learn, hard to master" category. A neat feature is the so called interactive console, which allows typing commands and directly evaluate the result.
Javascript is easy as a language; every programmer know some javascript too (because, what programmer did not setup their own web page at least once?)
Processing is a multimedia platform derived from Java. Where most languages easily output text, processing is adept at producing graphics and sounds.
Unity uses standard C# and provides a comfy environment for playing with 3D, physics and multi-agent systems.
C is recommended before learning C++ or Rust. Learning C means a better understanding of memory and performance.
Arduino is (perhaps) a bit limited on the coding side but a great place to start if you are interested in both programming and electronics.
Where to try languages?
Sometimes the language is available on your system, or some installation/configuration is needed.
Online IDEs are a great resource for a quick dip into (almost) any language:
What are the important skills in programming?
Attention to detail
On a day to day basis, programming is a petty activity where 'a slip of tongue' is not okay - since computers do not understand saying "approximately" the right thing.
Practice makes perfect, and for most of us patience is key to overcoming the initial "missing colon, mismatched bracket" phase.
Abstract thinking, and staying organized
Programs are models so the ability to think categorically and organize ideas really helps; leads to: Software/solutions architect.
Information gathering
While languages and programming patterns stick around for decades, libraries, frameworks and the hardware evolve quickly - fast enough that beyond a few commonly used functions, learning keywords and commands is pointless.
What works is knowing how to search - which comes with reading about programming and acquiring the culture/jargon needed to ask questions other programmers can even answer. Leads to: technologist, CTO
Team spirit
After you overcome the "what" of getting programs to work, you are primed to learning how to write programs that other developers can read and enjoy contributing to. Good teamworkers understand that programs are written for humans to read, and 80% of a coder's working time is spent reading and analyzing existing code.
Leads to: team lead
Puzzle solving
Often programming requires an understanding of algorithms which are methods to solve (apparently) simple problems such as sorting lists or finding contours in an image. Still you need not be very good at logic or maths to be a good programmer. Leads to: computer scientist, data scientist, working for the big four, hacking and security.
Should I learn more than one language?
Sooner or later, you will. Fortunately computer languages look like each other. Learning a "first programming language" is the one big step.
Top comments (0)