I mean, there's books out there like this.
In my own experience, it's a matter of coding enough. You have to try to create something and do it naively. Having done something yourself gives you a reference for when you study programming in books or videoes or when talking to others that you can compare new information to, so you can realize how you could have done things better in your own project. If you don't have any reference experience, you wont learn from the information in the same way. It's part of becoming a programmer that you'll write some crap code.
Try to code some simple desktop application, like a text editor, or some other simple program. Make a list of features it should have - for a text editor, you should be able to input text, modify the input text, save the text and load a text file.
How about this book Think like a programmer. Have a looksie.
Edit: For your problem you could use reverse planning: Start at the end with the result you want and work backwards.
If you have never made a game of tic tac toe or something similar, your brain hasn't made the connections or learned the skills that would translate from one game to another.
Building a mern stack website is a completely different skillset. It's planning, architecture design and some programming logic depending on the webiste. A game of tic tac toe is pure logic and breaking down a large problem into smaller pieces to solve.
In short, you've definitely made progress! Just in a different area :) If you want to improve in logic, just build more logic heavy projects.
Also, just use google! lol It helps you learn and professionals use it everyday to help them solve real world problems.
Also, here's a great book if you are interested. It will help in learning how to break larger problems into smaller ones. https://www.amazon.com.au/Think-Like-Programmer-Anton-Spraul/dp/1593274246/ref=asc\_df\_1593274246/?tag=googleshopdsk-22&linkCode=df0&hvadid=341791741598&hvpos=&hvnetw=g&hvrand=17615376656973970093&hvpone=&hvptwo=&h...
I actually got into web development a without any bootcamp or degree. I learned mainly through youtube tutorials in order to wrap my head around it but it really started to click for me when I FreeCodeCamp(FCC). I was very poor living abroad at the time so I literally paid for nothing and managed to learn everything I needed. We live in beautiful times where knowledge is abundant!
Anyways, I highly recommend FCC as it helps you think like a programmer and provides you with portfolio projects. I actually got my first job in an ed-tech company before finishing the FCC course as an e-learning administrator. There was no coding needed for the role but I coded at work as much as possible on tasks outside my role just to help others. This eventually led to people seeing my passion and then moved me into the right place, into a dev team. Overall, it took me around a year of learning to code before I got a job in the tech sector, then another 3 months before I switched roles to a junior developer.
Good luck to you!
Also I highly recommend this book: https://www.amazon.com.au/Think-Like-Programmer-Anton-Spraul/dp/1593274246/ref=asc\_df\_1593274246/?tag=googleshopdsk-22&linkCode=df0&hvadid=341791741598&hvpos=&hvnetw=g&hvrand=17615376656973970093&hvpone=&hvptwo=&h...
Ice really enjoyed think like a programmer it helps with the problem solving side more than the programming side
Is the course the whole academic year?
I think that half an entire school year on drag-and-drop might be too much and could lead to developing bad habits.
If I were teaching a course, I'd have the drag-and-drop and corresponding GML side by side so those who are more advanced can start to get it faster and even those that don't get it as quickly can still start to see what is happening "under the hood"
This isn't to put down drag-and-drop which I use myself, just that I think that being exposed to GML sooner would be better so students see that programming isn't as scary and that it's just a way of thinking.
Also, I think a resource like Thinking Like a Programmer would be good to draw inspiration from because even if it's not in GML, I think that thinking of an approach to solve a problem is also an important skill that will help them throughout the course and in the future if they stick to it.
As an example, when I was working on a simple game to learn GameMaker, I had several objects rendered to prevent a character from moving but it was more efficient to just check if they were within a rectangle.
It's not the biggest deal since unless they are making AAA titles, any modern PC won't have issues with a few extra objects but the good habit to follow best practice will serve them well in the future!
Also, awesome job on having a course like this in high school. Your students are lucky! Thanks for being an engaged and dedicated teacher!
Keep you day job and think a lot smaller.
You're only going to learn so much programming a day, even if you make it your full-time job. You've got a braincell budget to work with and programming will spend a lot of it. There's a lot of talk on exactly how many hours a day a programmer is actually productive, and the consensus seems to be from 3-5 hours a day max.
The real challenge facing you is that you don't know how to think like a programmer. That's what makes your first language the hardest language no matter what language you pick.
I've had "Think Like A Programmer" recommended to me in the past on the topic, but I haven't read it myself because I learned how program some 20-odd years ago.
If you're a structured learner like me, go for Udemy or Zenva coursework like one of their mini-degree programs. Build your skills, do lots of mini-projects, move onto smaller projects, then decide your big projects based on your skills.
Read Think Like a Programmer. The first chapter in that book completely changed the way I solved katas on code wars and I started solving more. Think Like A Programmer - Amazon
Get the following book, it explores exactly the issue you're facing right now : Think like a programmer
fell free to PM me your email address, there are a few other stuffs
There is literally a book called Think Like a Programmer. I haven't read the entire thing but Reddit recommended it to me. Maybe check it out. Also, please chime in if you have read this book and whether you recommend it or not.
I found this book really helpful! It isn't solely about pointers, but rather how to solve problems in C++. However, it has a chapter on pointers and dynamic memory that I found really useful. Definitely worth a gander.
It seems you only know how to work with the code and write it, but you never actually learned why it works. At least that's my diagnosis from reading your reply. Perhaps the best thing you can do is study better programming logic, so that you understand why things work they way they do. I've read this book and it helped me. Read it and see what you can do after with the languages that you already know.
edit: Clarification - When you understand the reason why a line of code does the action you wanted then it becomes easy to never mix things up, because you will start looking at your code as more then just syntax.
edit 2: Grammar.
>> I find coding okay, just I always have trouble with coding labs.
coding is poorly taught in many schools. they don't really teach you what to do confronting a blank page and programming problem, how to attack it in a structured fashion. this book might help:
https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246
Lots of people are gonna recommend sites like CodeAcademy to get started, and I do believe it's a good start, but in my experience it's not that good with teaching you the logical thinking required for programming. If you have trouble with this, you should read a book like Thinking Like a Programmer combined with a lot of practice. Have fun!
I'm going to echo what others have said here and say that you should practice by solving programming problems in your spare time. Each time you complete a problem your confidence will grow and It gets really addictive. That feeling you get when you solve a problem after spending time trying to figure it out is what makes programming so fulfilling.
Breaking problems done until you can code them is the most important programming skill you will have. This book may help you with this.
Start to focus on your problem solving skills and work on improving them. There are quite a lot of good resources out there on things you can do to improve this skill, mostly the revolve around breaking up the problem into smaller parts and constant practice. You might find some of these helpful and there are many other resources out there:
Then once you have given a few of these a read start practicing on site like the following:
You don't have to sign up to all of these, just one will do but they all vary in what languages and problem areas the focus on so find one that has the stuff you want to work with. Then keep practicing and learning using what you learnt from the guides above to help you.
That said there is also nothing wrong with looking at how others have solved a particular problem - especially if you have had a go at it first. Compare and contrast your solutions and see what benefits there are with each approach - this is how you improve. Over time you do begin to take on these improvements and quite often you see other ways to solve a problem that you would not have through of - they key is to try to understand what is going on and try to give out why someone solve it in this way.
The book Think Like a Programmer is a good match.
Stupid question on my end perhaps but have you ever read How to Think Like A Programmer?
Think Like a Programmer: An Introduction to Creative Problem Solving https://www.amazon.com/dp/1593274246/ref=cm_sw_r_cp_apa_sjOCAbTSAJPKT
I have been doing these challenges
And also using this book to get better at coding, in general: Here you go
Both links are C++ related and work on challenges which build on each other.
Sounds like the book Think like a programmer might be up your alley. Haven't read it myself, but I've heard good things.
First, have you tried applying to other than the Big N companies? No CS degree, tons of competition, almost a lottery for acceptance. You're setting yourself up to fail.
As for the other bits. Problem solving is the what seperates coders from programmers. It's not a black art or magic or anything -- it is a skill that can be learned. For the most part it comes from experience. A strong math background can help as it is the essence of problem solving.
The algorithm interview pony show -- In practice it's not really about coding them, it's about choosing which one to apply to a given problem. All they are doing is (purposely or unknowingly) applying an arbitrary filter to applicants. Anyone testing if you can knock out a selection sort from memory is really asking the wrong questions. The proper question is when should you use this algorithm or given this sort of problem what sort of algorithm should you select.
A book that might help is Sprual's Think Like a Programmer.
Another favorite is The Practice of Programming. Not so much about problem solving, but a good quick read on some of the basics of professional programming. Read the Amazon synopsis to see if it will float your boat.
Just to get an idea, What do you mean by basic knowledge of C++?
If you understand variables, loops, classes, input/output then you have the basics.
You should be getting used to more advanced topics before Data structures.
I had a professor who really knew how to challenge us. He would give us HW's and have us solve the problem at the basic level in 5 different ways. Using (for loops, while loops, if statements, functions, and arrays). A good tip he always said was to solve the problem in 3 ways then choose the best way you felt was the cleanest.
I have a course that really helped me understand the fundamentals of C++ beginner to advanced
- [Udemy] (https://www.udemy.com/course/beginning-c-plus-plus-programming/)
Now, this book also really nailed the "Advanced" material with great examples, and coding problems to retain the info. To really understand data structures and such you should really understand more about C++. Learning advanced techniques such as pointers, arrays, header-files, multi-dimensional arrays, inheritance, libraries, polymorphism, OOP, etc. These are more Intermediate level topics. Once you feel more confident around those topics then Data structures are where you would progress towards.
Another great book I read focuses on solely understanding the logic of problem-solving in programming.
- [Amazon] (https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246).
This book was different from others that I read because it didn't focus on teaching the basics of a language. It only focuses on how to solve programs from a programmer's point of view. It helped me tackle solutions differently than I would on paper or in a math class.
C++ is one of the hardest languages I've learned so far and I give a lot of credit to anyone who makes a career out of it. A few more considerations for great reads regarding C++
[Amazon, Scott Meyers] (https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996/ref=pd_sbs_3/135-3285127-1661032?pd_rd_w=coU6R&pf_rd_p=f8e24c42-8be0-4374-84aa-bb08fd897453&pf_rd_r=ZZ9RB4P4FMKJY8DZ49KR&pd_rd_r=0f43f8e9-5e6c-42b0-8153-7be92d561787&pd_rd_wg=pvRY2&pd_rd_i=1491903996&psc=1)
-Scott Meyers is a highly qualified C++ Programmer that really sets the bar for how to program C++ at an advanced modernistic approach. Many of my CS professors idolized him because he understands the advanced topics so well and teaches you how to write clean, optimized code. Not certain but I believe he plays a substantial role in the C++ committee for standards. IDK if he does to this day, but he definitely presents often at the conferences.
Give Think Like a Programmer a look.
Think like a programmer might help. I've seen it recommended quite a lot.
It's never too late or too hard.
Start here with the Foundations https://www.theodinproject.com/paths
And I've heard good things about this book: https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246
Come back after those and explain what you want to build and you'll get suggestions for next steps.
Think Like a Programmer may be precisely what you’re looking for, and is a frequently recommended resource.
Trading on my experience hearing new blood talk about their lack of experience, it's likely your problem solving skills that are lacking, not your logic. Conditional logic is very simple.
Two books I recommend are:
https://www.amazon.com.au/Think-Like-Programmer-Anton-Spraul/dp/1593274246
https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X
YES! Same I understand how to solve the problem just not how to write the code that solves the problem for complex algorithums. You're not alone! I got a copy of the text book algorithums and read some occasionally also practice tech interview questions most are solved with sorting algorithums but it teaches you to think like a programmer and learn some new methods to add to your tool box. Find some practice ones online that you can try on your own then peak at the answer for help.
free text book Algorithms
this one is also good Think like a programmer
I recommend that you start with the Udemy course of John Purcell.
https://www.udemy.com/course/free-learn-c-tutorial-beginners/
When yo uhave done that, perhaps study up on the SOLID principles.
https://www.freecodecamp.org/news/solid-principles-explained-in-plain-english/
Read the book "think like a programmer"
https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246
If you want to be hired in a year, make a hard commitment. For example, maybe spend 8 years studying and programming each day or whatever amount of time you have.
You have to write a lot of code. When John purcell tells you to play aroud with the code, test changes and make it break and fix it, DO IT. Don't just sit there and imagined you learned stuff.
Programming is a craft so just like a carpenter, only reading and watching will not make you a programmer. You must practice a lot and make things or you will end up feeling like you know nothing after a year.
If you have no ideas at all, check out sites like https://www.codewars.com/ to get some tasks to try to solve.
Make a github account and put your code there. Partially it will teach you version systems. You will also see your progress and perhaps have some projects you can show an employer.
If you want to show a project to an employer make sure it is done and works as intended. That is a good thing in the eyes of employers.
Every programming newbie needs to understand one thing: in 99% of the time the programming languages don't matter, the fundamental concepts, logic, and techniques are universal. Programming is solving problems with computers, the languages are just the tools, not the problems themselves.
So your true problem is not C, but concepts, logic, and techniques. Perhaps get yourself a programming textbook. A real textbook, not online tutorials, not "learn to code in 30 days" style books, proper textbook, to gain a deeper understanding of the basics of programming and computer science (e.g. what are these data structures, how are they stored and computed, how can I use them, how can I represent real life data/objects with them).
To work on your logic, Think like a Programmer by V Anton Sprual is a good read. How to Solve it by G. Polya is also great. The short gist is: think of all the things you know to do, then analyze and break down the problem, until you're face with numerous smaller tasks, then use what you know to achieve those small tasks, then connect all your smaller snippets into a coherent whole. If any of these smaller tasks still feel too hard, chances are you're not breaking down the problem enough.
Techniques will come with experience. The more problems you face, the more you'll recognize "oh I've seen this before, so I'll just need to do [x] here".
Also, when you're stuck, reading the documentation should be your second nature. Learn to read it and have the habit of reading it whenever you don't understand something. Is there any function that can help you do what you want? How do I use this function? What arguments does it accept? What does it return? You'll get more tools under your belt and a solid understanding of which tool does what and how to use them.
Do not get discouraged! Here are two ideas to help you to progress:
Try doing some of the easy problems on www.codewars.com to get you started. You'll be doing the leetcode problems before long!
i think a good start is to read this book (https://www.amazon.de/Think-Like-Programmer-Introduction-Creative/dp/1593274246) .
it will give you good knowledge and advice you think like a programmer. in the first 3 chapters is the focus on thinking right at development.
Grab this book, this will help break down programming tasks.
I think too many discussions on programming mention very little about the mental requirements of programming.
It's all too focused on syntax and methodologies. I think we need to discuss the real factor more often: problem-solving.
No matter how much you master the syntax, you will only be as good as your problem-solving abilities. This is the skill that makes a good programmer into a great one.
After learning Python (resources I will list below) I would recommend reading this book: Think like a programmer (https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246)
It goes more into the mental nuances to programming. I personally became an excellent programmer after putting this author's methods into practice.
---
To answer your question, though, I'll provide a list of resources. Most will be books (which I would recommend you start enjoying, if you don't already), but some will be online courses:
After you finish either (or both!) of those, read this book, like seriously, read the entire thing ASAP: Python Object-Oriented Programming (https://www.amazon.com/Python-Object-Oriented-Programming-maintainable-object-oriented/dp/1789615852/ref=sr_1_2?dchild=1&keywords=python+object&qid=1596329831&sr=8-2)
After Python, move onto either web or system (AKA: HTML, CSS, JavaScript -OR- C, C++, I would recommend the former at first, followed by the latter)
PM if you would appreciate more elaboration and resources.
Cheers!
As you've stated: things move far too quickly and often for it to make sense to focus on specializing. Use Linux day to day first, get comfortable with the layout of the file system, finding problems by searching logs, software install, service management, etc.
Instead focus on the skills you gain by applying knowledge to use the tools, regardless if you ever specialize. The two things this will teach you are: how you learn, how to ask questions the smart way.
How you learn is incredibly important to know. Can you hear something and remember it or does it have to be written down? What types of practice work best for you? How often do tasks need to be repeated to really 'stick"? What kind of other tricks can be done to help things stick?
Asking good questions may be even more important. Many people find highly technical communities very off putting for exactly this reason. When I was young (~12) I struggled immensely with perceived bullying from a programming community I was involved in on IRC. After struggling for a while and beginning to be a little brat I was PM'd and told to read this before asking any more questions. On first glance it may seem pedantic but that document greatly changed how I go about both acquiring knowledge and asking other people for their own. I would not be where I am now if that chance encounter didn't happen.
As far as starting goes pick something that sounds cool and run with it. Get an older box and make it a VM host, have a VM running Kodi for you, have another running freenas, a firewall on its own set of NICs that will send you daily usage reports, a build server so you can push repos to it and have it build custom RPMs for you, anything you damn want!
If I had one other tip it would be to learn to program and the thought process that goes with it. Being able to think like a programmer has done me incredible good. Every single day I am writing Python, Bash, or some ansible role to perform a task. Having a very strong underpinning of programming has made my job 100x easier. I have automated most of my day-to-day tasks so I can focus on things like syncing stupid complex LDAP ACLs with service X or Y, backup for solution Z that doesn't have a 'true' backup solution, and creating several tools or libraries other departments use to interact with internal systems. Generally basic CRUD or ETL type stuff.
I know java, but currently speed learning c++ here, so that I can complete this Think Like a Programmer. Might seem extreme to try to learn a complete language just to improve my problem solving abilities, but the more I practice programming, the more I run into the very common problem of not being able to break problems down enough to solve them/ think algorithmically. This book is highly recommended for this issue, so I figured I would give it a shot, would love to learn and work together in a group. I don't know what your schedule is like but maybe we can get a discord channel going and invite other people who want to learn c++ and problem solving as well.
The first thing I suggest is to get started with version control(git is my choice), start with javascript Eloquent Javascript and also this book met help. Don't get fixed on languages, they are just tools. Try to understand the core concepts. Once you are comfortable with javascript, try to build something. Javascript has a lot of open source code and coder, I suggest you to follow some good developers. Programming is hard, but it's also very rewarding. All the best
Edit: r/learnprogramming is great place for newbies
http://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246/ref=sr_1_1?ie=UTF8&qid=1448377411&sr=8-1&keywords=how+to+think+like+a+programmer - have been reading through this book, maybe it would be good for you too.
There's a good book for that.
http://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246
Think Like A Programmer was the best book for me to learn how to break down problems and solve puzzles programmatically