This is perhaps an odd request, and I am sure there are a ton of resources available out there but I’d appreciate some input from the wonderful people here, who no doubt have years of experience in the field. I’m a teacher at the moment, but I would like to - if possible - learn more about programming and eventually transition to a career in a relevant field.
I have some experience with various languages. When I was young I took some courses in HTML, CSS, PHP and MySQL. I do not remember a lot of it, but I’m sure it would come back to me. As a result of a few hobbies I also have some experience using LUA and YAML. I am far from an expert in these, but the point I’m making is that I’m not entirely new to the field either.
As I mentioned earlier I would like to learn more, and eventually transition into a career in the field, but I’m not quite sure what I would like to work with or where to start. I’m hoping some of you could offer some valuable input. Where would you start? What would you learn/skip if you could repeat your career path?
Little side note: I’m aware this is difficult to answer without knowing what I would like to work with. I’m quite flexible, and think it would come down to where the jobs are, but in an ideal world I would love to work with something involving Linux and/or open source software. Alternatively, I’m quite keen on anything involving IT security, but from what I understand that’s quite a difficult field (and I’m not that big on math to be honest).
I would learn Python. It is used in a wide variety of industries and it is easy to learn.
Unless you are developing or implementing encryption you shouldn’t need a lot of math in the security field.
It is probably different in different parts of the world but where I am all you really need is a certification. Security professionals are in such high demand that almost anyone with the credentials can get hired even without experience.
So it really does come down to what interests you. And note that whilst having a good general knowledge helps, have a speciality is better for your money prospects. Speaking of which; the cybersec qualifications are really expensive. Save up now.
I like to learn with something that gets me excited. It depends what you like to do but there are plenty of tutorials how to code a little game…
or alternatively jupyter notebooks/lab is pretty neat because you can code in the web browser and can see your results immediately in cells that you run. You can also nicely visualize data or create animations if you are into this. There is a website with example open source projects but forgot where at.
I think there’s a lot to learn in security. And that’s because in security doing a mediocre job is equal do doing no job at all.
The easiest thing you could do with your already acquired skills is web development.
If you want to learn something else, first choose a field you want to work in, then you can learn the language speciffic to that field.
I would say the crucial thing is you just start doing anything. Make a small and really simple game, create supporting scripts for your day to day work, etc. There are billions of things you could do and searching for the “right” start will just waste time, that is better invested in doing even the smallest nonsensical programming task.
If you really want to start to get your feet wet inside the Linux ecosystem, my personal advice would be to create a program and upload it to the AUR. That, at least for me, was incredibly useful for learning Linux related things. Also doing a manual arch install, if you haven’t already done that, and setting up your own liking can be very helpful. Especially if you combine it with creating your own simply scripts to accommodate your workflow.
Probably the most useful language you can be learning is C++.
It’s not the easiest language to learn, it may not be the best as your first programming language (though, with the Standard Library, it’s not that much more difficult than, say, Python), it’s not even a pretty language. In fact, it’s a total mess of a language and you’ll never learnt it fully (it is expanding faster than a single person can master it).
But if you are going to write applications, the best way to do so is with C++.
Programs like Firefox, Blender, LibreOffice, Inkscape, Krita, Gimp… they are all written in C++. Most videogames, where performance is critical, are also written in C++.
When it comes to performance, there is no difference between software written in C and C++. Sure, some more advanced features of C++ Standard Library come with some performance penalty. But in a fair comparison C and C++ are matched.
C and C++ are very different languages. The code may look superficially similar (tough modern C++ code is a total mess), but the idioms are completely different. And so is the structure of a program.
Nowadays, very few people use C. It’s mostly used on embedded systems, and in small projects. A notable exception is, of course, the Linux kernel, which is written entirely in C.
There is one thing that makes C better than C++ – it’s simplicity and beauty of syntax, and here, simplicity should not be confused with ease of use – C can be incredibly tedious. By simplicity I mean: there is not much to it, it’s a small, beautifully designed language which can fit entirely in a small book like Kernighan & Ritchie (a table of contents of a C++ book can be bigger than that).