Hello everyone i'm new to programming world.And a self taught developer i have learned the principle of programming but when i try to solve a complex problem through coding its just a headache,and i wanna know how i can increase my problem solving skills?and please mention personally how you increase your problem solving skills in your journey
As me many of developers are self taught developer without a CS degree this Answers might help many of them just like me.
Thank You
i;m kinda late but here's my 2 cents. A lot of people , when they need to solve a complex problem (by this i mean a complex webfeature or app feature), use the dive and conquer method, NOTE, you won;t be able to use on all problems, but the main idea is useful. Break your problem in smaller chunks and then go at creating them and include them so that you solve the problem. Also its time consuming and you'll do a lot of things wrong, but thats how one learns stuff
Read -> Code -> Learn -> Repeat.
Practice Practice Practice
Some tips I would like to give you.
Start from solving some easy problems it will build up your confidence. You can try codewars .
Explore new algorithms. Checkout geeksforgeeks it has ample of resources .
Problem solving skills depends upon how much experience do you have , like how much problems you have solved in the past. Many times experienced coders catch the logic fast as they have somehow dealt with the similar types of problem before.
Problem solving is like sports, the more you practice the better you become :)
Mine is a different background - I studied as an aerospace engineer so I've had the advantage of being forced to solve problems quickly, efficiently and correctly. In my degree we did matlab to solve complex math problems. Then after this I became a software engineer (self-taught). So a mix.
In order to solve problems you need to be able to identify exactly what the problem is. This sounds easy, but can elude people for a long time, even those who are versed in problem solving. However, the idea is to break the problem down into it's fundamental components and then through careful observation, analysis and deduction the solution can be found. Problem solving is a process.
The more knowledge gained in a certain language can make this easier but that doesn't mean it can't be done for those who are brand new to a language, or anything really. The experience you already have in life and in other programming fields can be used to understand how it could be done in a different environment and from this derive an appropriate approach to the problem being faced.
An example, if its a bug:
As for complex problems its important to follow a similar process where you identify what you want to achieve (observe), then understand all the tools at your disposal in order solve the problem (analyse) and then break down the problem into smaller and smaller parts with corresponding methods/tools to solve (deduce) so you can start crossing them off your list, on the way to completely resolving the issue.
Observe, Analyse & Deduce.
Practise is the most important part.
You can just build cool stuff, if that gives you the right amount challenge.
If you find that building 'real' stuff has too many simple parts, or if you want to learn specific things, you can also solve small puzzles.
I've used Hackerrank before and it's quite entertaining. (As a bonus, some companies use it as tests during interviews).
EDIT It also helps to reflect on your approach after solving a problem or being stuck for a while. What did you do? Did it work? Which theories do you have about the cause? How can you test them? What's the most useful information to obtain? How can your IDE help?
Hello Usama. I'm a self-taught developer too. I started with Java and directly tried to start learning Android development. Actually, I failed because I didn't PRACTICE enough before starting Android development ( Now I'm a web developer :) ).
Try to practice with "coding" in parallel with the technology you are trying to learn ( Such as mobile or web development ).
Try to practice a bit in problem-solving. This sheet may help you to start with easy problems:
And you should start learning some CS principles such as data structure and algorithms. You will be a better developer when you learn these things. Because you will learn about some problems and how they analyzed and solved.
Sumeet M
Developer
Practice, Practice & Practice. Join coding platforms like InterviewBit.com, projecteuler.net.