Showing posts with label Problem Solving. Show all posts
Showing posts with label Problem Solving. Show all posts

Wednesday, 9 December 2015

Programming. It's Less About Maths Than You Think - But maybe Maths is not what you think it is?



I really enjoyed Maths when I was at school. I liked puzzles and mysteries, and Maths is both of those things! I didn't pursue Maths beyond GCSE, but I have always enjoyed documentaries, programmes and books about the application of Maths to areas of science and discovery - such as astronomy, cartography, art, engineering, physics, and - you guessed it - computer science!

Eventually I was no longer content with just knowing about Maths, I wanted to 'do the Math'!

My Journey Into Numberland


After [many] years away from school I had done nothing more complex than working out prices, so I thought what better place to start than Maths GCSE... again! I did an intensive correspondence course in Higher Level GCSE Maths, and it was intense! (You can read more about it here)

Logical Thinking


Before you panic, I'm not suggesting that you go back to school and do Maths GCSE! You really don't need to. What struck me the most about doing the Maths course (as a mature student) was the realisation that Maths is mostly about thinking in a certain way. It is very logical. So, if you don't panic, you can work through the questions methodically and get the right answer. There are no surprises! You are not required to make discoveries! All you have to do is follow tried and tested steps!

Programming is the same in that respect, because it calls on existing resources and requires logical and organised thought. There's no reason why you couldn't go on to make amazing discoveries in the future, or invent something new, but you don't need to reinvent the wheel just yet.

You really don't need to be a Maths whizz to do programming! It's all about getting your thinking right.


When you are faced with a programming task / problem, if you can identify and understand the possible methods that could be used to solve it, then you are well on your way! It's all about getting your thinking right, and learning what the available resources are, as opposed to knowing everything in detail.

Programming Makes Maths Easy!


The great thing about programming is that most of the Mathematical methods for solving problems, such as performing searches on data, have already been turned into easily reusable code that you can pretty much copy and paste into your programme. Think calculators, but way cooler!

Knowing too much can sometimes be a disadvantage, and self-doubt can be very healthy in programming.


If you already know a lot, you may miss some important details and steam ahead, only to find that you've reached a dead end! If, however, you take a more analytical approach, by constantly asking questions as you go along, you will engineer and create a solid solution. So don't worry if you think you don't know enough. That's ok, and it could be an advantage!

Want to know more?


See my beginners' guide to Binary Search Algorithms for an insight to programmatic thinking and problem solving. I'll be blogging regularly about my journey through programming, and sharing as I learn new things.

Websites and Resources


Kingsley Ijomah
Khan Academy
Codecademy
Virtual Nerd




Please do leave a comment below if you have any questions. I'd love to hear from you!

Saturday, 5 December 2015

Are You An Infinite Monkey?


Do you remember tackling Maths problems at school, and the teachers would always say, "Show how you worked it out!" I thought that was a pointless exercise, because if I know the answer, then I know the answer, right? If I don't know the answer, then I'll have to work it out. Showing what I already know is a waste of time. Or is it?

When one of the teachers explained it to me, it made perfect sense. They want to know how you arrived at the answer - the steps you took to get there. It's not so much about having the correct or incorrect answer, but if they can see your workings, they can help fix your process. You can then apply your thinking more effectively to future Maths problems and improve your chances of getting the correct answer.

Those same principles have a much wider application than I originally realised when I was at school. If you can show your workings, when it comes to work, hobbies, relationships, you can solve a lot of your own problems.

Well, that's how it's always been done


Very often in life, as children in school or adults at work, we are told 'what' to do without really knowing the 'why'. That's because the people in charge probably don't really know why. The answer, 'Well, that's how it's always been done', is a particular favourite! As is the case with middle-management, they don't know why you are being asked to do things a certain way, which can be very frustrating for the workers, but it can also make the job of the managers very difficult.


It's easy if you have a fixed set of steps that you must follow every day, which have fixed outcomes; but what if the instructions vary from day to day, with no clear goals or vision? It would be very hard and stressful to work in such a place.

A broken or dysfunctional process produces varied results of poor quality. As with Infinite Monkey Theorem, it is likely that they will produce something of quality at some point, but it will not be by design.

Why rely on such random odds?


When revolutionary new business practices are developed, they are often very intuitive and look like common sense. But that's because they asked 'Why'. Why have things always been done a certain way? Do those practices suit the modern tools or workforce, or are they from a different era?


Bad processes are scary because they're like a tangle of wires. You don't want to change anything because you're afraid it might break!

Continuous Improvement



Processes that have clear reasons behind them are easy to follow. They take into consideration the end goals, the tools available / needed to complete the tasks effectively, the skills of the workforce and expectations of the clients. Good processes are easy to review and change, because they are clear. You can see how everything is connected - the flow - and the impact of each stage in the process. Arguably, a good process is one that is under constant review. The thinking behind it is being improved and reviewed.

Kaizen is a very old principle, but it is one of eternal youth. A process that is continually improved for greater quality, efficiency and productivity will keep the workforce inspired, and it will certainly keep your competitors on their toes!