Video Coming Soon...

Created by Zed A. Shaw Updated 2026-09-11 06:57:01
 

Part I: Initial Knowledge

The very first thing you need to learn is everything. I know that's intimidating, but as I mentioned in the introduction, you are going to only practice three skills for the entire book. Each exercise is going to enforce each of the skills as you complete other tasks. I may tell you to "make a copy of the cat command", but what you are really learning is how to be creative. I may tell you to "create a linked list data structure", but what you're really doing is applying structured code review processes to your programming practice. The secret of this book is that you are only using the projects and exercises as a vehicle to learn three important practices: Process, Creativity, and Quality.

Ideally there's nothing magical about these three concepts. Process is simply the steps you use to create something. Creativity is simply how you generate and implement ideas. Quality is simply how you make sure those implementations aren't junk. The meat is in the application. How do you apply a process to your personal development skills? How do you analyze whether you've been building quality software or not? How do you take an idea and turn it into reality? All three of these are interconnected as you need a process to help you get creative and then a process for ensuring quality, which also requires being creative since no process works all the time. It's a vicious, beautiful cycle.

The process for completing this book is simply this:

  • I will give you a goal of working on Process, Creativity, or Quality for a part of the book. Usually it will be two concepts at a time or maybe just one. For example, in Part II you are working on creativity by hacking on simple tools in a 45 minute fast session. You are also analyzing your starting process since, if you find it difficult to start, you won't be very creative.

  • The beginning of each exercise will give you a prompt or goal to think about while you work on the exercise. Each of these prompts will ask you to focus on one or more aspects of what you're working on. Exercise 4 in Part II gives you the task of simply implementing something, and then in Exercise 5 you start to list the things that blocked you and try to eliminate them or make them more efficient. Other exercises ask you to look at your physical environment and fix anything distracting. Each time you'll think about these prompts and then work on the exercise, attempting to focus on that particular task.

  • At the end of each exercise there are Study Drills that give you more challenges to work on. They may be related to the project or they might be more about the process, creativity, or quality issue you're dealing with in the exercise.

  • Some exercises are "Challenge Mode". That means you are given a description of a tool to implement, usually based on an existing Unix tool, and then told to implement it but without any code to look at. There may be small pieces of sample code you'll need to study first, but usually there is no Python in these challenges. The solutions are available online in a Git project at http://bit.ly/lmpthwsolve on Github.

  • Other exercises will be educational descriptions of something you have to implement based on my code. These exercises will explain something, such as an algorithm, and then you are to implement them as exactly as possible and find any bugs you can. Typically these exercises will focus on Quality since you'll be asked to write automated tests, track your error rates, and find solutions to additional problems in the Study Drills.

  • Finally, you'll use a Lab Journal to take notes and keep track of metrics you can use to improve how you work. I am very explicit about treating this as a journal, meaning a very private personal account of your improvement that you should not share with anyone. Especially nobody who is a manager at your company. This kind of information can be used to take advantage of you as a worker, so guard it carefully.

Your goal when going through this book is not just to whip up a few copies of some Unix tools. Your goal is to use these small Unix tool projects to focus on aspects of your ability to work on larger projects.

Back to Module Next Lesson

Register for Learn More Python the Hard Way

Register today for the course and get the all currently available videos and lessons, plus all future modules for no extra charge.