*** Materials for this course are comming from book Python Crash Course by Eric Matthes.
*** More information about Eric Matthes' book and additional lecture materials can be found on book's website .
- What is it?
- What is it used for?
- What can we do with it?
- What are some alternatives?
- Why do we need it?
- What problems it solves to us?
- What does it enable us to do?
- How important it is?
- Where does it fit in general CS/programming picture?
- Imagine this programming element hadn't beed invented.
- How could we replicate its behaviour?
- What other elements can we use to get same results?
- WHY question!!!
- What do we want to achieve and as a consequence we need to use this programming concept/element?
- What is our business idea whose translation into code requires use of this programming concept?
- History!!!
- What did people use before this concept/element was invented?
- What is 'zero point'?
- 'Zero piont' is programming concept that will not be explained.
- It can't be explained easily.
- It is something from which we start. We take it as granted.
- We use it to explain other programming concepts and elements.
- Analogy from mathematics is 'point'. There is no explanation of it. We just use it to explain more advanced elements (lines, planes, hyperplanes...)
- Examples: integers, floats, letters, boolean values... We take it as granted, we already know what it is!
- You will spend most of your (work)day on DEBUGGING i.e. figuring out why something does not work properly.
- Time that you spend on DEBUGGING will be even more than time used for modelling and conceptual thinking!
- So, be patient and get used to errors. Remember, error that is stopping you is better than hidden error.
- Also, integrating elements and making them work together is crucial part of DEBUGGING. Most of the time, it is 'try and error' type of work.
- In real life, things are never happening as they are presented movies (in this case, videos produced by programming bootcamps).
- In code development, there are no such a fancy and elegant things that are working from first attempt.
- Try and error, experimenting and debugging are integral parts of development process.
- Reading documentation and integrating other developer's code into our application is important skill that should be mastered!
- Do not have wrong expectations that anything will work when you try it for the first time. Be happy if it works after 5 trials.
- Do not pressure yourself with wrong expectations.
- Let's 'normalize' work you devote to experimenting, debugging, combining elements and integrating things (making them work togather).
- Work and time you spend on experimenting and debugging are in the heart of programming business.
- Debugging and experimenting accounts for more than 80% of developers hours.
- So, instead of saying to yourself "let's have some code done", tell it "let's experiment, let's debug, let's have try and error session".
- How to organize your work and be efficient in long run?
- Design system i.e. write sequence of simple steps that should be accomplished.
- Focus on one step at a time.
- Expect that things you planned to implement will not work first 5 attempts and devote enough time for experimenting and integrating things!!!
- Everyone thinks differently so it is very important to know how to ask question right way.
- Here is framework to help you ask good questions:
- What I want to achieve?
- Why I want to achieve that?
- How do I plan to achieve that (sequence of simple steps)?
- What part of algorithm does not work?
- What is reason it is not working? My opinion about root cause?
- What I tried? How I tried to solve this challenge?
- Where did I find solution (that does not work currently)?
- On what portals/forums (provide web links) I found potential solution that didn’t work?