Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialRoutine Poutine
26,050 PointsAre there any articles or books that expound on Chalkley's 4P's and workflow?
A mentor told me that "you do not know how to code unless you know what you are coding." That led me to study language independent problem solving. I'm still working on it. Are there any resources that might help me better Prepare, Plan, Perform, and Perfect my programs? For the moment, I simply get lost often, and end up in that abyss Douglas Crockford has mentioned.
I'm looking for a better way of thinking things through before implementation and would appreciate any guidance towards the best resources online or published.
3 Answers
Dane Parchment
Treehouse Moderator 11,077 PointsHonestly (and this is coming from someone with a computer science degree, and is a professional software engineer), practice makes perfect. The best way to learn how to solve programming problems, is to practice them. There really is no book that can help you out with that, because all projects will be different and have their own set of variables that you need to consider when solving them.
That being said, there are some tips:
- Learn general software engineering. This includes topics like: Software Requirements (Functional and Non-Functional), Software Architecture Methods, Development Methodologies (SCRUM, AGILE), Testing (Test Drive Development) and more. Granted I went to school and majored in this, but you also have the internet, so finding out about these topics and learning about them should be possible should you put in the work.
- Start small. Don't try to build large applications while you are still learning, instead start with a small idea and then expand on it. For example: Try to build a Console/Text based todo-list application. Then give it a GUI. Then create either a web interface or desktop application out of it. Try connecting it to a database. Make it work in real-time. You get the idea. Don't try to build a house while you are still trying to learn what a hammer is.
- Learn about Data Structures and Algorithms. These are the more mathy stuff, and do require a lot of abstract thinking, but they are also the difference between a code monkey and a software engineer. Daily i have to try and figure out what sort of data structures I am going to use to solve a problem: Will I use a HashTable? Binary Search Tree? Maybe a simple Queue will work instead? Should I use a merge-sort over a quick-sort? These are all language agnostic and can be implemented in any language, thus laying the ground work for you to solve problems.
Basically the gist I am getting at, is that before you start building a project, you need to learn about the tools you have at your disposal so that you can better utilize them to solve a problem. For example: How would you go about solving an algebra problem if you know nothing about: Variables, addition, subtraction, multiplication, or division? Same concept here. To think like a programmer, you need to understand the tools available to you.
If you want me to provide links to resources for you, let me know.
Routine Poutine
26,050 PointsThanks! Incredibly helpful. I especially look forward to reading Omar El Gabry's articles on Medium. Thanks again!
Kylie Soderblom
3,890 PointsWOW!!!! That was a wealth of information there. Thank you so much Dane Parchment
Routine Poutine
26,050 PointsRoutine Poutine
26,050 PointsDane, Thanks so much! I will copy and paste this to a text file for future reference. I definitely lack that foundation in computer science/engineering. I've been studying about 4-10 hours a day for a year now. My biggest issue has been practice that leads nowhere. I'm inefficient as a newcomer, even though I regularly see others who are racing past me in the same timeframe, and I want to catch up. I have worked on many projects, only to spend hours stuck on certain sections. I now use:
May I have a suggestion on some resources I may have overlooked? I am also struggling with articulating questions in the first place, but have found some of the quickest and most helpful responses right here on Treehouse -- I may be on the cusp of taking my skills to the next level. Thanks again for your time and expertise!
Matt
Dane Parchment
Treehouse Moderator 11,077 PointsDane Parchment
Treehouse Moderator 11,077 PointsMy first suggestion is to pick a language and git gud with it, learn all of its dirty little secrets so that you can be proficient at solving problems with it. My recommendation for that is: JavaScript, it's easy to learn, hard to master, and provides you access to build every type of program imaginable. Want to make a web app? IOS or Android app? Desktop App? Machine Learning App? Video Game? Enterprise Level App? JavaScript covers it all.
Resources