3 ms·
As someone who is a coder: My "career" switches with each job. I go from Defense, to Logistics, to Mathematics, to Systems Software, to now Databases. I'm no
by ilc 4y ago
As someone who is a coder:
My "career" switches with each job. I go from Defense, to Logistics, to Mathematics, to Systems Software, to now Databases.
I'm not trained in all these to 10,000 hours. I have 25+ years at this, and I still have to learn at every job when I start.
So, the most important thing is the core. The very core competencies of a programmer:
- Rigor - You must be willing to rigorously think things through.
- Mathematics - With the above, most of what a computer does is... math in the end. Algerbra is probably the most essential, ironically. Followed by Discrete Math. The rest is all nice to have.
- A bit of "Computer Science". Learning algorithms, what O(n) means, etc. This helps you understand how to think.
Note: I never mentioned a computer language.
A computer language is how you take all the above and turn it into something.
You should work on learning a few. But honestly, one you know 2 languages, you know 90% of all languages, and can read most code.
The languages I'd suggest: Python, and C.
People will curse me for C. But honestly for understanding how a computer works at a low level, there is no better language, it strips away the bullshit and leaves you to deal with the machine, but it doesn't force your nose into assembly, which is probably a bit much for a young programmer.
Python, is what you learn to do "real work". I interview in Python, Python and Python... and maybe a bit of Python. There's a reason. It is a language that you can really get things done in quickly, and manipulate things easily. It is the "anti-C" in many ways :).
One can argue for Java also. But really, Java is miserable without an IDE, and the machine does so much coding for you, I think it is a bad early language. Once you know the first two... I think it is a great one to pick up.
- aerlinger 4y ago> But really, Java is miserable without an IDE Very true. It's also miserable with an IDE.
- ilc 4y agoEh, It is usable with an IDE. Also it forces OO and interfaces down your throat, which is important when picking up other languages. The other languages you'd choose to learn in the "Java" slot are: - C++. I like new programmers too much to suggest this. Even if they know C. - golang - Not a bad choice, but forced OO is a good thing to learn. - C# - I haven't done enough of it, but it felt like Java on the CLR to me. Maybe with some warts moved around. - Common Lisp: Too obscure, too alien to read. - rust - No... just no. Too early. - ML, Haskell and friends - Yes, I love you all. But... Understanding a simple type systems is important before taking on Hindley-Milner type system language. So I'm kinda stuck with Java. It sucks the least. :)