2 answers
2 answers
Updated
Dat’s Answer
Hi! Great question! The process for this is a little different for everyone. Programming concepts and principles did not come naturally to me, so I had to do a lot of practices.
What worked for me was to first, understand and practice using a OOP/functional programming language that is in demand. Next, you'll want to learn and understand the basics of data structures, first in concept, then try to build those data structures on your own. Then move on to all the basic algorithms and understand big-O notations. After that, you'll want to learn about dynamic programming concepts (this is not a set algorithmic formula, but a rule of thumb in designing optimal solutions). All this takes a lot of time and effort, but it's incredibly essential in building a strong foundation to be a good engineer. You will run into concepts that are incredibly difficult to understand the first, second, or third time (I failed *many* *many* times). When you do, don't be discouraged! Keep practicing! If you look up solutions online (we all do), make sure you convert the code into plain human language so you can actually understand the steps required to reach the solution.
One last thing: practice to write down your logical thought process (comment your code) before you start writing your code in as much detail as possible, so you or your peer can see and understand your code better. If your code ends up not working, it will be much easier to debug. And your future self will thank you when you have to go over your old work! :)
I hope that helps!
TLDR: Practice a lot, learn the coding principles, comment your code before you write.
What worked for me was to first, understand and practice using a OOP/functional programming language that is in demand. Next, you'll want to learn and understand the basics of data structures, first in concept, then try to build those data structures on your own. Then move on to all the basic algorithms and understand big-O notations. After that, you'll want to learn about dynamic programming concepts (this is not a set algorithmic formula, but a rule of thumb in designing optimal solutions). All this takes a lot of time and effort, but it's incredibly essential in building a strong foundation to be a good engineer. You will run into concepts that are incredibly difficult to understand the first, second, or third time (I failed *many* *many* times). When you do, don't be discouraged! Keep practicing! If you look up solutions online (we all do), make sure you convert the code into plain human language so you can actually understand the steps required to reach the solution.
One last thing: practice to write down your logical thought process (comment your code) before you start writing your code in as much detail as possible, so you or your peer can see and understand your code better. If your code ends up not working, it will be much easier to debug. And your future self will thank you when you have to go over your old work! :)
I hope that helps!
TLDR: Practice a lot, learn the coding principles, comment your code before you write.
Updated
Dana’s Answer
Hi there!
Here are some ways you can dive deep into Computer Science:
1. Understand algorithms and data structures - you can do this by reading books, following online courses or practising coding.
Book examples:
Cracking the Code Interview
Courses:
EDX has plenty of university courses
Google Tech Dev Guide
2. Practice coding
Nothing compares to actually getting your hands on a problem and trying to solve it. This develops your dexterity and will greatly help for the future interview processes you have.
Try coding on websites like LeetCode. They are plenty of problems of many types and difficulties, and a Discussion section where you can find solutions and talk about them.
3. Work on small personal projects.
This helped me a lot in my first years of university. It's the way I learned new programming languages and how to structure my code better.
Try developing something small, like a game (Pong, Hangman, Tic tac toe). Or, if you are interested in developing websites, try imagining a customer that is asking for a website for their company.
4. Apply to an internship
I wrote a full-detailed answer at another question about how to apply. You can find it at this link: https://www.careervillage.org/questions/548749/what-is-the-best-way-of-finding-entry-level-internships
Let me know if you have other questions!
Here are some ways you can dive deep into Computer Science:
1. Understand algorithms and data structures - you can do this by reading books, following online courses or practising coding.
Book examples:
Cracking the Code Interview
Courses:
EDX has plenty of university courses
Google Tech Dev Guide
2. Practice coding
Nothing compares to actually getting your hands on a problem and trying to solve it. This develops your dexterity and will greatly help for the future interview processes you have.
Try coding on websites like LeetCode. They are plenty of problems of many types and difficulties, and a Discussion section where you can find solutions and talk about them.
3. Work on small personal projects.
This helped me a lot in my first years of university. It's the way I learned new programming languages and how to structure my code better.
Try developing something small, like a game (Pong, Hangman, Tic tac toe). Or, if you are interested in developing websites, try imagining a customer that is asking for a website for their company.
4. Apply to an internship
I wrote a full-detailed answer at another question about how to apply. You can find it at this link: https://www.careervillage.org/questions/548749/what-is-the-best-way-of-finding-entry-level-internships
Let me know if you have other questions!