Python for Absolute Beginners Transcripts
Chapter: Problem solving techniques for writing software
Lecture: Some techniques for problem solving in programming
0:00 Before we get into our new project
0:02 that we're going to work on, let's talk
0:03 about some techniques and ideas that'll help you
0:05 get started when you're trying to solve a problem
0:08 and you're not sure what to do.
0:10 The first thing to ask is have you seen
0:12 similar problems.
0:13 Have you seen solutions to similar problems.
0:16 You're not completely new to programming.
0:18 You've already made it part way
0:19 through this course, for example.
0:20 Have we worked with data in some way
0:22 that is similar to this?
0:24 Have you been looking around on the internet
0:26 and seen other ideas and solutions
0:28 that are maybe out there, or other tutorials?
0:30 Have you worked on something like this before?
0:33 This is really, really helpful because
0:35 you can compare what that problem and solution is
0:38 to what you need to do
0:39 and see how they're the same and different.
0:40 And when they're the same
0:41 they can give you some guidance on what to do.
0:44 Visualizing the data is really helpful, as well.
0:47 It's one thing to say well, I have, I don't know
0:50 this data and some file and it's kind of hard
0:52 to conceptualize or whatever.
0:55 But if you can see it, and maybe this is
0:57 loading into Excel, this is
1:00 maybe this is seeing the data in a debugger
1:03 or something like that.
1:04 If you can see the data, you could even
1:05 just print it out and see what comes out.
1:08 If you can see the data that can help you
1:09 think about how you need to interact with it.
1:12 So this is an important role, an important step in here.
1:16 Divide and conquer: you've probably heard this one
1:18 before for problem solving
1:19 but it's really, really important.
1:21 Imagine you're writing a commerce site
1:23 you might be working on the part of the problem
1:26 where it's, like, let the user buy something.
1:28 Okay, well that sounds really complicated
1:31 so what's involved with that?
1:32 Well, you've got to charge their credit card
1:35 you got to verify some stuff
1:36 you got to get their shipping information
1:37 and then you got to send out an e-mail receipt.
1:39 You've got to actually have the stuff sent to them.
1:42 Whew, that's a lot to think about all going on there.
1:44 But break it into smaller pieces.
1:46 One of the steps there is, send them an e-mail.
1:48 Okay, well, think about how to send an e-mail.
1:51 And you can research that really clearly.
1:53 One of the steps is getting their shipping address.
1:55 Well, how might you get their street, their city
1:58 their state, and so on, from them?
2:00 Well, that's not too intimidating likely.
2:02 So, breaking it down into these steps
2:04 these high-level steps, and then trying to attack them
2:06 one at a time, and maybe even breaking those
2:08 into further, smaller steps is super, super helpful.
2:12 Run through the data structures.
2:13 We saw using the right data structure
2:15 in our rock-paper-scissors game
2:17 simplified the code dramatically.
2:20 It let us think about an even more generalized
2:22 problem, actually simpler than our small simple case.
2:26 Remember we switched out, like, the rules of the game
2:30 from if, else statements down into a simple dictionary.
2:33 And in that chapter, we talked about the different
2:35 kinds of data structures that are very, very common:
2:37 lists, sets, dictionaries
2:40 and then, even some of the other ones.
2:42 But just thinking through when you're
2:44 at a lower level of this divide and conquer stuff
2:46 how do you store the data and interact
2:48 with it in the right data structure?
2:50 That can make a huge difference.
2:52 Another one, which we haven't touched on yet
2:55 because we're just focused on getting the basics
2:57 of Python working, is the external package ecosystem
3:01 in Python.
3:03 So the place that you go and get these packages
3:05 is called PyPI, or the Python Packaging Index.
3:08 And it's at pypi.org.
3:09 Over there, there's 215,000 libraries meant
3:14 to solve certain problems.
3:16 So, if you're trying to do something
3:18 like some complex step, like, let's say, send an e-mail
3:21 there's a ton of libraries over there
3:22 built for sending e-mail.
3:24 If you're doing something with physics
3:26 instead of doing all the Python code
3:28 to actually do some complex physics calculation
3:30 there's probably a library, just say
3:33 do that calculation, and it just does it.
3:35 So if you can solve the problem
3:37 by having someone else solve it for you
3:39 and by that I mean using a library
3:41 that already solves that problem
3:42 that is a really good option.
3:44 So be sure to check that out.
3:45 Sometimes it's daunting to see so many
3:48 different libraries and know which one you want
3:50 so check out awesomepython.com.
3:52 They have sort of a ranking of
3:54 the popular ones categorized by
3:56 the different types of areas you're working.
3:59 Also, just realize this is part of the journey.
4:03 It may feel like, well I'm stuck because
4:05 I'm a beginner, I'm stuck because I'm not good
4:07 at programming, I'm stuck because, whatever.
4:10 No, everyone goes through this.
4:12 Everyone who works on creating software
4:14 has to go through these steps of the blank page
4:17 with a cursor just looking at them
4:19 and some problem to solve.
4:20 You get better, quicker at running through
4:22 these different techniques, but you got to realize
4:25 that it's part of the journey
4:26 and just take it for what it is, and enjoy it.
4:28 Some parts will be frustrating
4:30 but then when you solve them
4:31 it'll be really, really satisfying.
4:32 So part of the journey.
4:34 And finally, just start.
4:36 Sounds simple, a lot of people have problems with this.
4:39 It's easy to sit around and think, and think, and think
4:41 and plan, and compare, and think about trade-offs
4:44 and what not, when you're trying to solve these problems.
4:46 Maybe I should do it this way
4:47 maybe I should do it that way.
4:48 Oh, what about this?
4:49 It can get really overwhelming
4:51 and you can just get stuck in what's called
4:53 analysis paralysis.
4:55 That's just trying to analyze the problem
4:56 and never actually getting started.
4:58 Here's the thing about software:
5:00 you write it one way, if you don't like it that way
5:02 you change it.
5:03 You have data one way, you don't like it
5:04 you convert it to another structure or format
5:07 data structure, whatever.
5:08 As you get started, as you make progress
5:11 you realize what the detailed steps are
5:14 what mistakes you made, go back and change them.
5:16 So just start, and once you've got an idea
5:19 just run with it.
5:20 If it's not the best idea, back track a little
5:23 and then you can change it.
5:24 Nothing's set in stone.
5:25 It's just words and characters on a screen, right?
5:27 So here are a handful of techniques to help
5:31 you solve some of the problems that you might
5:33 run into to create the software that you're trying
5:35 to create as a software developer.