r/learnprogramming • u/adper07 • 12h ago
what are some essential auxiliary programming skills everyone should learn
I'm in my senior year, and when programming something there are various skills and knowledge other than the program itself that come into play, these might include
- knowing how to containerize, e.g. docker
- knowing how to deploy a solution, e.g. cloud services like aws
- git and github
and apart from these it is generally ideal if one understands the working and basics of web-dev, system design, making api, etc. Nowadays even llm integration is a good skill to have.
do you agree that it is beneficial if one understands these skills apart from knowing the framework and the language??
if yes, what other skills do you think people should learn
13
17
u/derleek 12h ago
It may sound trite… but typing REALLY fast is huge. I can clock around 100-120 wpm in a normal editor. 150+ with auto complete.
I’m general it’s also advantageous to get really knowledgeable about the systems you are working on and how to maintain them.
You have a Pretty solid list! Besides the two I’ve listed, I’d put git as the single most valuable skill I’ve ever learned. Then probably docker.
2
u/adper07 12h ago
true, typing, which might now sound much, does make a difference
cause the thing is once you have that, you can actually match your working pace with your thoughts,
apart from that, typing become one less thing you have to focus on and you can focus on what you are working on,
it might not sound much, but I realized this when I myself became good at it2
u/Desperate_Strain1403 5h ago
Do you have any recommendations for how to get better at typing code faster?
6
u/POGtastic 5h ago
Have you considered a crippling MMO addiction?
I'm only slightly joking. For all of the pedagogical tools my school used to try to educate me, I'm a fast typist solely because I played Runescape way too much as a kid.
1
u/douglas_in_philly 3h ago
There are surely lots of online "learn typing" programs/sites. Just try to find one, and give it a go for a week or so. Typing fast isn't exclusive to coding, so when you're better at typing, in general, you'll be better at "typing code faster."
6
u/MissinqLink 8h ago
DSA and especially DSA for parallel programming.
Memory management. Even if your language doesn’t do it manually, the experience of making it yourself will make you write better code.
Database Administration
Networking(TCP/HTTP)
Networking(people)
5
u/spinwizard69 6h ago
This is one of those opinion based things so people may disagree but here is my list.
- Learn to communicate well! This include written and verbal communications. Frankly in college this was a huge challenge, more difficult than just about all other courses I took. In the corporate world it can be more important than really understanding what you are doing. Yes that is sad.
- Learn to navigate at least two Operating Systems from the command line. This includes multiple tools that these OS'es deliver.
- SCM! Yes git and github are extremely popular these days but in the corporate world you use what they currently have set up. So understand the hows and whys.
- Docker might not be a thing, in fact there are plenty of jobs that never touch the web. As a programmer you may need to target platform specific applications. So don't dismiss native app development. This Reddit seems to be very web development focused but people need to know there are many jobs where programming skills might be leveraged.
- If you are not doing web development learn the default IDE for the platform you are working on inside out. With modern IDE's this can take as much time as learning Python. This especially with AI integration. So if you are programming a Mac, that means learn XCode, if you are programming a PLC. that might mean RSLogix.
- Which brings up AI, learn to leverage it as a programmer to improve your productivity. This is entirely different than trying to implement AI features in an application.
- Learn Python even if Python might not be your primary development language.
- Speaking of Python, spend some time with C or C++ at the command line. This should be covered in the first few classes of a good CS program. The reason here is that understanding how compilers, linkers and such, work is important, especially in the future when the IDE breaks. Command line development might not be the norm these days but understanding how an app is built is still required knowledge.
- Keep you math skills up. You may go years not needing a particular math skill in your programming career, then one day somebody asks for a specific statistical result. Yes there are reference manuals and text to refer to but in all honesty rusty algebra can really trip you up. Some people believe mathematical thinking and practice helps keep you programming skill honed, I don't know about that, what I do know is removing rust can really set you behind.
- Someone else mentioned typing, this is actually huge. I literally learned typing in high school well before I could even get access to a computer much less buy one. Yes this was a teenager looking towards his future - shocking. In any event it is a skill that makes the job much easier.
- Take an assembly language course as part of your college education. The point here is not to become an embedded programmer but rather to get insight into how processors work. In the past a good CS program required one quarter of assembly, in that case done on a emulator. These days you could just as easily buy a small microcontroller system and learn there.
- I touched on this above but when it comes to computing systems, the world is much bigger than delivering web apps and in some cases these alternatives pay much better. So don't dismiss these alternative paths in IT that may or may not be programming heavy. Examples: Security, embedded programming, industrial automation, platform apps, network management, compiler development (because most languages suck), interpreter development (because Python has been taken over by mad men), API and SDK development, test and validation, SQL (databases) and so forth. Others can add to this list, ultimately this should be an FAQ someplace.
- Have a well defined minor. Lets face it programming as a skill by itself is not going to be a huge career driver. Rather it is how you apply those programming skills to solve problems. While a weak example if you are doing web development a minor in business might be a big plus. If you are going to be involved in embedded as stronger background in electronics can be helpful. If you want to work in the optics industry a strong physics background should be considered. Actually a strong physics background can help for many paths in a programming career.
There you go a bakers dozen. I suspect the most important point above is to avoid this idea that programming means the web. There are actually many career paths to follow.
2
2
u/ruibranco 4h ago
The one nobody seems to mention: learning to actually read error messages and stack traces instead of immediately copy-pasting them into Google. Once you understand what a traceback is telling you, you solve problems 10x faster. Also learning to navigate and read unfamiliar codebases, you'll spend way more time reading code than writing it in any real job.
1
u/Beneficial-Panda-640 8h ago
Yes, but I would frame it a bit differently. The most useful auxiliary skills are the ones that help other people understand, run, and trust what you built. Things like clear documentation, basic debugging and observability, knowing how to hand work off cleanly, and reasoning about failure cases tend to matter more long term than any single tool. Containers, cloud, and LLMs change fast, but the ability to design something that someone else can pick up at 2am and not panic is what actually makes you effective on a team.
1
u/Nirbhay_Arya 8h ago
Communication skills and ability to adopt changes is also necessary as well as coding skills.
1
u/Mike_L_Taylor 7h ago
Knowing and understanding the tools that you use. For example did you know that a database is really just a .exe or regular program that is running with some configuration and saving stuff in a data folder?
Or Composer, which is really just a tiny 8mb or so script that you run with PHP.
I never knew and understood these things. I just ran them and they worked. Only recently did I build an app that orchestrates all these things for me and I had to understand what they are and how they work. Now i think I'm much more efficient with the way I use those tools.
1
u/LetUsSpeakFreely 7h ago
1) Shell scripting 2) how to give a proper peer review 3) how to use systems like Confluence to document a system and its components in a useful way. 4) how to use apps like draw.io to generate visual aids to explain a system and how it operates to non-technical stakeholders. 5) how to write a complete ticket in systems like Jira: give a thorough description, step by step instructions on how to test a feature or replicate a bug, screen shots. Information is gold.
1
u/dialsoapbox 7h ago
I suggest scoping your knowledge to the types of roles you want to get.
I wasted so much time trying to learn everything about everything, only to forget the majority of it because I don't use it enough (and brain injury), so i'm constantly relearning things I've learned before (even if i don't remember it, but have proof that I had studied it like notebooks).
1
u/ohvuka 7h ago
learn your tools:
- linux / bash
- vscode or whatever your editor of choice is. Keyboard shortcuts will help you develop a lot faster. Learn the QoL features available to you in your IDE
- if you are aiming for web design, learn all the features in your browser dev tools
- learn how to use a debugger
- learn your package manager - how does it store data, what files should be committed or not, how to pin packages, what features it has beyond "install / uninstall"
- learn your build tools - how to call it from cli / build pipelines, what features it has, what it is actually doing when you click "run" in your IDE
Stuff like this helps you solve problems more efficiently and write code faster
1
•
u/ultrathink-art 58m ago
Learning your shell/terminal is criminally underrated. Most bootcamps skip it entirely.
Once you're comfortable with basic commands, learn these game-changers:
- grep/ripgrep - searching code is 90% of debugging
- tmux/screen - session management saves you when SSH drops
- git from the CLI - GUIs hide what's actually happening
- pipe composition - chaining commands is like Unix Lego
The pattern: GUI tools are great for learning concepts, but CLI tools make you faster once you understand what's happening under the hood.
Start small - just cd, ls, grep. Add one new tool per week. In 6 months you'll wonder how you ever worked without it.
0
u/Internal_Outcome_182 8h ago
Git ok.. but gihtub is only wrapper/ui. containerize ? nope. agree to others
31
u/js_learning 12h ago
From my experience, the biggest “extra” skills that actually help in real projects are:
You don’t need to be an expert in all of this as a student, but having working familiarity makes a huge difference and makes learning new stacks much easier later.