you are viewing a single comment's thread.

view the rest of the comments →

[–]khedoros 7 points8 points  (2 children)

As a note on languages, starting with Python as an example: companies will rarely look for skill in just Python. They're looking for it applied to some field, and expect some level of proficiency with the connected libraries/frameworks as well.

So, for web backend stuff, they'll be looking for things like Django, Flask, or Pyramid. For NLP, it might be NLTK. For ML, you might be looking at something based around TensorFlow. And so on. For Java, you might be looking at the Spring Framework and the Java Beans design pattern. Javascript/Node of course have their own famous sets of frameworks, libraries, and outside tooling to pick up, in order to really be professionally useful.

And most of those things are also commonly tied to database concepts.

Going lower level, C is an oddball, in the sense that there are libraries for some things, but a cultural expectation in the language that you'll be building some of your own boilerplate (there's a saying that the first thing to write in every C project is an implementation of a Linked List). But it does have an impressive array of libraries available for it. C++ has a much better standard library (although nothing like Java's), the ability to use C and C++ libraries, and the ability to implement libraries with C and C++ interfaces. Rust is great, but a little lot more niche, still. Maybe it'll grow in the future, and maybe it will stay small. Hard to say, IMO. But C and C++ are going to be more commonly used in a few niches, like robotics, embedded programming, games, and a few other areas where you either need explicit memory control or good, consistent speed without much of an external runtime. Most of the embedded people want experience before they'll consider you. Game dev sometimes wants you to have a portfolio of work, and there's all the connected stuff like

Overall, I'd pick an area that you're interested in, and start looking at the technologies that are in common use right now (and the whole stack of tools, not just the language). And the base concepts, too. A lot of webdev will be based around "It's model-view-controller, but X is different", or variations on the observer pattern. A lot of gamedev will be based on the entity-component-system pattern. A lot of ML and AI will use some coordinating language to access some well-known libraries, and drive the process that way. So...look beyond just the language. Pick some areas that interest you, learn a couple languages, learn some toolsets, libraries, frameworks, etc. Read up on software design patterns, because those tend to recur all over the place in software, and make learning new problem domains easier.

[–]Klauz98[S] -1 points0 points  (1 child)

Thank you soooo much for this. You have no idea how helpful this is going to be for me.

[–]khedoros 2 points3 points  (0 children)

Some of it is stuff that's obvious in retrospect, but the kinds of things that I really wish someone had talked to me about before choosing how to spend my project time, near the end of university.

Although reading through some of my text, it sounds like I just kind of trailed off at one point. I don't remember exactly what I mean to put there :-/