Matthew Leroe10,193 Points
Are 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.
Dane ParchmentTreehouse Moderator 9,610 Points
Honestly (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.
Matthew Leroe10,193 Points
Thanks! Incredibly helpful. I especially look forward to reading Omar El Gabry's articles on Medium. Thanks again!