Conversation
Notices
-
@eal @xian can second the 'contribute to OSS' part, it just makes it a lot easier to talk to potential employers when you can show them code that you actually wrote for something that people actually use instead of saying "Yeah i'm super competent i just can't show you anything". Grades and age are rather irrelevant.
-
@xian I did a career swap and got into a pretty good programming job without any degree in a country neighbouring yours, my €.02:
It's a lot simpler if you go through school (computer science or software engineering), you will learn to speak the right jargon and it looks great on your CV. (also you'll probably learn many of the useful skills needed)
That said, I've seen many graduates who are fairly clueless when it comes to actually building functioning software, people who did the bare minimum to get through classes and didn't ever learn to apply the knowledge. Also many many applicants who can't do a simple SQL schema or even fizzbuzz when asked to.
>How to start out
Sounds like you already have. If you have a certain area you want to work in (web development, embedded, gamedev, etc.) you should look up the most common technologies/languages used in it and start learning those. I think a good thing to do would be to pick a simple project (chatbot, small interactive website, blinking LED on breadboard) and work towards that. Having a hobby project that you can showcase is always good, whether you're going to school or not.
> What language to pick
All the companies want Javascript (every interactive webpage runs it), Python and Java (svensk schools seem to all teach java). Go is also gaining a lot of traction in my circles. Overall I don't think the language choice matters a lot in the beginning (so long as you can stick with it), a programmer with a good grasp of the fundamentals will learn any of the common languages fairly easily. Sometimes recruiting wants a deep expert in $LANG, but that won't be your first job.
> Tips on schools, courses and materials
Learn git. I can't hammer this point enough. it's incredible how many so-called programmers can't use the most common source code version control system to save their lives.
In general, the usual good things you can learn are data structures, algorithms, networking, your OS (most servers will run Linux), and databases (learn SQL, get the manga guide to databases if you need to, but learn SQL).
Contribute to open source. You will learn build tools, testing, packaging, CI/CD, all the usual details of day-to-day software development. Working with a proper big codebase will also be really useful. This can also be a good stepping stone to a job if you're not doing it through school.
> math, HS grades
mostly irrelevant, depending on the way you want to go. Most programming is passing data around and doing some conditional logic on it, not complex math. A lot of the math can be taken from someone who solved it already and wrote a book/article about it (I wrote a graphics renderer a few years back and I barely know what a quaternion is).
> confident around CLI, linux and server software
this is a very good start, and a possible thing you could try would be adding a feature to some open-source server software you already know and run. Get it working on your setup and then try to get it merged to mainline.
> Age, what to do
Only you can know the best thing to do in your position. You're still young enough to make (almost) any career move besides pro athlete and do it successfully. School is not an absolute requirement but I would recommend it, opens doors internationally and to many places that consider it the entry bar. Build up as much of a network as you can, go to a local hackerspace, do odd webdev gigs and get recommendations, whatever you can.
Once you have experience and contacts in the field it will be a lot easier.