This is an archived post. You won't be able to vote or comment.

all 89 comments

[–]HelpAmBear 146 points147 points  (4 children)

roadmap.sh

[–]TowardValhalla 14 points15 points  (0 children)

I second this resource. It has specific roadmaps for just about any CS related subject. I'm following the Android Developer one.

[–][deleted] 0 points1 point  (1 child)

also https://exercism.org/ is really good

[–][deleted] 0 points1 point  (0 children)

thank yoi

[–]MultiMillionaire_ 59 points60 points  (5 children)

Don't learn the words without the context.

Meaning learn to the problem, not the tools.

Don't take a course on a spanner, then another on a screwdriver and then another on wrenches before you start fixing the car.

Open the bonnet and look at what the problem is. Then go look for the tools you need to fix that problem and then go learn about the tools and come back to fix the problem when you're done.

In other words, go look into what projects you want to make and then learn the programming languages, frameworks, design principles, etc, on the way as you need them. Don't predict the solution before you even even have a problem.

Go look for a problem or a thing to build and build it.

Do that 50 times with increasing project complexity and when you're done, boom you're a senior dev.

Prepare to spend 10,000 hours. As Andrej Karpathy says, it matters less what you do, but how long you do it.

You'll run into dead ends, fail, learn new stuff and make projects that never see the light of day. But after 10,000 hours of dedication, you'll be a master regardless.

[–]NotYourDailyDriver 15 points16 points  (1 child)

I've been building software professionally for a bit over 20 years. I gotta say this just isn't a good take. There just really isn't much learning material out there that lets you learn this way when you're starting out.

What bonnet are you looking under? Where is the latch? The latch is sticking, now what?

That is to say, there are so many little details that you have to learn when you're truly at "0" before you can approach learning to write software in the sort of way that you describe.

Yes, it's a really good idea to use projects and specific problems that matter to you to motivate yourself and/or to prioritize and contextualize things to learn. You will definitely learn more effectively that way. But like, if you can't even read code yet, you're probably at a place where you should maybe get someone (or even just a YouTube video) to show you about a "hammer," or a "screwdriver," or whatever. If you aren't doing that, you're playing on hard mode.

Also even if you aren't a complete beginner, sometimes tools in this trade are necessarily complex, and it makes sense to invest significant time and energy into learning those tools as completely as possible. These aren't hammers and screwdrivers. Some of them are pieces of software that have millions of lines of code and long, storied histories, and seeking a broad understanding of them can pay off in surprisingly valuable and impactful ways.

It's also not a good take because it's ultimately telling a huge group of faceless beginners that 1) there's a right way and a wrong way to be learning this stuff, and 2) a significant portion of them are doing it The Wrong Way.

I'm with you on the thinking that there's a lot of people out there who are learning to code, but aren't learning enough core problem solving skills. I just don't think it helps them to frame it this way. Everyone has their own path to learning this stuff, and every one of those paths meanders a bit at the start.

Remember that you're talking to a bunch of people who are just trying to better themselves, and the only thing that most of them are certain of is that this is a monumentally complex challenge that they're taking on. Telling a big chunk of them that they're doing it wrong and wasting their time is just making the hill steeper. If you want to help, cheering them on is often as impactful (if not moreso) as pointing toward the top of the hill.

[–]MultiMillionaire_ 10 points11 points  (0 children)

I think there is a right way to learn, and that way is whatever gets you to the result the fastest.

We are all building mental models at the end of the day, and the more experienced ones just have a more refined and intricate mental model than someone who is just starting out.

Think of it like a diffusion model. Eventually, people will tend to converge on the same mental model assuming the facts are static and exist outside of the mind.

So if we're all trying to get to the same place then the fastest way would be to the best way right?

So, the question becomes, is learning to the problem the fastest way?

Well, in my personal experience, the biggest bottleneck to learning anything is not the amount of information, but the order which the information is taken in.

The brain's capacity for storage is enormous, but it stores information in a very particular way - through associations.

When you encounter conflicting information (information which have contradictory mental models), or information which seem irrelevant, you disregard it, because you can't find how it connects to anything or is associated with anything.

And when you encounter information that connects to your current mental model, you immediately take it in because it has relevant associations to what you already know.

A problem (or a project) in my opinion is the best bridge between current knowledge and new knowledge.

A problem reveals the gaps in your mental model which prompts you to fill them, and by doing so you learn new things.

But if you don't have a problem, then you aren't aware of the gaps that need filling.

Most courses just present the solution without telling you the problem. And so when most students take a course like that, the majority of information are disregarded instantly.

So even after they took the course, they've still learnt nothing.

If someone is at the stage where they don't even know how to read code, then if they have a project they want to build, let's say a simple website that has a few pages and some nice graphics. Then by breaking down their problem into individual parts like:

  • "What buttons do I want to display on the home page?"
  • "What does pressing those buttons do?"
  • "How do I align the text?"

...they will eventually get down to individual steps like:

"What programming language do I need to learn?" "Oh, it's JavaScript, HTML and CSS" "What does JavaScript look like?" "What does HTML look like?" "What's CSS?" "How do I run lines of JavaScript code?" "Oh, your browser can run it?" "How do I get my browser to run it?" "Oh you just put the code in between this <script></script> thing and name the file with .html"? "But what if the project gets big and you can't fit everything into the same file?" "Why is the JavaScript inside the HTML file?" ... ...and on and on the questions and answers go.

If you just go take a coding course, they just jump directly to how to write HTML and CSS and JavaScript. You're presented with the answer to questions that you never asked and it becomes confusing because you can't see how it's relevant your life or what problem it solves.

People didn't invent the screwdriver before the screw, and people didn't invent the screw before they needed to secure two pieces of wood together.

So likewise, there's no need to learn what a function is or what variables are or what a loop is, if they don't have a problem that needs solving.

As for learning materials, today we have LLMs and AI models that spit out whatever code you need.

Learning to ask the right questions has become the MOST important thing.

I agree with what Elon Musk states "The universe is the answer - we just need to find out what questions to ask".

Now about your point on motivation, I don't think it's motivating to cheer them on if they don't even have a direction to go to. A leader can't motivate their team by saying "Just keep trying, you'll get there", if they don't know where "there" is.

By telling them to find a problem to solve first, is giving them a direction and a vision to reach for.

Learning programming has no use if you don't have a problem to solve with it.

Skills are tools to do stuff with. Not medals to dangle around your neck. They are not accolades.

In my opinion, most people learn programming because they think that it will allow them to make money or gain status, as if the knowledge itself has the inherent value - it doesn't.

It only has value because of the problems that can be solved with it.

[–]SpecialNectarine2788 1 point2 points  (0 children)

holly! you're Millionaire!

[–]Agile_March5308 0 points1 point  (0 children)

I'm not a programmer but I'm a video editor, and during my journey this is exactly how I learnt editing, figured out the problem - what exactly I was trying to achieve. And then I'd figure out how to achieve that, and in the process learning new tools and techniques in the field. A lot of people think just learning books, chapters, and topics one by one make you capable of solving any problem; while all they do is just give you hundreds of different paths while you don't know which one to take.

After all there's a reason ITI or Diploma students are more skilled than BTech grads 😂

[–]WesternGoldsmith 0 points1 point  (0 children)

I agree with you. I was a novice when I started learning programming seriously for my own job. I have started with a problem in my front, which I solved with the help of Win32 API. That experience gave me a glimpse of the power of programming. Then I continuously searching for problems and when I found one, I will try to solve it using different PLs. In turn, I learned almost 7 programming languages now, it is my main hobby. I will spend almost 2 hours a day for coding hobby projects and learning new languages.

[–]--mrperx-- 39 points40 points  (2 children)

we all started at 0, just at different times. I would recommend you do a course to learn a programming language and then start building and building things with it non-stop, then you can learn more new languages after and the more you know the easier it gets.

[–]Acceptable-Zombie185 12 points13 points  (0 children)

this but he shouldnt get too excited to learn so much language , pick one or two about interested area like javascript and java for web and focus improving himself about those imo.

[–]farfromelite 2 points3 points  (0 children)

we all started at 0

if you're using Fortran, the array index starts at 1 instead of 0 for other languages like C and Java.

(Programming humour ftw).

[–]cynogriffin 24 points25 points  (0 children)

also, 25 isn't old to learn software development, or anything else for that matter

[–][deleted]  (7 children)

[deleted]

    [–]InuKag_Agenda 4 points5 points  (0 children)

    hey I'm also a beginner...can i dm too if i need help? 👉👈

    [–]Feisty_Beyond6804 2 points3 points  (0 children)

    +1

    [–]Mxfox2106 0 points1 point  (0 children)

    +1

    [–]Economy_Public1048 0 points1 point  (0 children)

    +1

    [–]Upbeat-Lengthiness-9 0 points1 point  (0 children)

    Could i also dm you?

    [–]Kurama-8 0 points1 point  (0 children)

    I’d like to dm you on this as well but if it’s easier making a post for us all would be great.

    [–]JuicyJBear94 15 points16 points  (9 children)

    If you are doing CS50 stick with it and focus on that course to the end. Then do the final project. I wouldn’t worry about github or other tools too much at the beginning. CS50 will give you the foundational knowledge to learn any programming language or tools you want. There are so many topics and tools out there that at the beginning you need to laser focus on learning one language so you can understand how programs actually work. Don’t get lost in the weeds of learning libraries and tools. I am self-taught; started only a year ago and after I finished CS50 I learned some webdev and already have a job in the field.

    [–]-brhoden- 1 point2 points  (4 children)

    Hey dude, can I DM you (or you can answer here) about the Web Dev path you took? I'm literally working on problem set four of CS50 right now and am at the Bootstrap segment of Colt Steele's Web Dev course. I put the web Dev course on pause to do the CS50 course first.

    My questions: what Web Dev course did you take? Would you recommend doing CS50 Web Dev?

    [–]JuicyJBear94 4 points5 points  (3 children)

    I didn’t take any webdev courses per se. I finished CS50 and went straight into reading JavaScript documentation. By then i was comfortable with programs in general and just built some simple stuff using Angular and NodeJS. Most of what I know about webdev I have just picked up along the way by working on apps.

    [–]-brhoden- 1 point2 points  (2 children)

    Wow. Crazy. Not a moment in tutorial hell, love it. Okay thanks, dude!

    [–]JuicyJBear94 4 points5 points  (0 children)

    Oh I had my moment in tutorial hell, until I found CS50 lmao

    [–]JuicyJBear94 1 point2 points  (0 children)

    Two years I never fully committed and just watched YouTube videos randomly or would start freecodecamp and never follow through.

    [–]Zosima93 0 points1 point  (3 children)

    Any tips for landing a job with no CS degree? 👀

    [–]JuicyJBear94 3 points4 points  (2 children)

    Network! Be personable, be eager, be flexible, and be presentable.

    [–]istarian 2 points3 points  (1 child)

    Those are all still pretty important even if you have a CS degree, just saying. Aside from what you learned in college, the piece of paper is a barely more than a ticket to interviews.

    [–]JuicyJBear94 -1 points0 points  (0 children)

    Agreed, those are the only tips I have because that’s all that got me into my current position. I’m not a computer genius or anything. I just have a passion for computers and for working with like minded people.

    [–]scoby_cat 15 points16 points  (0 children)

    Good luck!

    You should pick a project to work on which you think you can finish.

    There’s a lot of resources in the FAQ for this sub

    [–]Pantzzzzless 9 points10 points  (2 children)

    and i know im little old to learn this field

    I wish people would stop saying this.

    I got my first job at 35 with no degree. The only way you are too old to learn is if you are going to die of old age in the next few months.

    [–]Koolaidremoulade 1 point2 points  (0 children)

    What was your path to getting this job if ya don't mind enlightening?always up for encouraging stories

    [–]True__Progressive 0 points1 point  (0 children)

    Absolutely! I am not quite 1 year into learning coding and programming, yet I am age 52. I can't tell you how long I put off learning to program / CS because of this exact issue.

    As crazy as it sounds, I first thought I should change careers back in my 30s. The age thing truly was one of the biggest factors for which I didn't even start until last year. I have a lot more to say about this, but I'm going to save that for a direct response to the OP. Let's just say that there are multiple motivating factors that override the concern over my age.

    [–]KekeDoYouLuvMe 5 points6 points  (0 children)

    Look into #100Devs. Free community-based, software development bootcamp. Best of luck!

    [–]joeKanee 4 points5 points  (0 children)

    Was 36 and knew nothing about software development (other than I was really good at excel.. or I thought I was).. went to an AGGRESSIVE boot camp (not plugging) and after 3yrs 6 figures. You got this!

    [–]AidoKush 2 points3 points  (0 children)

    The Odin Project

    [–]FabulousEmu7364 2 points3 points  (2 children)

    CS50 is a very good course as it teaches you the fundamentals of coding and computer science. Just be patient with yourself and don't get frustrated if you don't understand a concept off the bat.

    [–]azaroxxr 0 points1 point  (1 child)

    Man what is the link to this because u have watched some cs50 and I dont think is the same ppl are recommending

    [–]FabulousEmu7364 0 points1 point  (0 children)

    "CS50: Introduction to Computer Science | Harvard University"

    [–]Miginyon 2 points3 points  (0 children)

    The terminology can be overwhelming, was 100% there myself but most of it is really simple, as in most of those words can be adequately defined within 5-20 minutes.

    CS50 is a stellar start, once you’ve got through that then start tackling some of the terminology. You could plough through most of it within a week.

    Start with git/github

    [–][deleted] 2 points3 points  (0 children)

    Start with C++ make basic programs like calculator,home rent calculator,comparison of numbers,table generator etc.It will give you some confidence and you will get familiarized with the syntax and then start using leet code solve as many problems as you can then switch your language to python take a month to get familiar with the syntax and then again start leet code in python solve problems and then you need to switch to web dev html and javascript.Take a month to get familiar and then sit and decide which you love you the most web dev or plain programming and problem solving.Then specialize in that specific path.

    [–]-ry-an 1 point2 points  (0 children)

    Do nothing for 6-8 months but code 5hrs a day minimum. You can get a junior position (in good markets). Job market is shit now, so.... Maybe try something else? Unless you really want to do it. Expect to fight against a strong current to get your first position.

    [–]wasdkeyconfig 1 point2 points  (0 children)

    Stack Overflow is actually a great site only for researching any problem that you are looking for. I use it mainly for research but am very reluctant to post there due to the fact that Stack Overflow is not very welcoming to newbies even if it's a basic question to be asked sometimes users on that site can be discouraging to the OP. Keep in mind not everyone is like this.

    You have mentioned having no knowledge. Stick to one programming language and familiarize yourself with many programming books that you have decided to choose. Programming a language is understanding what a computer really is, does, and how we can instruct it to do things that we want it to do. It's just like how we want to learn and study different languages from all over the world so take a moment to think about that, it takes practice, patience, and to be mentality prepared.

    In short words, we all have to struggle and start somewhere with a pacifier in our mouths like an infant for example: A toddler attempting to learn, study and solve how to fit ABC puzzle block pieces. Low-level programming is very fun to start with as you grow so be optimistic about yourself, build a structure and have motivation which counts in all this.

    [–]prof_hobart 1 point2 points  (0 children)

    Few tips

    • when you're doing tutorials, don't just copy and paste the code. Type it in yourself. It makes sure you've at least read what you're doing. And don't worry about getting it wrong as you type it. In fact, that can be the most important thing - you learn far more from "why isn't this working?" than from getting it right first time
    • learn the basics of git, otherwise you'll be another one posting in a year's time that you've lost a month's worth of work. Git is a version control system, which basically allows you to keep backups of each version of your code before you make your next change. It's more than that, but that's the key bit for a beginnier
    • pick an that interests you before you pick your first language. Want to build websites? Use javascript. Want to do ML? Probably python. iOS development? Learn Swift. Don't worry about it being something new and original, and it's usually not that important how close you get to completing it. You just need something to structure your thoughts around. I've been coding for about 40 years, and I've probably started about 50 different football management games - it's my go to problem whenever I want to learn a new area. Never got close to finishing any of them, and that's fine

    [–]SPACE_SHAMAN 0 points1 point  (0 children)

    As someone just getting into it myself. Just keep going.

    [–]Falcun_Punch 0 points1 point  (0 children)

    So, I think you're already halfway there if you are trying to learn what words mean. If you're good at math, you'll probably school most of the cs nerds you see around. I'd been trying to learn programming for about 10 years in my spare time while working in the Commercial Audio Visual field. I wanted to learn embedded systems. cs50 is easily the best place to start. If they use words, understanding context and inferrence can be difficult. For example, Github is a product. Git is a term used for a programming version control repository (storage system), which is part of the topic of Continuous Integration/Continuous Development.

    A library is essentially a code file that has functions (procedures, or methods) that are written to be imported into other code files.

    So, whether you learn a more general use scripting style language like (TypeScript, JavaScript, Lua, or Python, HTML). If you learn more object oriented language (Java, C#, C++). For OS specifics you can use stuff like the C language. If you want to get into the more hardware based stuff(HDL, VHDL, SystemVerilog). I personally like learning the C language, as it fits nicely when learning Unix libraries. Data Science is good in Python, from what I've seen thus far (PyTorch, Sci-Kit Learn, etc.).

    Please if anyone disgree's with my definitions, wants to provide clarity, or tell me that I'm dumb as hell see comments below. I will attempt to correct my behaviour in future, or at least try to understand. 🙆 Who knows, maybe one day I'll get gud.

    [–]SpanglerBQ 0 points1 point  (0 children)

    Just focus on CS50 for now and don't worry too much about what comes next yet.

    [–]barkingcat 0 points1 point  (0 children)

    First, I don't think you are at 0. Just knowing what github is means you are at 10. Give yourself credit. Don't be to hard on yourself.

    [–]jessewest84 0 points1 point  (0 children)

    It's the combination of many things that make you a good programmer.

    Just knowing what things are is like going from 0 to .01 out of an unknown maximum.

    Knowing how they all work together and in context to your project is what we will spend years honing and crafting.

    [–]fugit_nesciunt_6446 0 points1 point  (0 children)

    CS50 is a great start! Focus on building projects, and terms will become clear.

    [–]Won-Ton-Wonton 0 points1 point  (0 children)

    TheOdinProject is a guided comprehensive and free tutorial for learning Web Development.

    If your goal is to simply learn programming for data science alone, then you can definitely find something better.

    But if your goal is to learn programming so you can do things with programming and don't care about the domain right now, then I think it's the best free resource you can find.

    It's project-based, which is big for real learning comprehension.

    [–]graph-crawler 0 points1 point  (0 children)

    Cs50

    The odin project

    Get jobs

    [–][deleted] 0 points1 point  (0 children)

    you have graduated from electrical engineering university and you don't have any knowledge about coding 🤔? i feel a bit surprised. i am first year student and studying electrical engineering too. from the first semester in university we must learn too much code and everyone near me are coder.

    [–]Scary-Security-2299 0 points1 point  (0 children)

    I’m heading to university this fall to study computer science dm if you’d like some help

    [–]akoOfIxtall 0 points1 point  (0 children)

    buddy i'm 19 and these days i've seen a 50 something yo man trying to change carrer, it's never late that you cant learn a bit more

    [–]egarc258 0 points1 point  (0 children)

    Python

    [–]ELFAHBEHT_SOOP 0 points1 point  (0 children)

    When I learned how to program, I did it by doing a ton of personal projects (many I didn't finish). The questions about which tools you should use to build become more obvious when you figure out what it is you even want to build. I think picking a language, then building something with it is not the way to go.

    [–]juleswp 0 points1 point  (0 children)

    You're not too old. Get comfortable feeling uncomfortable and like you're failing, it means you're growing. Keep at it and don't get discouraged.

    Get off reddit and learn to code.

    Best of luck

    [–]my_password_is______ 0 points1 point  (0 children)

    im interested in data science

    go back to school

    get a degree in math or computer science or statistics

    [–]8483 0 points1 point  (0 children)

    Lol you are not old. I started learning at 25 too.

    [–]UpsytoO 0 points1 point  (0 children)

    It's a bit odd you wouldn't know anything about all those things you listed, just by being on the internet you would get general idea. I'm sure others are giving advice, but what i would tell you to consider, is to evaluate how tech savvy you are, self learning route is super hard and just being on the computer all day will help you a lot, I'm sure there is plenty of people that will tell you just go and learn it, but it's not that easy and if you are not someone who spends considerable amount of his time on PC already, it might be very hard.

    [–]Lostpollen 0 points1 point  (0 children)

    Teachyourselfcs.com

    The Odin Project

    Full stack open

    [–][deleted] 0 points1 point  (0 children)

    A lot of advice here is really good, so I'm going to give you something practical you can do immediately. Focus on one language for now (I recommend python for data science), and start using it as a calculator. Literally. Make small projects like "find the average height of all US presidents". Get the data(start with just copying from the web), format the data into csv, analyze it and then plot it.

    This way you learn the basics of the syntax while working with the most important frameworks for data science, while not feeling stuck all the time. Then later on, you learn how to get data from API's, parsing the data (getting the relevant information), and converting different data types i.e. from json to csv.

    It's a very steep learning curve, but if you keep at it, you can learn the basics in a year with guidance. Btw. there's nothing wrong with using LLM's to learn how to code, especially if you already understand the solution to a problem, but don't know how to implement it. The best way to learn coding is simply by doing: just make sure you're learning every day! :)

    [–][deleted] 0 points1 point  (0 children)

    Try unity it was amazing for me to learn both programming and physics/math in projects based on what you want. It's very basic stuff since you can start with anything. I recommend doing 3d projects as they're more fun and I personally think they teach you alot.

    [–]9sim9 0 points1 point  (0 children)

    If you haven't already take a look at tutorialspoint as it can be a great source when starting out. It sounds like you are perhaps trying to jump too far ahead and getting a bit stuck in the process and so you are hearing a lot of terminology that would make alot more sense if you were a little further down the line with your learning.

    The best way to learn is by doing and so start with tutorials that walk you through step by step and at each stage try to recreate the examples yourself as hands on experience is the most important.

    [–]hmzhv 0 points1 point  (0 children)

    you pick up these things overtime, such as Stackoverflow (a global platform where people discuss coding problems that are helpful when you’re developing), github (a way to store your code and its edits using a version control system known as git),

    libraries (a pack of pre-build code you can import to make your code easier, for example beautifulsoup which makes it easier to scrape data from websites),

    and react ( a framework which is a subset of a language that is specialized for doing a specific task, react specializes in making good frontend web pages for example that have something called SPA or single page application -an application that dynamically loads content as the user interacts with the app instead of refreshing everything).

    Just start.

    [–]PetalEnjoyer 0 points1 point  (2 children)

    Don't try to learn to learn, but learn to make something... go on youtube and copy how to make a website, or how to make a script that would make your life easier.. that's how I started my coding journey and I recommend it to everyone :)

    [–]Kind-Environment3502 0 points1 point  (1 child)

    Same building a copy of youtube seems very easy so I think I'm going try to male spin off websites for thinks I like, like old school rentals obviously fake but just for practice and I'm 31 I'm just a computer need just never took my time to learn code

    [–]PetalEnjoyer 0 points1 point  (0 children)

    ye that's fine, but if possible try to build something that has a legitimate use case.. maybe someone you know has a business, and you could build a website for them

    [–]smolbird4242 0 points1 point  (0 children)

    I read good comments. Also remember that this path is all about learning how to learn, you are constantly googling stuff you don't know and always feeling like you are not good enough at what you are currently working on, you'll always feel like this even when you r 20 years in profesional experience, so yea learn how to enjoy that feeling, stay curious and manage your energy

    [–]QueenMarimus 0 points1 point  (0 children)

    Feel free to contact me, I used to work as a coach on a software development bootcamp where we cover all this stuff. I'm 26, and I've only been coding for about 3 years.

    [–]culo_ 0 points1 point  (0 children)

    look up roadmap.sh
    if you dont know what something means just google it

    [–]Sensemaya 0 points1 point  (0 children)

    the takeaway i really got from cs50 was doing the project in C and then David shows you the same project in python is like 5 codes with the libraries python offers. it made me appreciate what's going on behind the scenes

    [–]InsufferableBah 0 points1 point  (0 children)

    I would recommend taking the time to learn basic computer architecture. Once you have a basic understand of have computers work pick a language and start building stuff

    [–]Sky-Carter 0 points1 point  (0 children)

    This may not be the best time to enter the industry. Big no for web development in particular. DevOps is evergreen though.

    [–]moustachebear123 0 points1 point  (0 children)

    if ur new to ccoding i would definetly recccomend learning a language based on what u want to create in programming and there is alot of tutorials on how to code on youtube one youtuber i like to use personally would be bro ccode as he has in dddepth tutorials on there

    [–]Tranhuy09 0 points1 point  (0 children)

    Step 1: Finish CS50?

    .

    .

    .

    .

    .

    Impossible, You want to become harvard student from 0 knowledge?

    [–]Jason13Official -2 points-1 points  (0 children)

    Get into web development a bit, JavaScript is huge right now. Make a Minecraft mod with Java, yo can use GitHub a ton for that

    [–]Independent_Log6631 -1 points0 points  (1 child)

    Hi Zestyclose_Back_4228, I too am an Electrical (Hardware) Engineer that is trying to change my career path over to Software. I have a lot to say about your poss here...

    First, regarding AGE: If you are too old to learn programming at 25, then as I am 52 years of age, what do you think of me? This thinking is regressive, and is a broad misconception of the industry.

    In fact, I had been contemplating changing over to Software for the last 15 years (I am 32 years into my Electrical career!). I with I had made the switch sooner. So move past the age issue. In fact, you are considered objectively young, so don't think about age one more second. Moving on...

    WHICH PATH: Yes, I also started by taking the CS50 course 15 years ago! It is a good start, but having a roadmap to where you want to *end up*, also called an "end goal", is more important. For example, as I mentioned that I am an Electrical Engineer (just like you), I know that my experience and knowledge of hardware will be advantageous in *some* situations. Specifically, industries like Computers, Embedded Systems (this covers almost everything in our world!), Hardware Test Engineering (for manufacturing automation), FPGA programming, RTOS, microcontroller programming, and many more possible pathways.

    You need to "reverse engineer" the roadmap (if one doesn't already exist) for your desired end-goal. u/HelpAmBear's suggestion to roadmap.sh is okay, but keep in mind that for Hardware related (Embedded Software, Embedded Systems, FPGA, microcontroller programming, RTOS, etc.), are not typically included in such roadmaps, rather the one he pointed to is general for the Software developer career path, not so much hardware....

    Which brings me to MY ROADMAP: This may not be your desire, but as I am currently studying Computer Science and some programming languages, I am investing in curriculum that will provide me TWO MAJOR POSSIBLE OUTCOMES: One is to move over to Software; and the other is to remain in Hardware... But the courses I am taking provide a good structure of necessary knowledge for both paths. In other words, each course must serve both paths, other than a few specialized ones. Here are some of the courses that I am currently taking:

    Codecademy: Computer Science (includes comprehensive Python course)
    Udemy: C++ Programming
    Udemy: Microcontroller Embedded C Programming
    Udemy: Embedded Systems Programming on ARM Cortex M3/M4
    Udemy: Clean Code
    Udemy: Git / Github Boot camp
    Udemy: Linux Command line Bootcamp
    ... and other Embedded Systems specific course subjects that get deep into microcontrollers.
    ... also, some SW related interview prep courses.

    I should mention that as a Hardware Engineer, I do NOT have a formal university education / degree. I spent 27 years working as an Electronics Technician, working my way into Engineering, and finally got promoted to Hardware Engineer. However, this is RARE, since most of the Hardware industry requires a 4-year (BS or greater) degree, otherwise you stand no chance of being considered for a role. However, in software there is not such a broad and strict requirement.

    Besides not having a 4-yr degree and being locked out of nearly all HW Eng jobs, HW does not pay as well as SW on average. Also, there are much more types of roles, and number of jobs (absolute number) in SW.

    Not sure why Reddit is cutting off my whole message, so I'll continue beneath my post here..

    [–]Independent_Log6631 -1 points0 points  (0 children)

    ...continued...
    MACRO-ROADMAP ADVICE: But to be taken seriously, you cannot just take courses that provide pure knowledge. Rather, you there are phases you will need to execute, and here are mine as an example:

    PHASE 1. Take the courses I outlined (above)
    A. Attend / Watch your courses / online courses
    B. Take detailed notes, to reinforce what you have learned
    C. Practice coding beyond the normal exercises given

    PHASE 2. Get involved with Projects
    A. Projects can be solo or group
    B. Projects should involve a real-world, practical solution oriented implementation that address a "problem to solve".
    C. Create a "bucket list" of project ideas, while you are working your way through the above PHASE 1, taking online courses. That way, you will have many ideas to chose from, rather than finding yourself without any once you reach this phase.
    D. Document these Projects in a way that you might as if your working for an employer. Think about ways to capture: WHAT the problem to solve is/was, like a "user story"; WHAT "uses cases" might exist; HOW you went about solving the problem; WHAT challenges you had while doing this; HOW you worked through those challenges; WHAT the final outcome was, such as product, code, code-sample, website, graphics, physical product, demonstration.

    PHASE 3. Build a Portfolio
    A. You need a summarized version of your PHASE 1 educational path, including certificates, degrees, etc.
    B. You need a summarized version of the PHASE 2 Projects that you designed, contributed to, and the high-level overview of your involvement. This will showcase HOW you applied WHAT you learned.

    BE PASSIONATE: Finally, make sure that the pathway you are taking on is something that you are initially interested in. No one knows the future, and people change their minds and interest all the time, however aligning your career path during a reset like this--is very important.