From 211f6ba6e8e3cb71831132ab9984fdacc28537e1 Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 16:48:03 +0100 Subject: [PATCH 1/8] Fixed readme link to 1-Beginner/Personal-Skills/01-Learn-To-Debug --- .../{01-Learn To Debug.md => 01-Learn-To-Debug.md} | 0 README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename 1-Beginner/Personal-Skills/{01-Learn To Debug.md => 01-Learn-To-Debug.md} (100%) diff --git a/1-Beginner/Personal-Skills/01-Learn To Debug.md b/1-Beginner/Personal-Skills/01-Learn-To-Debug.md similarity index 100% rename from 1-Beginner/Personal-Skills/01-Learn To Debug.md rename to 1-Beginner/Personal-Skills/01-Learn-To-Debug.md diff --git a/README.md b/README.md index 7270cf1..d002716 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Welcome to the tribe. 1. [Beginner](1-Beginner) - Personal Skills - - [Learn to Debug](1-Beginner/Personal-Skills/01-Learn To Debug.md) + - [Learn to Debug](1-Beginner/Personal-Skills/01-Learn-To-Debug.md) - [How to Debug by Splitting the Problem Space](1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md) - [How to Remove an Error](1-Beginner/Personal-Skills/03-How to Remove an Error.md) - [How to Debug Using a Log](1-Beginner/Personal-Skills/04-How to Debug Using a Log.md) From b2eacd815cca661a9dec4ef3b727ab63bfbc60ff Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 16:59:08 +0100 Subject: [PATCH 2/8] Fixed links to and from all files in /1-Beginner/Personal-Skills/ --- .../Personal-Skills/01-Learn-To-Debug.md | 2 +- ...o-Debug-by-Splitting-the-Problem-Space.md} | 2 +- ... Error.md => 03-How-to-Remove-an-Error.md} | 2 +- ... Log.md => 04-How-to-Debug-Using-a-Log.md} | 2 +- ...How-to-Understand-Performance-Problems.md} | 2 +- ... => 06-How-to-Fix-Performance-Problems.md} | 2 +- ...e Loops.md => 07-How-to-Optimize-Loops.md} | 2 +- ...e.md => 08-How-to-Deal-with-IO-Expense.md} | 2 +- ...e Memory.md => 09-How-to-Manage-Memory.md} | 2 +- ... 10-How-to-Deal-with-Intermittent-Bugs.md} | 2 +- ...ls.md => 11-How-to-Learn-Design-Skills.md} | 2 +- ...ts.md => 12-How-to-Conduct-Experiments.md} | 2 +- ...t.md => 01-Why-Estimation-is-Important.md} | 0 README.md | 22 +++++++++---------- 14 files changed, 23 insertions(+), 23 deletions(-) rename 1-Beginner/Personal-Skills/{02-How to Debug by Splitting the Problem Space.md => 02-How-to-Debug-by-Splitting-the-Problem-Space.md} (98%) rename 1-Beginner/Personal-Skills/{03-How to Remove an Error.md => 03-How-to-Remove-an-Error.md} (96%) rename 1-Beginner/Personal-Skills/{04-How to Debug Using a Log.md => 04-How-to-Debug-Using-a-Log.md} (96%) rename 1-Beginner/Personal-Skills/{05-How to Understand Performance Problems.md => 05-How-to-Understand-Performance-Problems.md} (96%) rename 1-Beginner/Personal-Skills/{06-How to Fix Performance Problems.md => 06-How-to-Fix-Performance-Problems.md} (97%) rename 1-Beginner/Personal-Skills/{07-How to Optimize Loops.md => 07-How-to-Optimize-Loops.md} (94%) rename 1-Beginner/Personal-Skills/{08-How to Deal with IO Expense.md => 08-How-to-Deal-with-IO-Expense.md} (97%) rename 1-Beginner/Personal-Skills/{09-How to Manage Memory.md => 09-How-to-Manage-Memory.md} (96%) rename 1-Beginner/Personal-Skills/{10-How to Deal with Intermittent Bugs.md => 10-How-to-Deal-with-Intermittent-Bugs.md} (98%) rename 1-Beginner/Personal-Skills/{11-How to Learn Design Skills.md => 11-How-to-Learn-Design-Skills.md} (93%) rename 1-Beginner/Personal-Skills/{12-How to Conduct Experiments.md => 12-How-to-Conduct-Experiments.md} (98%) rename 1-Beginner/Team-Skills/{01-Why Estimation is Important.md => 01-Why-Estimation-is-Important.md} (100%) diff --git a/1-Beginner/Personal-Skills/01-Learn-To-Debug.md b/1-Beginner/Personal-Skills/01-Learn-To-Debug.md index 2f679ba..e5d60a8 100644 --- a/1-Beginner/Personal-Skills/01-Learn-To-Debug.md +++ b/1-Beginner/Personal-Skills/01-Learn-To-Debug.md @@ -18,4 +18,4 @@ Debugging tools are wonderful when they are stable and available, but the printl Some beginners fear debugging when it requires modifying code. This is understandable - it is a little like exploratory surgery. But you have to learn to poke at the code and make it jump; you have to learn to experiment on it, and understand that nothing that you temporarily do to it will make it worse. If you feel this fear, seek out a mentor - we lose a lot of good programmers at the delicate onset of their learning to this fear. -Next [How to Debug by Splitting the Problem Space](02-How to Debug by Splitting the Problem Space.md) \ No newline at end of file +Next [How to Debug by Splitting the Problem Space](02-How-to-Debug-by-Splitting-the-Problem-Space.md) \ No newline at end of file diff --git a/1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md b/1-Beginner/Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md similarity index 98% rename from 1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md rename to 1-Beginner/Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md index c536c89..1e6ea43 100644 --- a/1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md +++ b/1-Beginner/Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md @@ -12,4 +12,4 @@ To a true beginner, the space of all possible errors looks like every line in th Once you have evenly subdivided the space of all that can go wrong, you must try to decide in which space the error lies. In the simple case where the mystery is: ‘Which single unknown line makes my program crash?’, you can ask yourself: ‘Is the unknown line executed before or after this line that I judge to be executed in the middle of the running program?’ Usually you will not be so lucky as to know that the error exists in a single line, or even a single block. Often the mystery will be more like: ‘Either there is a pointer in that graph that points to the wrong node, or my algorithm that adds up the variables in that graph doesn't work.’ In that case you may have to write a small program to check that the pointers in the graph are all correct in order to decide which part of the subdivided mystery can be eliminated. -Next [How to Remove an Error](03-How to Remove an Error.md) +Next [How to Remove an Error](03-How-to-Remove-an-Error.md) diff --git a/1-Beginner/Personal-Skills/03-How to Remove an Error.md b/1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md similarity index 96% rename from 1-Beginner/Personal-Skills/03-How to Remove an Error.md rename to 1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md index 8edb6b1..613b9bd 100644 --- a/1-Beginner/Personal-Skills/03-How to Remove an Error.md +++ b/1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md @@ -6,4 +6,4 @@ In fixing a bug, you want to make the smallest change that fixes the bug. You ma Sometimes, there are really several bugs that look like one. It is up to you to define the bugs and fix them one at a time. Sometimes it is unclear what the program should do or what the original author intended. In this case, you must exercise your experience and judgment and assign your own meaning to the code. Decide what it should do, and comment it or clarify it in some way and then make the code conform to your meaning. This is an intermediate or advanced skill that is sometimes harder than writing the original function in the first place, but the real world is often messy. You may have to fix a system you cannot rewrite. -Next [How to Debug Using a Log](04-How to Debug Using a Log.md) \ No newline at end of file +Next [How to Debug Using a Log](04-How-to-Debug-Using-a-Log.md) \ No newline at end of file diff --git a/1-Beginner/Personal-Skills/04-How to Debug Using a Log.md b/1-Beginner/Personal-Skills/04-How-to-Debug-Using-a-Log.md similarity index 96% rename from 1-Beginner/Personal-Skills/04-How to Debug Using a Log.md rename to 1-Beginner/Personal-Skills/04-How-to-Debug-Using-a-Log.md index 320c45a..a8813de 100644 --- a/1-Beginner/Personal-Skills/04-How to Debug Using a Log.md +++ b/1-Beginner/Personal-Skills/04-How-to-Debug-Using-a-Log.md @@ -10,4 +10,4 @@ The amount to output into the log is always a compromise between information and If you have a permanent log, printlining can now be done in terms of the log records, and some of the debugging statements will probably be permanently added to the logging system. -Next [How to Understand Performance Problems](05-How to Understand Performance Problems.md) \ No newline at end of file +Next [How to Understand Performance Problems](05-How-to-Understand-Performance-Problems.md) \ No newline at end of file diff --git a/1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md b/1-Beginner/Personal-Skills/05-How-to-Understand-Performance-Problems.md similarity index 96% rename from 1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md rename to 1-Beginner/Personal-Skills/05-How-to-Understand-Performance-Problems.md index e08f054..f9e85e2 100644 --- a/1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md +++ b/1-Beginner/Personal-Skills/05-How-to-Understand-Performance-Problems.md @@ -8,4 +8,4 @@ There are many dimensions to the performance of a computer system, and many reso Contention for shared resources that are synchronized can cause deadlock and starvation. Deadlock is the inability to proceed because of improper synchronization or resource demands. Starvation is the failure to schedule a component properly. If it can be at all anticipated, it is best to have a way of measuring this contention from the start of your project. Even if this contention does not occur, it is very helpful to be able to assert that with confidence. -Next [How to Fix Performance Problems](06-How to Fix Performance Problems.md) +Next [How to Fix Performance Problems](06-How-to-Fix-Performance-Problems.md) diff --git a/1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md b/1-Beginner/Personal-Skills/06-How-to-Fix-Performance-Problems.md similarity index 97% rename from 1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md rename to 1-Beginner/Personal-Skills/06-How-to-Fix-Performance-Problems.md index 8949e74..54e4831 100644 --- a/1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md +++ b/1-Beginner/Personal-Skills/06-How-to-Fix-Performance-Problems.md @@ -10,4 +10,4 @@ Often, the bottlenecks in performance will be an example of counting cows by cou What do you do when you start to run out of low-hanging fruit? Well, you can reach higher, or chop the tree down. You can continue making small improvements or you can seriously redesign a system or a subsystem. (This is a great opportunity to use your skills as a good programmer, not only in the new design but also in convincing your boss that this is a good idea.) However, before you argue for the redesign of a subsystem, you should ask yourself whether or not your proposal will make it five to ten time better. -Next [How to Optimize Loops](07-How to Optimize Loops.md) +Next [How to Optimize Loops](07-How-to-Optimize-Loops.md) diff --git a/1-Beginner/Personal-Skills/07-How to Optimize Loops.md b/1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md similarity index 94% rename from 1-Beginner/Personal-Skills/07-How to Optimize Loops.md rename to 1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md index 491a6b2..867ebcf 100644 --- a/1-Beginner/Personal-Skills/07-How to Optimize Loops.md +++ b/1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md @@ -12,4 +12,4 @@ Sometimes you'll encounter loops, or recursive functions, that take a long time The cost of each of these operations depends on your specific system. On some systems compilers and hardware do these things for you. Clear, efficient code is better than code that requires an understanding of a particular platform. -Next [How to Deal with I/O Expense](08-How to Deal with IO Expense.md) +Next [How to Deal with I/O Expense](08-How-to-Deal-with-IO-Expense.md) diff --git a/1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md b/1-Beginner/Personal-Skills/08-How-to-Deal-with-IO-Expense.md similarity index 97% rename from 1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md rename to 1-Beginner/Personal-Skills/08-How-to-Deal-with-IO-Expense.md index f396d5b..6eaa452 100644 --- a/1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md +++ b/1-Beginner/Personal-Skills/08-How-to-Deal-with-IO-Expense.md @@ -10,4 +10,4 @@ Representations can often be improved by a factor of two or three from their fir A third technique that is sometimes possible is to improve the locality of reference by pushing the computation closer to the data. For instance, if you are reading some data from a database and computing something simple from it, such as a summation, try to get the database server to do it for you. This is highly dependent on the kind of system you're working with, but you should explore it. -Next [How to Manage Memory](09-How to Manage Memory.md) \ No newline at end of file +Next [How to Manage Memory](09-How-to-Manage-Memory.md) \ No newline at end of file diff --git a/1-Beginner/Personal-Skills/09-How to Manage Memory.md b/1-Beginner/Personal-Skills/09-How-to-Manage-Memory.md similarity index 96% rename from 1-Beginner/Personal-Skills/09-How to Manage Memory.md rename to 1-Beginner/Personal-Skills/09-How-to-Manage-Memory.md index a20adf4..fcf4af0 100644 --- a/1-Beginner/Personal-Skills/09-How to Manage Memory.md +++ b/1-Beginner/Personal-Skills/09-How-to-Manage-Memory.md @@ -12,4 +12,4 @@ An important case occurs when you can define an upper bound on the number of obj Sometimes you have to explicitly free allocated space so it can be reallocated rather than rely on garbage collection. Then you must apply careful intelligence to each chunk of allocated memory and design a way for it to be deallocated at the appropriate time. The method may differ for each kind of object you create. You must make sure that every execution of a memory allocating operation is matched by a memory deallocating operation eventually. This is so difficult that programmers often simply implement a rudimentary form or garbage collection, such as reference counting, to do this for them. -Next [How to Deal with Intermittent Bugs](10-How to Deal with Intermittent Bugs.md) \ No newline at end of file +Next [How to Deal with Intermittent Bugs](10-How-to-Deal-with-Intermittent-Bugs.md) \ No newline at end of file diff --git a/1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md b/1-Beginner/Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md similarity index 98% rename from 1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md rename to 1-Beginner/Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md index 4108f58..5b45919 100644 --- a/1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md +++ b/1-Beginner/Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md @@ -14,4 +14,4 @@ This illustrates some risk associated with third-party software. We were using a The stripper performed well except on some long and unusual kinds of texts. On these texts, the code was quadratic or worse. This means that the processing time was proportional to the square of the length of the text. Had these texts occurred commonly, we would have found the bug right away. If they had never occurred at all, we would never have had a problem. As it happens, it took us weeks to finally understand and resolve the problem. -Next [How to Learn Design Skills](11-How to Learn Design Skills.md) +Next [How to Learn Design Skills](11-How-to-Learn-Design-Skills.md) diff --git a/1-Beginner/Personal-Skills/11-How to Learn Design Skills.md b/1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md similarity index 93% rename from 1-Beginner/Personal-Skills/11-How to Learn Design Skills.md rename to 1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md index 30c495c..b0b5ecd 100644 --- a/1-Beginner/Personal-Skills/11-How to Learn Design Skills.md +++ b/1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md @@ -6,4 +6,4 @@ Then you must do it yourself. Start with a small project. When you are finally d It is natural and helpful to develop your own style, but remember that design is an art, not a science. People who write books on the subject have a vested interest in making it seem scientific. Don't become dogmatic about particular design styles. -Next [How to Conduct Experiments](12-How to Conduct Experiments.md) +Next [How to Conduct Experiments](12-How-to-Conduct-Experiments.md) diff --git a/1-Beginner/Personal-Skills/12-How to Conduct Experiments.md b/1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md similarity index 98% rename from 1-Beginner/Personal-Skills/12-How to Conduct Experiments.md rename to 1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md index eb1d545..ef29352 100644 --- a/1-Beginner/Personal-Skills/12-How to Conduct Experiments.md +++ b/1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md @@ -20,4 +20,4 @@ First, try to be very clear about your hypothesis, or the assertion that you are You will often find yourself having to design a series of experiments, each of which is based on the knowledge gained from the last experiment. Therefore, you should design your experiments to provide the most information possible. Unfortunately, this is in tension with keeping each experiment simple - you will have to develop this judgement through experience. -Next [Team Skills - Why Estimation is Important](../Team-Skills/01-Why Estimation is Important.md) \ No newline at end of file +Next [Team Skills - Why Estimation is Important](../Team-Skills/01-Why-Estimation-is-Important.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/01-Why Estimation is Important.md b/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md similarity index 100% rename from 1-Beginner/Team-Skills/01-Why Estimation is Important.md rename to 1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md diff --git a/README.md b/README.md index d002716..5a209cb 100644 --- a/README.md +++ b/README.md @@ -21,17 +21,17 @@ Welcome to the tribe. 1. [Beginner](1-Beginner) - Personal Skills - [Learn to Debug](1-Beginner/Personal-Skills/01-Learn-To-Debug.md) - - [How to Debug by Splitting the Problem Space](1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md) - - [How to Remove an Error](1-Beginner/Personal-Skills/03-How to Remove an Error.md) - - [How to Debug Using a Log](1-Beginner/Personal-Skills/04-How to Debug Using a Log.md) - - [How to Understand Performance Problems](1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md) - - [How to Fix Performance Problems](1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md) - - [How to Optimize Loops](1-Beginner/Personal-Skills/07-How to Optimize Loops.md) - - [How to Deal with I/O Expense](1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md) - - [How to Manage Memory](1-Beginner/Personal-Skills/09-How to Manage Memory.md) - - [How to Deal with Intermittent Bugs](1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md) - - [How to Learn Design Skills](1-Beginner/Personal-Skills/11-How to Learn Design Skills.md) - - [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How to Conduct Experiments.md) + - [How to Debug by Splitting the Problem Space](1-Beginner/Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md) + - [How to Remove an Error](1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md) + - [How to Debug Using a Log](1-Beginner/Personal-Skills/04-How-to-Debug-Using-a-Log.md) + - [How to Understand Performance Problems](1-Beginner/Personal-Skills/05-How-to-Understand-Performance-Problems.md) + - [How to Fix Performance Problems](1-Beginner/Personal-Skills/06-How-to-Fix-Performance-Problems.md) + - [How to Optimize Loops](1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md) + - [How to Deal with I/O Expense](1-Beginner/Personal-Skills/08-How-to-Deal-with-IO-Expense.md) + - [How to Manage Memory](1-Beginner/Personal-Skills/09-How-to-Manage-Memory.md) + - [How to Deal with Intermittent Bugs](1-Beginner/Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md) + - [How to Learn Design Skills](1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md) + - [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md) - Team Skills - [Why Estimation is Important](1-Beginner/Team-Skills/01-Why Estimation is Important.md) - [How to Estimate Programming Time](1-Beginner/Team-Skills/02-How to Estimate Programming Time.md) From fbb95ec67e0c97687cadf1ac64c9d8ead0bafb73 Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:11:10 +0100 Subject: [PATCH 3/8] Section 1 (Beginner) complete --- 1-Beginner/README.md | 46 +++++++++---------- .../01-Why-Estimation-is-Important.md | 2 +- ...=> 02-How-to-Estimate-Programming-Time.md} | 2 +- ...n.md => 03-How-to-Find-Out-Information.md} | 2 +- ...-Utilize-People-as-Information-Sources.md} | 2 +- ...Wisely.md => 05-How-to-Document-Wisely.md} | 2 +- ...de.md => 06-How-to-Work-with-Poor-Code.md} | 2 +- ...d => 07-How-to-Use-Source-Code-Control.md} | 2 +- ...to Unit Test.md => 08-How-to-Unit-Test.md} | 2 +- ...mped.md => 09-Take-Breaks-when-Stumped.md} | 2 +- ...=> 10-How-to-Recognize-When-to-Go-Home.md} | 2 +- ...> 11-How-to-Deal-with-Difficult-People.md} | 0 ...tivated.md => 01-How-to-Stay-Motivated.md} | 0 README.md | 24 +++++----- 14 files changed, 45 insertions(+), 45 deletions(-) rename 1-Beginner/Team-Skills/{02-How to Estimate Programming Time.md => 02-How-to-Estimate-Programming-Time.md} (98%) rename 1-Beginner/Team-Skills/{03-How to Find Out Information.md => 03-How-to-Find-Out-Information.md} (96%) rename 1-Beginner/Team-Skills/{04-How to Utilize People as Information Sources.md => 04-How-to-Utilize-People-as-Information-Sources.md} (98%) rename 1-Beginner/Team-Skills/{05-How to Document Wisely.md => 05-How-to-Document-Wisely.md} (97%) rename 1-Beginner/Team-Skills/{06-How to Work with Poor Code.md => 06-How-to-Work-with-Poor-Code.md} (96%) rename 1-Beginner/Team-Skills/{07-How to Use Source Code Control.md => 07-How-to-Use-Source-Code-Control.md} (96%) rename 1-Beginner/Team-Skills/{08-How to Unit Test.md => 08-How-to-Unit-Test.md} (92%) rename 1-Beginner/Team-Skills/{09-Take Breaks when Stumped.md => 09-Take-Breaks-when-Stumped.md} (79%) rename 1-Beginner/Team-Skills/{10-How to Recognize When to Go Home.md => 10-How-to-Recognize-When-to-Go-Home.md} (97%) rename 1-Beginner/Team-Skills/{11-How to Deal with Difficult People.md => 11-How-to-Deal-with-Difficult-People.md} (100%) rename 2-Intermediate/Personal-Skills/{01-How to Stay Motivated.md => 01-How-to-Stay-Motivated.md} (100%) diff --git a/1-Beginner/README.md b/1-Beginner/README.md index 519bcd9..9ccb2b6 100644 --- a/1-Beginner/README.md +++ b/1-Beginner/README.md @@ -1,27 +1,27 @@ # 1. Beginner - Personal Skills - - [Learn to Debug](Personal-Skills/01-Learn To Debug.md) - - [How to Debug by Splitting the Problem Space](Personal-Skills/02-How to Debug by Splitting the Problem Space.md) - - [How to Remove an Error](Personal-Skills/03-How to Remove an Error.md) - - [How to Debug Using a Log](Personal-Skills/04-How to Debug Using a Log.md) - - [How to Understand Performance Problems](Personal-Skills/05-How to Understand Performance Problems.md) - - [How to Fix Performance Problems](Personal-Skills/06-How to Fix Performance Problems.md) - - [How to Optimize Loops](Personal-Skills/07-How to Optimize Loops.md) - - [How to Deal with I/O Expense](Personal-Skills/08-How to Deal with IO Expense.md) - - [How to Manage Memory](Personal-Skills/09-How to Manage Memory.md) - - [How to Deal with Intermittent Bugs](Personal-Skills/10-How to Deal with Intermittent Bugs.md) - - [How to Learn Design Skills](Personal-Skills/11-How to Learn Design Skills.md) - - [How to Conduct Experiments](Personal-Skills/12-How to Conduct Experiments.md) + - [Learn to Debug](Personal-Skills/01-Learn-To-Debug.md) + - [How to Debug by Splitting the Problem Space](Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md) + - [How to Remove an Error](Personal-Skills/03-How-to-Remove-an-Error.md) + - [How to Debug Using a Log](Personal-Skills/04-How-to-Debug-Using-a-Log.md) + - [How to Understand Performance Problems](Personal-Skills/05-How-to-Understand-Performance-Problems.md) + - [How to Fix Performance Problems](Personal-Skills/06-How-to-Fix-Performance-Problems.md) + - [How to Optimize Loops](Personal-Skills/07-How-to-Optimize-Loops.md) + - [How to Deal with I/O Expense](Personal-Skills/08-How-to-Deal-with-IO-Expense.md) + - [How to Manage Memory](Personal-Skills/09-How-to-Manage-Memory.md) + - [How to Deal with Intermittent Bugs](Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md) + - [How to Learn Design Skills](Personal-Skills/11-How-to-Learn-Design-Skills.md) + - [How to Conduct Experiments](Personal-Skills/12-How-to-Conduct-Experiments.md) - Team Skills - - [Why Estimation is Important](Team-Skills/01-Why Estimation is Important.md) - - [How to Estimate Programming Time](Team-Skills/02-How to Estimate Programming Time.md) - - [How to Find Out Information](Team-Skills/03-How to Find Out Information.md) - - [How to Utilize People as Information Sources](Team-Skills/04-How to Utilize People as Information Sources.md) - - [How to Document Wisely](Team-Skills/05-How to Document Wisely.md) - - [How to Work with Poor Code](Team-Skills/06-How to Work with Poor Code.md) - - [How to Use Source Code Control](Team-Skills/07-How to Use Source Code Control.md) - - [How to Unit Test](Team-Skills/08-How to Unit Test.md) - - [Take Breaks when Stumped](Team-Skills/09-Take Breaks when Stumped.md) - - [How to Recognize When to Go Home](Team-Skills/10-How to Recognize When to Go Home.md) - - [How to Deal with Difficult People](Team-Skills/11-How to Deal with Difficult People.md) \ No newline at end of file + - [Why Estimation is Important](Team-Skills/01-Why-Estimation-is-Important.md) + - [How to Estimate Programming Time](Team-Skills/02-How-to-Estimate-Programming-Time.md) + - [How to Find Out Information](Team-Skills/03-How-to-Find-Out-Information.md) + - [How to Utilize People as Information Sources](Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md) + - [How to Document Wisely](Team-Skills/05-How-to-Document-Wisely.md) + - [How to Work with Poor Code](Team-Skills/06-How-to-Work-with-Poor-Code.md) + - [How to Use Source Code Control](Team-Skills/07-How-to-Use-Source-Code-Control.md) + - [How to Unit Test](Team-Skills/08-How-to-Unit-Test.md) + - [Take Breaks when Stumped](Team-Skills/09-Take-Breaks-when-Stumped.md) + - [How to Recognize When to Go Home](Team-Skills/10-How-to-Recognize-When-to-Go-Home.md) + - [How to Deal with Difficult People](Team-Skills/11-How-to-Deal-with-Difficult-People.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md b/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md index 39ffba8..dbda9b0 100644 --- a/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md +++ b/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md @@ -12,4 +12,4 @@ really means: This common interpretation problem requires that you explicitly discuss what the estimate means with your boss or customer as if they were a simpleton. Restate your assumptions, no matter how obvious they seem to you. -Next [How to Estimate Programming Time](02-How to Estimate Programming Time.md) +Next [How to Estimate Programming Time](02-How-to-Estimate-Programming-Time.md) diff --git a/1-Beginner/Team-Skills/02-How to Estimate Programming Time.md b/1-Beginner/Team-Skills/02-How-to-Estimate-Programming-Time.md similarity index 98% rename from 1-Beginner/Team-Skills/02-How to Estimate Programming Time.md rename to 1-Beginner/Team-Skills/02-How-to-Estimate-Programming-Time.md index b9be737..c27ccd4 100644 --- a/1-Beginner/Team-Skills/02-How to Estimate Programming Time.md +++ b/1-Beginner/Team-Skills/02-How-to-Estimate-Programming-Time.md @@ -18,4 +18,4 @@ If there are big risks that cannot be evaluated, it is your duty to state so for If you can convince your company to use *Extreme Programming*, you will only have to estimate relatively small things, and this is both more fun and more productive. -Next [How to Find Out Information](03-How to Find Out Information.md) \ No newline at end of file +Next [How to Find Out Information](03-How-to-Find-Out-Information.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/03-How to Find Out Information.md b/1-Beginner/Team-Skills/03-How-to-Find-Out-Information.md similarity index 96% rename from 1-Beginner/Team-Skills/03-How to Find Out Information.md rename to 1-Beginner/Team-Skills/03-How-to-Find-Out-Information.md index e88b01c..1346b57 100644 --- a/1-Beginner/Team-Skills/03-How to Find Out Information.md +++ b/1-Beginner/Team-Skills/03-How-to-Find-Out-Information.md @@ -16,4 +16,4 @@ If you want to know *how likely it is* that a faster algorithm for a particular If you want to make a *personal decision that only you can make* like whether or not you should start a business, try putting into writing a list of arguments for and against the idea. If that fails, consider divination. Suppose you have studied the idea from all angles, have done all your homework, and worked out all the consequences and pros and cons in your mind, and yet still remain indecisive. You now must follow your heart and tell your brain to shut up. The multitude of available divination techniques are very useful for determining your own semi-conscious desires, as they each present a complete ambiguous and random pattern that your own subconscious will assign meaning to. -Next [How to Utilize People as Information Sources](04-How to Utilize People as Information Sources.md) \ No newline at end of file +Next [How to Utilize People as Information Sources](04-How-to-Utilize-People-as-Information-Sources.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md b/1-Beginner/Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md similarity index 98% rename from 1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md rename to 1-Beginner/Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md index f62a077..68e2a99 100644 --- a/1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md +++ b/1-Beginner/Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md @@ -12,4 +12,4 @@ A strange example of this is the summer intern. A summer intern in a highly tech You should ask people for a little bit of their wisdom and judgement whenever you honestly believe they have something to say. This flatters them and you will learn something and teach them something. A good programmer does not often need the advice of a Vice President of Sales, but if you ever do, you be sure to ask for it. I once asked to listen in on a few sales calls to better understand the job of our sales staff. This took no more than 30 minutes but I think that small effort made an impression on the sales force. -Next [How to Document Wisely](05-How to Document Wisely.md) \ No newline at end of file +Next [How to Document Wisely](05-How-to-Document-Wisely.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/05-How to Document Wisely.md b/1-Beginner/Team-Skills/05-How-to-Document-Wisely.md similarity index 97% rename from 1-Beginner/Team-Skills/05-How to Document Wisely.md rename to 1-Beginner/Team-Skills/05-How-to-Document-Wisely.md index 895062f..b317c5d 100644 --- a/1-Beginner/Team-Skills/05-How to Document Wisely.md +++ b/1-Beginner/Team-Skills/05-How-to-Document-Wisely.md @@ -17,4 +17,4 @@ This does not make it easier on the responsible programmer. How does one write s - Thinking about the reader and spending some of your precious time to make it easier on her; and - Not ever using a function name like `foo`,`bar`, or `doIt`! -Next [How to Work with Poor Code](06-How to Work with Poor Code.md) \ No newline at end of file +Next [How to Work with Poor Code](06-How-to-Work-with-Poor-Code.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/06-How to Work with Poor Code.md b/1-Beginner/Team-Skills/06-How-to-Work-with-Poor-Code.md similarity index 96% rename from 1-Beginner/Team-Skills/06-How to Work with Poor Code.md rename to 1-Beginner/Team-Skills/06-How-to-Work-with-Poor-Code.md index 431ce28..e7c0e85 100644 --- a/1-Beginner/Team-Skills/06-How to Work with Poor Code.md +++ b/1-Beginner/Team-Skills/06-How-to-Work-with-Poor-Code.md @@ -8,4 +8,4 @@ In any estimate that you make for work against code you didn't write, the qualit It is important to remember that abstraction and encapsulation, two of a programmer's best tools, are particularly applicable to lousy code. You may not be able to redesign a large block of code, but if you can add a certain amount of abstraction to it you can obtain some of the benefits of a good design without reworking the whole mess. In particular, you can try to wall off the parts that are particularly bad so that they may be redesigned independently. -Next [How to Use Source Code Control](07-How to Use Source Code Control.md) \ No newline at end of file +Next [How to Use Source Code Control](07-How-to-Use-Source-Code-Control.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/07-How to Use Source Code Control.md b/1-Beginner/Team-Skills/07-How-to-Use-Source-Code-Control.md similarity index 96% rename from 1-Beginner/Team-Skills/07-How to Use Source Code Control.md rename to 1-Beginner/Team-Skills/07-How-to-Use-Source-Code-Control.md index e9143bd..2c87754 100644 --- a/1-Beginner/Team-Skills/07-How to Use Source Code Control.md +++ b/1-Beginner/Team-Skills/07-How-to-Use-Source-Code-Control.md @@ -6,4 +6,4 @@ I was late to appreciate the benefits of source code control systems but now I w A good technique for using a source code control system is to stay within a few days of being up-to-date at all time. Code that can't be finished in a few days is checked in, but in a way that it is inactive and will not be called, and therefore not create any problems for anybody else. Committing a mistake that slows down your team-mates is a serious error; it is often taboo. -Next [How to Unit Test](08-How to Unit Test.md) \ No newline at end of file +Next [How to Unit Test](08-How-to-Unit-Test.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/08-How to Unit Test.md b/1-Beginner/Team-Skills/08-How-to-Unit-Test.md similarity index 92% rename from 1-Beginner/Team-Skills/08-How to Unit Test.md rename to 1-Beginner/Team-Skills/08-How-to-Unit-Test.md index c1dc402..22f0b87 100644 --- a/1-Beginner/Team-Skills/08-How to Unit Test.md +++ b/1-Beginner/Team-Skills/08-How-to-Unit-Test.md @@ -6,4 +6,4 @@ Use assertion checking and test drivers whenever possible. This not only catches The Extreme Programming developers are writing extensively on unit testing effectively; I can do no better than to recommend their writings. -Next [Take Breaks when Stumped](09-Take Breaks when Stumped.md) \ No newline at end of file +Next [Take Breaks when Stumped](09-Take-Breaks-when-Stumped.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/09-Take Breaks when Stumped.md b/1-Beginner/Team-Skills/09-Take-Breaks-when-Stumped.md similarity index 79% rename from 1-Beginner/Team-Skills/09-Take Breaks when Stumped.md rename to 1-Beginner/Team-Skills/09-Take-Breaks-when-Stumped.md index c578991..5c5baf9 100644 --- a/1-Beginner/Team-Skills/09-Take Breaks when Stumped.md +++ b/1-Beginner/Team-Skills/09-Take-Breaks-when-Stumped.md @@ -2,4 +2,4 @@ When stumped, take a break. I sometimes meditate for 15 minutes when stumped and the problem magically unravels when I come back to it. A night's sleep sometimes does the same thing on a larger scale. It's possible that temporarily switching to any other activity may work. -Next [How to Recognize When to Go Home](10-How to Recognize When to Go Home.md) \ No newline at end of file +Next [How to Recognize When to Go Home](10-How-to-Recognize-When-to-Go-Home.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md b/1-Beginner/Team-Skills/10-How-to-Recognize-When-to-Go-Home.md similarity index 97% rename from 1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md rename to 1-Beginner/Team-Skills/10-How-to-Recognize-When-to-Go-Home.md index a6ae9b4..7b9a6d1 100644 --- a/1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md +++ b/1-Beginner/Team-Skills/10-How-to-Recognize-When-to-Go-Home.md @@ -13,4 +13,4 @@ Most programmers are good programmers, and good programmers want to get a lot do Since I have children, I try to spend evenings with them sometimes. The rhythm that works best for me is to work a very long day, sleep in the office or near the office (I have a long commute from home to work) then go home early enough the next day to spend time with my children before they go to bed. I am not comfortable with this, but it is the best compromise I have been able to work out. Go home if you have a contagious disease. You should go home if you are thinking suicidal thoughts. You should take a break or go home if you think homicidal thoughts for more than a few seconds. You should send someone home if they show serious mental malfunctioning or signs of mental illness beyond mild depression. If you are tempted to be dishonest or deceptive in a way that you normally are not due to fatigue, you should take a break. Don't use cocaine or amphetamines to combat fatigue. Don't abuse caffeine. -Next [How to Deal with Difficult People](11-How to Deal with Difficult People.md) \ No newline at end of file +Next [How to Deal with Difficult People](11-How-to-Deal-with-Difficult-People.md) \ No newline at end of file diff --git a/1-Beginner/Team-Skills/11-How to Deal with Difficult People.md b/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md similarity index 100% rename from 1-Beginner/Team-Skills/11-How to Deal with Difficult People.md rename to 1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md diff --git a/2-Intermediate/Personal-Skills/01-How to Stay Motivated.md b/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md similarity index 100% rename from 2-Intermediate/Personal-Skills/01-How to Stay Motivated.md rename to 2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md diff --git a/README.md b/README.md index 5a209cb..cc7044c 100644 --- a/README.md +++ b/README.md @@ -33,20 +33,20 @@ Welcome to the tribe. - [How to Learn Design Skills](1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md) - [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md) - Team Skills - - [Why Estimation is Important](1-Beginner/Team-Skills/01-Why Estimation is Important.md) - - [How to Estimate Programming Time](1-Beginner/Team-Skills/02-How to Estimate Programming Time.md) - - [How to Find Out Information](1-Beginner/Team-Skills/03-How to Find Out Information.md) - - [How to Utilize People as Information Sources](1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md) - - [How to Document Wisely](1-Beginner/Team-Skills/05-How to Document Wisely.md) - - [How to Work with Poor Code](1-Beginner/Team-Skills/06-How to Work with Poor Code.md) - - [How to Use Source Code Control](1-Beginner/Team-Skills/07-How to Use Source Code Control.md) - - [How to Unit Test](1-Beginner/Team-Skills/08-How to Unit Test.md) - - [Take Breaks when Stumped](1-Beginner/Team-Skills/09-Take Breaks when Stumped.md) - - [How to Recognize When to Go Home](1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md) - - [How to Deal with Difficult People](1-Beginner/Team-Skills/11-How to Deal with Difficult People.md) + - [Why Estimation is Important](1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md) + - [How to Estimate Programming Time](1-Beginner/Team-Skills/02-How-to-Estimate-Programming-Time.md) + - [How to Find Out Information](1-Beginner/Team-Skills/03-How-to-Find-Out-Information.md) + - [How to Utilize People as Information Sources](1-Beginner/Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md) + - [How to Document Wisely](1-Beginner/Team-Skills/05-How-to-Document-Wisely.md) + - [How to Work with Poor Code](1-Beginner/Team-Skills/06-How-to-Work-with-Poor-Code.md) + - [How to Use Source Code Control](1-Beginner/Team-Skills/07-How-to-Use-Source-Code-Control.md) + - [How to Unit Test](1-Beginner/Team-Skills/08-How-to-Unit-Test.md) + - [Take Breaks when Stumped](1-Beginner/Team-Skills/09-Take-Breaks-when-Stumped.md) + - [How to Recognize When to Go Home](1-Beginner/Team-Skills/10-How-to-Recognize-When-to-Go-Home.md) + - [How to Deal with Difficult People](1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md) 2. [Intermediate](2-Intermediate) - Personal Skills - - [How to Stay Motivated](2-Intermediate/Personal-Skills/01-How to Stay Motivated.md) + - [How to Stay Motivated](2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md) - [How to be Widely Trusted](2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md) - [How to Tradeoff Time vs. Space](2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md) - [How to Stress Test](2-Intermediate/Personal-Skills/04-How to Stress Test.md) From 9feec6ac0e34ead3346c9ca2d37faed6705b6478 Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:12:37 +0100 Subject: [PATCH 4/8] Fixed Intermediate Skills link --- 1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md b/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md index d9678e5..00b8f52 100644 --- a/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md +++ b/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md @@ -12,4 +12,4 @@ Difficult people do change and improve. I've seen it with my own eyes, but it is One of the challenges that every programmer but especially leaders face is keeping the difficult person fully engaged. They are more prone to duck work and resist passively than others. -Next [Intermediate skills](../../2-Intermediate) \ No newline at end of file +Next [Intermediate skills](../../2-Intermediate/README.md) \ No newline at end of file From 85bb7b1d4dea279c034ceb4a6aca3ff40117d39c Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:21:27 +0100 Subject: [PATCH 5/8] Fixed links for section 2-Intermediate/Personal-Skills --- .../01-How-to-Stay-Motivated.md | 2 +- ...sted.md => 02-How-to-be-Widely-Trusted.md} | 2 +- ...md => 03-How-to-Tradeoff-Time-vs-Space.md} | 2 +- ...tress Test.md => 04-How-to-Stress-Test.md} | 2 +- ...How-to-Balance-Brevity-and-Abstraction.md} | 2 +- ...kills.md => 06-How-to-Learn-New-Skills.md} | 2 +- ...7-Learn to Type.md => 07-Learn-to-Type.md} | 2 +- ...md => 08-How-to-Do-Integration-Testing.md} | 2 +- ...uages.md => 09-Communication-Languages.md} | 2 +- .../{10-Heavy Tools.md => 10-Heavy-Tools.md} | 2 +- ...lyze data.md => 11-How-to-analyze-data.md} | 2 +- 2-Intermediate/README.md | 22 +++++++++---------- README.md | 20 ++++++++--------- 13 files changed, 32 insertions(+), 32 deletions(-) rename 2-Intermediate/Personal-Skills/{02-How to be Widely Trusted.md => 02-How-to-be-Widely-Trusted.md} (90%) rename 2-Intermediate/Personal-Skills/{03-How to Tradeoff Time vs Space.md => 03-How-to-Tradeoff-Time-vs-Space.md} (97%) rename 2-Intermediate/Personal-Skills/{04-How to Stress Test.md => 04-How-to-Stress-Test.md} (96%) rename 2-Intermediate/Personal-Skills/{05-How to Balance Brevity and Abstraction.md => 05-How-to-Balance-Brevity-and-Abstraction.md} (97%) rename 2-Intermediate/Personal-Skills/{06-How to Learn New Skills.md => 06-How-to-Learn-New-Skills.md} (97%) rename 2-Intermediate/Personal-Skills/{07-Learn to Type.md => 07-Learn-to-Type.md} (91%) rename 2-Intermediate/Personal-Skills/{08-How to Do Integration Testing.md => 08-How-to-Do-Integration-Testing.md} (89%) rename 2-Intermediate/Personal-Skills/{09-Communication Languages.md => 09-Communication-Languages.md} (98%) rename 2-Intermediate/Personal-Skills/{10-Heavy Tools.md => 10-Heavy-Tools.md} (91%) rename 2-Intermediate/Personal-Skills/{11-How to analyze data.md => 11-How-to-analyze-data.md} (99%) diff --git a/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md b/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md index e441581..b2df7bd 100644 --- a/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md +++ b/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md @@ -12,4 +12,4 @@ Obviously, there are entire industries organized around motivational techniques Finally, if possible, measure the impact of your work in terms of something that will be personally motivating. For example, when fixing bugs, counting the number of bugs that I have fixed is not at all motivational to me, because it is independent of the number that may still exist, and is also affects the total value I'm adding to my company's customers in only the smallest possible way. Relating each bug to a happy customer, however, *is* personally motivating to me. -Next [How to be Widely Trusted](02-How to be Widely Trusted.md) \ No newline at end of file +Next [How to be Widely Trusted](02-How-to-be-Widely-Trusted.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md b/2-Intermediate/Personal-Skills/02-How-to-be-Widely-Trusted.md similarity index 90% rename from 2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md rename to 2-Intermediate/Personal-Skills/02-How-to-be-Widely-Trusted.md index d99124d..cc0cfd5 100644 --- a/2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md +++ b/2-Intermediate/Personal-Skills/02-How-to-be-Widely-Trusted.md @@ -4,4 +4,4 @@ To be trusted you must be trustworthy. You must also be visible. If no one knows Don't pretend to know something that you don't. With people that are not teammates, you may have to make a clear distinction between 'not knowing right off the top of my head' and 'not being able to figure it out, ever.' -Next [How to Tradeoff Time vs. Space](03-How to Tradeoff Time vs Space.md) +Next [How to Tradeoff Time vs. Space](03-How-to-Tradeoff-Time-vs-Space.md) diff --git a/2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md b/2-Intermediate/Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md similarity index 97% rename from 2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md rename to 2-Intermediate/Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md index 7a21e8e..264a453 100644 --- a/2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md +++ b/2-Intermediate/Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md @@ -12,4 +12,4 @@ Improving the space/time trade-off can often change one or the other dramaticall Memory on modern computers appears cheap, because unlike processor time, you can't see it being used until you hit the wall; but then failure is catastrophic. There are also other hidden costs to using memory, such as your effect on other programs that must be resident, and the time to allocate and deallocate it. Consider this carefully before you trade away space to gain speed. -Next [How to Stress Test](04-How to Stress Test.md) \ No newline at end of file +Next [How to Stress Test](04-How-to-Stress-Test.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/04-How to Stress Test.md b/2-Intermediate/Personal-Skills/04-How-to-Stress-Test.md similarity index 96% rename from 2-Intermediate/Personal-Skills/04-How to Stress Test.md rename to 2-Intermediate/Personal-Skills/04-How-to-Stress-Test.md index 901ec92..cbf67d1 100644 --- a/2-Intermediate/Personal-Skills/04-How to Stress Test.md +++ b/2-Intermediate/Personal-Skills/04-How-to-Stress-Test.md @@ -14,4 +14,4 @@ Knowing where the wall is is essential not only to moving the wall, but also to [1] "to hit" -Next [How to Balance Brevity and Abstraction](05-How to Balance Brevity and Abstraction.md) \ No newline at end of file +Next [How to Balance Brevity and Abstraction](05-How-to-Balance-Brevity-and-Abstraction.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md b/2-Intermediate/Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md similarity index 97% rename from 2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md rename to 2-Intermediate/Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md index c590922..a718944 100644 --- a/2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md +++ b/2-Intermediate/Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md @@ -6,4 +6,4 @@ There is a certain dogma associated with useful techniques such as *information Portability poses a similar problem. Should code be portable to a different computer, compiler, software system or platform, or simply easily ported? I think a non-portable, short-and-easily-ported piece of code is better than a long portable one. It is relatively easy and certainly a good idea to confine non-portable code to designated areas, such as a class that makes database queries that are specific to a given DBMS. -Next [How to Learn New Skills](06-How to Learn New Skills.md) \ No newline at end of file +Next [How to Learn New Skills](06-How-to-Learn-New-Skills.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/06-How to Learn New Skills.md b/2-Intermediate/Personal-Skills/06-How-to-Learn-New-Skills.md similarity index 97% rename from 2-Intermediate/Personal-Skills/06-How to Learn New Skills.md rename to 2-Intermediate/Personal-Skills/06-How-to-Learn-New-Skills.md index d26dc03..f5ee007 100644 --- a/2-Intermediate/Personal-Skills/06-How to Learn New Skills.md +++ b/2-Intermediate/Personal-Skills/06-How-to-Learn-New-Skills.md @@ -10,4 +10,4 @@ Try to get your boss to let you have formal training, but understand that it oft If you lead people, understand how they learn and assist them by assigning them projects that are the right size and that exercise skills they are interested in. Don't forget that the most important skills for a programmer are not the technical ones. Give your people a chance to play and practice courage, honesty, and communication. -Next [Learn to Type](07-Learn to Type.md) \ No newline at end of file +Next [Learn to Type](07-Learn-to-Type.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/07-Learn to Type.md b/2-Intermediate/Personal-Skills/07-Learn-to-Type.md similarity index 91% rename from 2-Intermediate/Personal-Skills/07-Learn to Type.md rename to 2-Intermediate/Personal-Skills/07-Learn-to-Type.md index 0561fa1..98408fa 100644 --- a/2-Intermediate/Personal-Skills/07-Learn to Type.md +++ b/2-Intermediate/Personal-Skills/07-Learn-to-Type.md @@ -2,4 +2,4 @@ Learn to touch-type. This is an intermediate skill because writing code is so hard that the speed at which you can type is irrelevant and can't put much of a dent in the time it takes to write code, no matter how good you are. However, by the time you are an intermediate programmer you will probably spend a lot of time writing natural language to your colleagues and others. This is a fun test of your commitment; it takes dedicated time that is not much fun to learn something like that. Legend has it that when Michael Tiemann was at MCC people would stand outside his door to listen to the hum generated by his keystrokes which were so rapid as to be indistinguishable. -Next [How to Do Integration Testing](08-How to Do Integration Testing.md) \ No newline at end of file +Next [How to Do Integration Testing](08-How-to-Do-Integration-Testing.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md b/2-Intermediate/Personal-Skills/08-How-to-Do-Integration-Testing.md similarity index 89% rename from 2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md rename to 2-Intermediate/Personal-Skills/08-How-to-Do-Integration-Testing.md index 8b1aefe..9a9a6a3 100644 --- a/2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md +++ b/2-Intermediate/Personal-Skills/08-How-to-Do-Integration-Testing.md @@ -4,4 +4,4 @@ Integration testing is the testing of the integration of various components that Ideally you should organize a project so that there is not a phase at the end where integration must explicitly take place. It is far better to gradually integrate things as they are completed over the course of the project. If it is unavoidable estimate it carefully. -Next [Communication Languages](09-Communication Languages.md) \ No newline at end of file +Next [Communication Languages](09-Communication-Languages.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/09-Communication Languages.md b/2-Intermediate/Personal-Skills/09-Communication-Languages.md similarity index 98% rename from 2-Intermediate/Personal-Skills/09-Communication Languages.md rename to 2-Intermediate/Personal-Skills/09-Communication-Languages.md index 58302a6..e1c09f5 100644 --- a/2-Intermediate/Personal-Skills/09-Communication Languages.md +++ b/2-Intermediate/Personal-Skills/09-Communication-Languages.md @@ -8,4 +8,4 @@ XML is a standard for defining new standards. It is not a solution to data inter SQL is a very powerful and rich data query and manipulation language that is not quite a programming language. It has many variations, typically quite product-dependent, which are less important than the standardized core. SQL is the *lingua franca* of relational databases. You may or may not work in any field that can benefit from an understanding of relational databases, but you should have a basic understanding of them and they syntax and meaning of SQL. -Next [Heavy Tools](10-Heavy Tools.md) \ No newline at end of file +Next [Heavy Tools](10-Heavy-Tools.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/10-Heavy Tools.md b/2-Intermediate/Personal-Skills/10-Heavy-Tools.md similarity index 91% rename from 2-Intermediate/Personal-Skills/10-Heavy Tools.md rename to 2-Intermediate/Personal-Skills/10-Heavy-Tools.md index b79e127..dd85888 100644 --- a/2-Intermediate/Personal-Skills/10-Heavy Tools.md +++ b/2-Intermediate/Personal-Skills/10-Heavy-Tools.md @@ -11,4 +11,4 @@ To my mind right some of the best heavy tools are: - XML parsers, and - Spreadsheets. -Next [How to analyze data](11-How to analyze data.md) \ No newline at end of file +Next [How to analyze data](11-How-to-analyze-data.md) \ No newline at end of file diff --git a/2-Intermediate/Personal-Skills/11-How to analyze data.md b/2-Intermediate/Personal-Skills/11-How-to-analyze-data.md similarity index 99% rename from 2-Intermediate/Personal-Skills/11-How to analyze data.md rename to 2-Intermediate/Personal-Skills/11-How-to-analyze-data.md index b6ede20..6fa1730 100644 --- a/2-Intermediate/Personal-Skills/11-How to analyze data.md +++ b/2-Intermediate/Personal-Skills/11-How-to-analyze-data.md @@ -8,4 +8,4 @@ No matter at which stage you start looking at it, data is the main concern of a Therefore, since algorithms don't spin their wheels in a vacuum, you need to analyze both the data that somebody else has identified for you and the data that is necessary to write down your code. A trivial example will make the matter clearer. You are implementing a search routine for a library. According to your specifications, the user can select books by a combination of genre, author, title, publisher, printing year, and number of pages. The ultimate goal of your routine is to produce a legal SQL statement to search the back-end database. Based on these requirements, you have several choices: check each control in turn, using a "switch" statement, or several "if" ones; make an array of data controls, checking each element to see if it is set; create (or use) an abstract control object from which inherit all your specific controls, and connect them to an event-driven engine. If your requirements include also tuning up the query performance, by making sure that the items are checked in a specific order, you may consider using a tree of components to build your SQL statement. As you can see, the choice of the algorithm depends on the data you decide to use, or to create. Such decisions can make all the difference between an efficient algorithm and a disastrous one. However, efficiency is not the only concern. You may use a dozen named variables in your code and make it as efficient as it can ever be. But such a piece of code might not be easily maintainable. Perhaps choosing an appropriate container for your variables could keep the same speed and in addition allow your colleagues to understand the code better when they look at it next year. Furthermore, choosing a well defined data structure may allow them to extend the functionality of your code without rewriting it. In the long run, your choices of data determines how long your code will survive after you are finished with it. Let me give you another example, just some more food for thought. Let's suppose that your task is to find all the words in a dictionary with more than three anagrams, where an anagram must be another word in the same dictionary. If you think of it as a computational task, you will end up with an endless effort, trying to work out all the combinations of each word and then comparing it to the other words in the list. However, if you analyze the data at hand, you'll realize that each word may be represented by a record containing the word itself and a sorted array of its letters as ID. Armed with such knowledge, finding anagrams means just sorting the list on the additional field and picking up the ones that share the same ID. The brute force algorithm may take several days to run, while the smart one is just a matter of a few seconds. Remember this example the next time you are facing an intractable problem. -Next [Team Skills - How to Manage Development Time](../Team-Skills/01-How to Manage Development Time.md) \ No newline at end of file +Next [Team Skills - How to Manage Development Time](../Team-Skills/01-How-to-Manage-Development-Time.md) \ No newline at end of file diff --git a/2-Intermediate/README.md b/2-Intermediate/README.md index 5271d19..bde115e 100644 --- a/2-Intermediate/README.md +++ b/2-Intermediate/README.md @@ -1,17 +1,17 @@ # 2. Intermediate - Personal Skills - - [How to Stay Motivated](Personal-Skills/01-How to Stay Motivated.md) - - [How to be Widely Trusted](Personal-Skills/02-How to be Widely Trusted.md) - - [How to Tradeoff Time vs. Space](Personal-Skills/03-How to Tradeoff Time vs Space.md) - - [How to Stress Test](Personal-Skills/04-How to Stress Test.md) - - [How to Balance Brevity and Abstraction](Personal-Skills/05-How to Balance Brevity and Abstraction.md) - - [How to Learn New Skills](Personal-Skills/06-How to Learn New Skills.md) - - [Learn to Type](Personal-Skills/07-Learn to Type.md) - - [How to Do Integration Testing](Personal-Skills/08-How to Do Integration Testing.md) - - [Communication Languages](Personal-Skills/09-Communication Languages.md) - - [Heavy Tools](Personal-Skills/10-Heavy Tools.md) - - [How to analyze data](Personal-Skills/11-How to analyze data.md) + - [How to Stay Motivated](Personal-Skills/01-How-to-Stay-Motivated.md) + - [How to be Widely Trusted](Personal-Skills/02-How-to-be-Widely-Trusted.md) + - [How to Tradeoff Time vs. Space](Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md) + - [How to Stress Test](Personal-Skills/04-How-to-Stress-Test.md) + - [How to Balance Brevity and Abstraction](Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md) + - [How to Learn New Skills](Personal-Skills/06-How-to-Learn-New-Skills.md) + - [Learn to Type](Personal-Skills/07-Learn-to-Type.md) + - [How to Do Integration Testing](Personal-Skills/08-How-to-Do-Integration-Testing.md) + - [Communication Languages](Personal-Skills/09-Communication-Languages.md) + - [Heavy Tools](Personal-Skills/10-Heavy-Tools.md) + - [How to analyze data](Personal-Skills/11-How-to-analyze-data.md) - Team Skills - [How to Manage Development Time](Team-Skills/01-How to Manage Development Time.md) - [How to Manage Third-Party Software Risks](Team-Skills/02-How to Manage Third-Party Software Risks.md) diff --git a/README.md b/README.md index cc7044c..ef8c6a3 100644 --- a/README.md +++ b/README.md @@ -47,16 +47,16 @@ Welcome to the tribe. 2. [Intermediate](2-Intermediate) - Personal Skills - [How to Stay Motivated](2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md) - - [How to be Widely Trusted](2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md) - - [How to Tradeoff Time vs. Space](2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md) - - [How to Stress Test](2-Intermediate/Personal-Skills/04-How to Stress Test.md) - - [How to Balance Brevity and Abstraction](2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md) - - [How to Learn New Skills](2-Intermediate/Personal-Skills/06-How to Learn New Skills.md) - - [Learn to Type](2-Intermediate/Personal-Skills/07-Learn to Type.md) - - [How to Do Integration Testing](2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md) - - [Communication Languages](2-Intermediate/Personal-Skills/09-Communication Languages.md) - - [Heavy Tools](2-Intermediate/Personal-Skills/10-Heavy Tools.md) - - [How to analyze data](2-Intermediate/Personal-Skills/11-How to analyze data.md) + - [How to be Widely Trusted](2-Intermediate/Personal-Skills/02-How-to-be-Widely-Trusted.md) + - [How to Tradeoff Time vs. Space](2-Intermediate/Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md) + - [How to Stress Test](2-Intermediate/Personal-Skills/04-How-to-Stress-Test.md) + - [How to Balance Brevity and Abstraction](2-Intermediate/Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md) + - [How to Learn New Skills](2-Intermediate/Personal-Skills/06-How-to-Learn-New-Skills.md) + - [Learn to Type](2-Intermediate/Personal-Skills/07-Learn-to-Type.md) + - [How to Do Integration Testing](2-Intermediate/Personal-Skills/08-How-to-Do-Integration-Testing.md) + - [Communication Languages](2-Intermediate/Personal-Skills/09-Communication-Languages.md) + - [Heavy Tools](2-Intermediate/Personal-Skills/10-Heavy-Tools.md) + - [How to analyze data](2-Intermediate/Personal-Skills/11-How-to-analyze-data.md) - Team Skills - [How to Manage Development Time](2-Intermediate/Team-Skills/01-How to Manage Development Time.md) - [How to Manage Third-Party Software Risks](2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md) From 36a10a0dad321196295924fe241217748e793aeb Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:24:20 +0100 Subject: [PATCH 6/8] Fixed links for section 2-Intermediate/Team-Skills --- 2-Intermediate/README.md | 10 +++++----- ...nt Time.md => 01-How-to-Manage-Development-Time.md} | 2 +- ... => 02-How-to-Manage-Third-Party-Software-Risks.md} | 2 +- ... Consultants.md => 03-How-to-Manage-Consultants.md} | 2 +- ...nt.md => 04-How-to-Communicate-the-Right-Amount.md} | 2 +- ...5-How-to-Disagree-Honestly-and-Get-Away-with-It.md} | 2 +- README.md | 10 +++++----- 7 files changed, 15 insertions(+), 15 deletions(-) rename 2-Intermediate/Team-Skills/{01-How to Manage Development Time.md => 01-How-to-Manage-Development-Time.md} (95%) rename 2-Intermediate/Team-Skills/{02-How to Manage Third-Party Software Risks.md => 02-How-to-Manage-Third-Party-Software-Risks.md} (96%) rename 2-Intermediate/Team-Skills/{03-How to Manage Consultants.md => 03-How-to-Manage-Consultants.md} (93%) rename 2-Intermediate/Team-Skills/{04-How to Communicate the Right Amount.md => 04-How-to-Communicate-the-Right-Amount.md} (85%) rename 2-Intermediate/Team-Skills/{05-How to Disagree Honestly and Get Away with It.md => 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md} (96%) diff --git a/2-Intermediate/README.md b/2-Intermediate/README.md index bde115e..84d2be1 100644 --- a/2-Intermediate/README.md +++ b/2-Intermediate/README.md @@ -13,11 +13,11 @@ - [Heavy Tools](Personal-Skills/10-Heavy-Tools.md) - [How to analyze data](Personal-Skills/11-How-to-analyze-data.md) - Team Skills - - [How to Manage Development Time](Team-Skills/01-How to Manage Development Time.md) - - [How to Manage Third-Party Software Risks](Team-Skills/02-How to Manage Third-Party Software Risks.md) - - [How to Manage Consultants](Team-Skills/03-How to Manage Consultants.md) - - [How to Communicate the Right Amount](Team-Skills/04-How to Communicate the Right Amount.md) - - [How to Disagree Honestly and Get Away with It](Team-Skills/05-How to Disagree Honestly and Get Away with It.md) + - [How to Manage Development Time](Team-Skills/01-How-to-Manage-Development-Time.md) + - [How to Manage Third-Party Software Risks](Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md) + - [How to Manage Consultants](Team-Skills/03-How-to-Manage-Consultants.md) + - [How to Communicate the Right Amount](Team-Skills/04-How-to-Communicate-the-Right-Amount.md) + - [How to Disagree Honestly and Get Away with It](Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md) - Judgment - [How to Tradeoff Quality Against Development Time](Judgment/01-How to Tradeoff Quality Against Development Time.md) - [How to Manage Software System Dependence](Judgment/02-How to Manage Software System Dependence.md) diff --git a/2-Intermediate/Team-Skills/01-How to Manage Development Time.md b/2-Intermediate/Team-Skills/01-How-to-Manage-Development-Time.md similarity index 95% rename from 2-Intermediate/Team-Skills/01-How to Manage Development Time.md rename to 2-Intermediate/Team-Skills/01-How-to-Manage-Development-Time.md index f52fcaa..1fb4ce0 100644 --- a/2-Intermediate/Team-Skills/01-How to Manage Development Time.md +++ b/2-Intermediate/Team-Skills/01-How-to-Manage-Development-Time.md @@ -8,4 +8,4 @@ If you miss a milestone, you should take immediate action such as informing your Make sure you plan includes time for: internal team meetings, demos, documentation, scheduled periodic activities, integration testing, dealing with outsiders, sickness, vacations, maintenance of existing products, and maintenance of the development environment. The project plan can serve as a way to give outsiders or your boss a view into what you or your team is doing. For this reason it should be short and up-to-date. -Next [How to Manage Third-Party Software Risks](02-How to Manage Third-Party Software Risks.md) \ No newline at end of file +Next [How to Manage Third-Party Software Risks](02-How-to-Manage-Third-Party-Software-Risks.md) \ No newline at end of file diff --git a/2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md b/2-Intermediate/Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md similarity index 96% rename from 2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md rename to 2-Intermediate/Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md index eb3f44d..a4cca03 100644 --- a/2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md +++ b/2-Intermediate/Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md @@ -8,4 +8,4 @@ If third-party software is not vapour, it is still risky, but at least it is a r Understanding the suitability of existing third party software for a particular purpose is very tribal knowledge. It is very subjective and generally resides in experts. You can save a lot of time if you can find those experts. Often times a project will depend on a third-party software system so completely that if the integration fails the project will fail. Express risks like that clearly in writing in the schedule. Try to have a contingency plan, such as another system that can be used or the ability to write the functionality yourself if the risk can't be removed early. Never let a schedule depend on vapour. -Next [How to Manage Consultants](03-How to Manage Consultants.md) \ No newline at end of file +Next [How to Manage Consultants](03-How-to-Manage-Consultants.md) \ No newline at end of file diff --git a/2-Intermediate/Team-Skills/03-How to Manage Consultants.md b/2-Intermediate/Team-Skills/03-How-to-Manage-Consultants.md similarity index 93% rename from 2-Intermediate/Team-Skills/03-How to Manage Consultants.md rename to 2-Intermediate/Team-Skills/03-How-to-Manage-Consultants.md index 6844c3b..5a639b6 100644 --- a/2-Intermediate/Team-Skills/03-How to Manage Consultants.md +++ b/2-Intermediate/Team-Skills/03-How-to-Manage-Consultants.md @@ -6,4 +6,4 @@ However, they usually cannot become part of the team in the same sense that regu If consultants are going to write code, you must review it carefully as you go along. You cannot get to the end of the a project with the risk of a large block of code that has not been reviewed. This is true of all team members, really, but you will usually have more knowledge of the team members closer to you. -Next [How to Communicate the Right Amount](04-How to Communicate the Right Amount.md) \ No newline at end of file +Next [How to Communicate the Right Amount](04-How-to-Communicate-the-Right-Amount.md) \ No newline at end of file diff --git a/2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md b/2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md similarity index 85% rename from 2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md rename to 2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md index 55bd84e..6c4f6b2 100644 --- a/2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md +++ b/2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md @@ -4,4 +4,4 @@ Carefully consider the cost of a meeting; it costs *its duration multiplied by t Everything possible should be done to encourage informal communication. More useful work is done during lunches with colleagues than during any other time. It is a shame that more companies do not recognize nor support this fact. -Next [How to Disagree Honestly and Get Away with It](05-How to Disagree Honestly and Get Away with It.md) +Next [How to Disagree Honestly and Get Away with It](05-How-to-Disagree-Honestly-and-Get-Away-with-It.md) diff --git a/2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md b/2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md similarity index 96% rename from 2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md rename to 2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md index 89f4981..54ed26b 100644 --- a/2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md +++ b/2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md @@ -8,4 +8,4 @@ Usually, this is not a problem. In some stressful circumstances and with some pe Whether the decision is reversed or not, you must remember that you will never be able to say ‘I told you so!’ since the alternate decision was fully explored. -Next [Judgment - How to Tradeoff Quality Against Development Time](../Judgment/01-How to Tradeoff Quality Against Development Time.md) \ No newline at end of file +Next [Judgment - How to Tradeoff Quality Against Development Time](../Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md) \ No newline at end of file diff --git a/README.md b/README.md index ef8c6a3..9f71f73 100644 --- a/README.md +++ b/README.md @@ -58,11 +58,11 @@ Welcome to the tribe. - [Heavy Tools](2-Intermediate/Personal-Skills/10-Heavy-Tools.md) - [How to analyze data](2-Intermediate/Personal-Skills/11-How-to-analyze-data.md) - Team Skills - - [How to Manage Development Time](2-Intermediate/Team-Skills/01-How to Manage Development Time.md) - - [How to Manage Third-Party Software Risks](2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md) - - [How to Manage Consultants](2-Intermediate/Team-Skills/03-How to Manage Consultants.md) - - [How to Communicate the Right Amount](2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md) - - [How to Disagree Honestly and Get Away with It](2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md) + - [How to Manage Development Time](2-Intermediate/Team-Skills/01-How-to-Manage-Development-Time.md) + - [How to Manage Third-Party Software Risks](2-Intermediate/Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md) + - [How to Manage Consultants](2-Intermediate/Team-Skills/03-How-to-Manage-Consultants.md) + - [How to Communicate the Right Amount](2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md) + - [How to Disagree Honestly and Get Away with It](2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md) - Judgment - [How to Tradeoff Quality Against Development Time](2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md) - [How to Manage Software System Dependence](2-Intermediate/Judgment/02-How to Manage Software System Dependence.md) From 8a8f0762b3980e5aaa629d70503e10a1c40ad2ed Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:28:48 +0100 Subject: [PATCH 7/8] Fixed links for section 2-Intermediate/Judgement --- ...Tradeoff-Quality-Against-Development-Time.md} | 2 +- ...-How-to-Manage-Software-System-Dependence.md} | 2 +- ...How-to-Decide-if-Software-is-Too-Immature.md} | 2 +- ...=> 04-How-to-Make-a-Buy-vs-Build-Decision.md} | 2 +- ...nally.md => 05-How-to-Grow-Professionally.md} | 2 +- ...ees.md => 06-How-to-Evaluate-Interviewees.md} | 2 +- ...Know-When-to-Apply-Fancy-Computer-Science.md} | 2 +- .../Judgment/08-How to Talk to Non-Engineers.md | 2 +- 2-Intermediate/README.md | 16 ++++++++-------- README.md | 16 ++++++++-------- 10 files changed, 24 insertions(+), 24 deletions(-) rename 2-Intermediate/Judgment/{01-How to Tradeoff Quality Against Development Time.md => 01-How-to-Tradeoff-Quality-Against-Development-Time.md} (95%) rename 2-Intermediate/Judgment/{02-How to Manage Software System Dependence.md => 02-How-to-Manage-Software-System-Dependence.md} (92%) rename 2-Intermediate/Judgment/{03-How to Decide if Software is Too Immature.md => 03-How-to-Decide-if-Software-is-Too-Immature.md} (93%) rename 2-Intermediate/Judgment/{04-How to Make a Buy vs Build Decision.md => 04-How-to-Make-a-Buy-vs-Build-Decision.md} (96%) rename 2-Intermediate/Judgment/{05-How to Grow Professionally.md => 05-How-to-Grow-Professionally.md} (93%) rename 2-Intermediate/Judgment/{06-How to Evaluate Interviewees.md => 06-How-to-Evaluate-Interviewees.md} (95%) rename 2-Intermediate/Judgment/{07-How to Know When to Apply Fancy Computer Science.md => 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md} (96%) diff --git a/2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md b/2-Intermediate/Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md similarity index 95% rename from 2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md rename to 2-Intermediate/Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md index 06eefd2..4db7158 100644 --- a/2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md +++ b/2-Intermediate/Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md @@ -10,4 +10,4 @@ NinjaProgrammer at Slashdot sent in this gem: > Remember that a good design will be resillient against poor code implementations. If good interfaces and abstractions exist throughout the code, then the eventual rewrites will be far more painless. If it is hard to write clear code that is hard to fix, consider what is wrong with the core design that is causing this. -Next [How to Manage Software Dependence](02-How to Manage Software System Dependence.md) \ No newline at end of file +Next [How to Manage Software Dependence](02-How-to-Manage-Software-System-Dependence.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/02-How to Manage Software System Dependence.md b/2-Intermediate/Judgment/02-How-to-Manage-Software-System-Dependence.md similarity index 92% rename from 2-Intermediate/Judgment/02-How to Manage Software System Dependence.md rename to 2-Intermediate/Judgment/02-How-to-Manage-Software-System-Dependence.md index 0f4c9ba..e5e286d 100644 --- a/2-Intermediate/Judgment/02-How to Manage Software System Dependence.md +++ b/2-Intermediate/Judgment/02-How-to-Manage-Software-System-Dependence.md @@ -10,4 +10,4 @@ It is always best to encapsulate the component in some way so that it is isolate Having the source code for a component decreases the risk by a factor of four. With source code, you can evaluate it easier, debug it easier, find workarounds easier, and make fixes easier. If you make fixes, you should give them to the owner of the component and get the fixes incorporated into an official release; otherwise you will uncomfortably have to maintain an unofficial version. -Next [How to Decide if Software is Too Immature](03-How to Decide if Software is Too Immature.md) +Next [How to Decide if Software is Too Immature](03-How-to-Decide-if-Software-is-Too-Immature.md) diff --git a/2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md b/2-Intermediate/Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md similarity index 93% rename from 2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md rename to 2-Intermediate/Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md index 3f70316..d27f10e 100644 --- a/2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md +++ b/2-Intermediate/Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md @@ -15,4 +15,4 @@ Using software other people wrote is one of the most effective ways to quickly b A little consideration of these criteria demonstrates the great value of well-established free software and open-source software in reducing risk to the entrepreneur. -Next [How to Make a Buy vs. Build Decision](04-How to Make a Buy vs Build Decision.md) \ No newline at end of file +Next [How to Make a Buy vs. Build Decision](04-How-to-Make-a-Buy-vs-Build-Decision.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md b/2-Intermediate/Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md similarity index 96% rename from 2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md rename to 2-Intermediate/Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md index 74362ad..267be48 100644 --- a/2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md +++ b/2-Intermediate/Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md @@ -14,4 +14,4 @@ You should think twice before building something that is big enough to serve as After considering these questions, you should perhaps prepare two draft project plans, one for building and one for buying. This will force you to consider the integration costs. You should also consider the long term maintenance costs of both solutions. To estimate the integration costs, you will have to do a thorough evaluation of the software before you buy it. If you can't evaluate it, you will assume an unreasonable risk in buying it and you should decide against buying that particular product. If there are several buy decisions under consideration, some energy will have to be spent evaluating each. -Next [How to Grow Professionally](05-How to Grow Professionally.md) \ No newline at end of file +Next [How to Grow Professionally](05-How-to-Grow-Professionally.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/05-How to Grow Professionally.md b/2-Intermediate/Judgment/05-How-to-Grow-Professionally.md similarity index 93% rename from 2-Intermediate/Judgment/05-How to Grow Professionally.md rename to 2-Intermediate/Judgment/05-How-to-Grow-Professionally.md index 25ce941..6f0fc3b 100644 --- a/2-Intermediate/Judgment/05-How to Grow Professionally.md +++ b/2-Intermediate/Judgment/05-How-to-Grow-Professionally.md @@ -8,4 +8,4 @@ Evaluate yourself. If you want to become a better programmer, ask someone you ad Plan ways to learn new skills, both the trivial technical kind, like learning a new software system, and the hard social kind, like writing well, by integrating them into your work. -Next [How to Evaluate Interviewees](06-How to Evaluate Interviewees.md) \ No newline at end of file +Next [How to Evaluate Interviewees](06-How-to-Evaluate-Interviewees.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/06-How to Evaluate Interviewees.md b/2-Intermediate/Judgment/06-How-to-Evaluate-Interviewees.md similarity index 95% rename from 2-Intermediate/Judgment/06-How to Evaluate Interviewees.md rename to 2-Intermediate/Judgment/06-How-to-Evaluate-Interviewees.md index 3503adb..9a218a7 100644 --- a/2-Intermediate/Judgment/06-How to Evaluate Interviewees.md +++ b/2-Intermediate/Judgment/06-How-to-Evaluate-Interviewees.md @@ -12,4 +12,4 @@ A reader has had good luck using a ‘take-home’ test for interviewees. This h Finally, interviewing is also a process of selling. You should be selling your company or project to the candidate. However, you are talking to a programmer, so don't try to colour the truth. Start off with the bad stuff, then finish strong with the good stuff. -Next [How to Know When to Apply Fancy Computer Science](07-How to Know When to Apply Fancy Computer Science.md) \ No newline at end of file +Next [How to Know When to Apply Fancy Computer Science](07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md b/2-Intermediate/Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md similarity index 96% rename from 2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md rename to 2-Intermediate/Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md index 0201009..4d69300 100644 --- a/2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md +++ b/2-Intermediate/Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md @@ -12,4 +12,4 @@ The three most important considerations for the potential computer science techn If a well-isolated algorithm that uses a slightly fancy algorithm can decrease hardware cost or increase performance by a factor of two across an entire system, then it would be criminal not to consider it. One of the keys to arguing for such an approach is to show that the risk is really quite low, since the proposed technology has probably been well studied, the only issue is the risk of integration. Here a programmer's experience and judgement can truly synergize with the fancy technology to make integration easy. -Next [How to Talk to Non-Engineers](08-How to Talk to Non-Engineers.md) \ No newline at end of file +Next [How to Talk to Non-Engineers](08-How-to-Talk-to-Non-Engineers.md) \ No newline at end of file diff --git a/2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md b/2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md index 809d459..fc9948e 100644 --- a/2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md +++ b/2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md @@ -16,4 +16,4 @@ I love working with non-engineers. It provides great opportunities to learn and Often non-engineers propose solutions that they think will make it easier on us out of kindness and a desire to do the right thing, when in fact a much better overall solution exists which can only be seen by synergizing the outsiders view with your technical judgement. I personally like Extreme Programming because it addresses this inefficiency; by marrying the estimation quickly to the idea, it makes it easier to find the idea that is the best combination of cost and benefit. -Next [Advanced skills](../../3-Advanced) \ No newline at end of file +Next [Advanced skills](../../3-Advanced/README.md) \ No newline at end of file diff --git a/2-Intermediate/README.md b/2-Intermediate/README.md index 84d2be1..3c16a32 100644 --- a/2-Intermediate/README.md +++ b/2-Intermediate/README.md @@ -19,11 +19,11 @@ - [How to Communicate the Right Amount](Team-Skills/04-How-to-Communicate-the-Right-Amount.md) - [How to Disagree Honestly and Get Away with It](Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md) - Judgment - - [How to Tradeoff Quality Against Development Time](Judgment/01-How to Tradeoff Quality Against Development Time.md) - - [How to Manage Software System Dependence](Judgment/02-How to Manage Software System Dependence.md) - - [How to Decide if Software is Too Immature](Judgment/03-How to Decide if Software is Too Immature.md) - - [How to Make a Buy vs. Build Decision](Judgment/04-How to Make a Buy vs Build Decision.md) - - [How to Grow Professionally](Judgment/05-How to Grow Professionally.md) - - [How to Evaluate Interviewees](Judgment/06-How to Evaluate Interviewees.md) - - [How to Know When to Apply Fancy Computer Science](Judgment/07-How to Know When to Apply Fancy Computer Science.md) - - [How to Talk to Non-Engineers](Judgment/08-How to Talk to Non-Engineers.md) \ No newline at end of file + - [How to Tradeoff Quality Against Development Time](Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md) + - [How to Manage Software System Dependence](Judgment/02-How-to-Manage-Software-System-Dependence.md) + - [How to Decide if Software is Too Immature](Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md) + - [How to Make a Buy vs. Build Decision](Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md) + - [How to Grow Professionally](Judgment/05-How-to-Grow-Professionally.md) + - [How to Evaluate Interviewees](Judgment/06-How-to-Evaluate-Interviewees.md) + - [How to Know When to Apply Fancy Computer Science](Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md) + - [How to Talk to Non-Engineers](Judgment/08-How-to-Talk-to-Non-Engineers.md) \ No newline at end of file diff --git a/README.md b/README.md index 9f71f73..f792c8d 100644 --- a/README.md +++ b/README.md @@ -64,14 +64,14 @@ Welcome to the tribe. - [How to Communicate the Right Amount](2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md) - [How to Disagree Honestly and Get Away with It](2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md) - Judgment - - [How to Tradeoff Quality Against Development Time](2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md) - - [How to Manage Software System Dependence](2-Intermediate/Judgment/02-How to Manage Software System Dependence.md) - - [How to Decide if Software is Too Immature](2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md) - - [How to Make a Buy vs. Build Decision](2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md) - - [How to Grow Professionally](2-Intermediate/Judgment/05-How to Grow Professionally.md) - - [How to Evaluate Interviewees](2-Intermediate/Judgment/06-How to Evaluate Interviewees.md) - - [How to Know When to Apply Fancy Computer Science](2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md) - - [How to Talk to Non-Engineers](2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md) + - [How to Tradeoff Quality Against Development Time](2-Intermediate/Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md) + - [How to Manage Software System Dependence](2-Intermediate/Judgment/02-How-to-Manage-Software-System-Dependence.md) + - [How to Decide if Software is Too Immature](2-Intermediate/Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md) + - [How to Make a Buy vs. Build Decision](2-Intermediate/Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md) + - [How to Grow Professionally](2-Intermediate/Judgment/05-How-to-Grow-Professionally.md) + - [How to Evaluate Interviewees](2-Intermediate/Judgment/06-How-to-Evaluate-Interviewees.md) + - [How to Know When to Apply Fancy Computer Science](2-Intermediate/Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md) + - [How to Talk to Non-Engineers](2-Intermediate/Judgment/08-How-to-Talk-to-Non-Engineers.md) 3. [Advanced](3-Advanced) - Technological Judgment - [How to Tell the Hard From the Impossible](3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md) From 38ce5f5a2c8bf674024df19c79d2bf2e21d751e5 Mon Sep 17 00:00:00 2001 From: GaProgMan Date: Thu, 15 Jun 2017 17:40:37 +0100 Subject: [PATCH 8/8] Fixed links for all pages in 3-Advanced --- ...d => 01-How-to-Fight-Schedule-Pressure.md} | 2 +- ...er.md => 02-How-to-Understand-the-User.md} | 2 +- ...motion.md => 03-How-to-Get-a-Promotion.md} | 2 +- 3-Advanced/README.md | 34 +++++++++---------- ... Talent.md => 01-How-to-Develop-Talent.md} | 2 +- ...md => 02-How-to-Choose-What-to-Work-On.md} | 2 +- ...ow-to-Get-the-Most-From-Your-Teammates.md} | 2 +- ... Up.md => 04-How-to-Divide-Problems-Up.md} | 2 +- ...ks.md => 05-How-to-Handle-Boring-Tasks.md} | 2 +- ...06-How-to-Gather-Support-for-a-Project.md} | 2 +- ...a System.md => 07-How-to-Grow-a-System.md} | 2 +- ... Well.md => 08-How-to-Communicate-Well.md} | 2 +- ...-People-Things-They-Don't-Want-to-Hear.md} | 2 +- ...> 10-How-to-Deal-with-Managerial-Myths.md} | 2 +- ...-How-to-Deal-with-Organizational-Chaos.md} | 0 ...w-to-Tell-the-Hard-From-the-Impossible.md} | 2 +- ...> 02-How-to-Utilize-Embedded-Languages.md} | 2 +- ... Languages.md => 03-Choosing-Languages.md} | 0 README.md | 34 +++++++++---------- 19 files changed, 49 insertions(+), 49 deletions(-) rename 3-Advanced/Compromising-Wisely/{01-How to Fight Schedule Pressure.md => 01-How-to-Fight-Schedule-Pressure.md} (97%) rename 3-Advanced/Compromising-Wisely/{02-How to Understand the User.md => 02-How-to-Understand-the-User.md} (96%) rename 3-Advanced/Compromising-Wisely/{03-How to Get a Promotion.md => 03-How-to-Get-a-Promotion.md} (97%) rename 3-Advanced/Serving-Your-Team/{01-How to Develop Talent.md => 01-How-to-Develop-Talent.md} (97%) rename 3-Advanced/Serving-Your-Team/{02-How to Choose What to Work On.md => 02-How-to-Choose-What-to-Work-On.md} (83%) rename 3-Advanced/Serving-Your-Team/{03-How to Get the Most From Your Teammates.md => 03-How-to-Get-the-Most-From-Your-Teammates.md} (97%) rename 3-Advanced/Serving-Your-Team/{04-How to Divide Problems Up.md => 04-How-to-Divide-Problems-Up.md} (94%) rename 3-Advanced/Serving-Your-Team/{05-How to Handle Boring Tasks.md => 05-How-to-Handle-Boring-Tasks.md} (90%) rename 3-Advanced/Serving-Your-Team/{06-How to Gather Support for a Project.md => 06-How-to-Gather-Support-for-a-Project.md} (91%) rename 3-Advanced/Serving-Your-Team/{07-How to Grow a System.md => 07-How-to-Grow-a-System.md} (97%) rename 3-Advanced/Serving-Your-Team/{08-How to Communicate Well.md => 08-How-to-Communicate-Well.md} (94%) rename 3-Advanced/Serving-Your-Team/{09-How to Tell People Things They Don't Want to Hear.md => 09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md} (93%) rename 3-Advanced/Serving-Your-Team/{10-How to Deal with Managerial Myths.md => 10-How-to-Deal-with-Managerial-Myths.md} (94%) rename 3-Advanced/Serving-Your-Team/{11-How to Deal with Organizational Chaos.md => 11-How-to-Deal-with-Organizational-Chaos.md} (100%) rename 3-Advanced/Technical-Judgment/{01-How to Tell the Hard From the Impossible.md => 01-How-to-Tell-the-Hard-From-the-Impossible.md} (94%) rename 3-Advanced/Technical-Judgment/{02-How to Utilize Embedded Languages.md => 02-How-to-Utilize-Embedded-Languages.md} (96%) rename 3-Advanced/Technical-Judgment/{03-Choosing Languages.md => 03-Choosing-Languages.md} (100%) diff --git a/3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md b/3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md similarity index 97% rename from 3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md rename to 3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md index 4cbbf85..4db071c 100644 --- a/3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md +++ b/3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md @@ -8,4 +8,4 @@ The key to fighting schedule pressure is simply to turn it into time-to-market p The key insight that the estimate must make plain is that labour is an almost incompressible fluid. You can't pack more into a span of time anymore than you can pack more water into a container over and above that container's volume. In a sense, a programmer should never say ‘no’, but rather to say ‘What will you give up to get that thing you want?’ The effect of producing clear estimates will be to increase the respect for programmers. This is how other professionals behave. Programmers' hard work will be visible. Setting an unrealistic schedule will also be painfully obvious to everyone. Programmers cannot be hoodwinked. It is disrespectful and demoralizing to ask them to do something unrealistic. Extreme Programming amplifies this and builds a process around it; I hope that every reader will be lucky enough to use it. -Next [How to Understand the User](02-How to Understand the User.md) \ No newline at end of file +Next [How to Understand the User](02-How-to-Understand-the-User.md) \ No newline at end of file diff --git a/3-Advanced/Compromising-Wisely/02-How to Understand the User.md b/3-Advanced/Compromising-Wisely/02-How-to-Understand-the-User.md similarity index 96% rename from 3-Advanced/Compromising-Wisely/02-How to Understand the User.md rename to 3-Advanced/Compromising-Wisely/02-How-to-Understand-the-User.md index 1e3d1c0..92711af 100644 --- a/3-Advanced/Compromising-Wisely/02-How to Understand the User.md +++ b/3-Advanced/Compromising-Wisely/02-How-to-Understand-the-User.md @@ -14,4 +14,4 @@ Guy Kawasaki [Rules] has emphasized the importance of *watching* what your users I believe contractors and consultants often have tremendous problems getting their clients to clarify in their own minds what they really want. If you intend to be a consultant, I suggest you choose your clients based on their clear-headedness as well as their pocketbooks. -Next [How to Get a Promotion](03-How to Get a Promotion.md) \ No newline at end of file +Next [How to Get a Promotion](03-How-to-Get-a-Promotion.md) \ No newline at end of file diff --git a/3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md b/3-Advanced/Compromising-Wisely/03-How-to-Get-a-Promotion.md similarity index 97% rename from 3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md rename to 3-Advanced/Compromising-Wisely/03-How-to-Get-a-Promotion.md index 70a5800..91ecbb0 100644 --- a/3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md +++ b/3-Advanced/Compromising-Wisely/03-How-to-Get-a-Promotion.md @@ -10,4 +10,4 @@ If you feel like you are past due for a promotion, talk to your boss about it. A Most programmers probably have an exaggerated sense of their relative abilities in some ways---after all, we can't all be in the top 10%! However, I have seem some people who were seriously unappreciated. One cannot expect everyone's evaluation to perfectly match reality at all times, but I think people are generally moderately fair, with one caveat: you cannot be appreciated without visibility into your work. Sometimes, do to happenstance or personal habits, someone will not be noticed much. Working from home a lot or being geographically separated from your team and boss makes this especially difficult. -Next [Serving Your Team - How to Develop Talent](../Serving-Your-Team/01-How to Develop Talent.md) \ No newline at end of file +Next [Serving Your Team - How to Develop Talent](../Serving-Your-Team/01-How-to-Develop-Talent.md) \ No newline at end of file diff --git a/3-Advanced/README.md b/3-Advanced/README.md index 7f66191..395fbb1 100644 --- a/3-Advanced/README.md +++ b/3-Advanced/README.md @@ -1,22 +1,22 @@ # 3. Advanced - Technological Judgment - - [How to Tell the Hard From the Impossible](Technical-Judgment/01-How to Tell the Hard From the Impossible.md) - - [How to Utilize Embedded Languages](Technical-Judgment/02-How to Utilize Embedded Languages.md) - - [Choosing Languages](Technical-Judgment/03-Choosing Languages.md) + - [How to Tell the Hard From the Impossible](Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md) + - [How to Utilize Embedded Languages](Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md) + - [Choosing Languages](Technical-Judgment/03-Choosing-Languages.md) - Compromising Wisely - - [How to Fight Schedule Pressure](Compromising-Wisely/01-How to Fight Schedule Pressure.md) - - [How to Understand the User](Compromising-Wisely/02-How to Understand the User.md) - - [How to Get a Promotion](Compromising-Wisely/03-How to Get a Promotion.md) + - [How to Fight Schedule Pressure](Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md) + - [How to Understand the User](Compromising-Wisely/02-How-to-Understand-the-User.md) + - [How to Get a Promotion](Compromising-Wisely/03-How-to-Get-a-Promotion.md) - Serving Your Team - - [How to Develop Talent](Serving-Your-Team/01-How to Develop Talent.md) - - [How to Choose What to Work On](Serving-Your-Team/02-How to Choose What to Work On.md) - - [How to Get the Most From Your Team-mates](Serving-Your-Team/03-How to Get the Most From Your Teammates.md) - - [How to Divide Problems Up](Serving-Your-Team/04-How to Divide Problems Up.md) - - [How to Handle Boring Tasks](Serving-Your-Team/05-How to Handle Boring Tasks.md) - - [How to Gather Support for a Project](Serving-Your-Team/06-How to Gather Support for a Project.md) - - [How to Grow a System](Serving-Your-Team/07-How to Grow a System.md) - - [How to Communicate Well](Serving-Your-Team/08-How to Communicate Well.md) - - [How to Tell People Things They Don't Want to Hear](Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md) - - [How to Deal with Managerial Myths](Serving-Your-Team/10-How to Deal with Managerial Myths.md) - - [How to Deal with Organizational Chaos](Serving-Your-Team/11-How to Deal with Organizational Chaos.md) \ No newline at end of file + - [How to Develop Talent](Serving-Your-Team/01-How-to-Develop-Talent.md) + - [How to Choose What to Work On](Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md) + - [How to Get the Most From Your Team-mates](Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md) + - [How to Divide Problems Up](Serving-Your-Team/04-How-to-Divide-Problems-Up.md) + - [How to Handle Boring Tasks](Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md) + - [How to Gather Support for a Project](Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md) + - [How to Grow a System](Serving-Your-Team/07-How-to-Grow-a-System.md) + - [How to Communicate Well](Serving-Your-Team/08-How-to-Communicate-Well.md) + - [How to Tell People Things They Don't Want to Hear](Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md) + - [How to Deal with Managerial Myths](Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md) + - [How to Deal with Organizational Chaos](Serving-Your-Team/11-How-to-Deal-with-Organizational-Chaos.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/01-How to Develop Talent.md b/3-Advanced/Serving-Your-Team/01-How-to-Develop-Talent.md similarity index 97% rename from 3-Advanced/Serving-Your-Team/01-How to Develop Talent.md rename to 3-Advanced/Serving-Your-Team/01-How-to-Develop-Talent.md index e853798..c95aa23 100644 --- a/3-Advanced/Serving-Your-Team/01-How to Develop Talent.md +++ b/3-Advanced/Serving-Your-Team/01-How-to-Develop-Talent.md @@ -20,4 +20,4 @@ It is an odd fact that is not reflected in salaries that a good programmer is mo You can often give the stronger team members challenging, but carefully delineated, tasks. -Next [How to Choose What to Work On](02-How to Choose What to Work On.md) \ No newline at end of file +Next [How to Choose What to Work On](02-How-to-Choose-What-to-Work-On.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md b/3-Advanced/Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md similarity index 83% rename from 3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md rename to 3-Advanced/Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md index c13705c..2b5cd41 100644 --- a/3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md +++ b/3-Advanced/Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md @@ -2,4 +2,4 @@ You balance your personal needs against the needs of the team in choosing what aspect of a project to work on. You should do what you are best at, but try to find a way to stretch yourself not by taking on more work but by exercising a new skill. Leadership and communication skills are more important than technical skills. If you are very strong, take on the hardest or riskiest task, and do it as early as possible in the project to decrease risk. -Next [How to Get the Most From Your Team-mates](03-How to Get the Most From Your Teammates.md) \ No newline at end of file +Next [How to Get the Most From Your Team-mates](03-How-to-Get-the-Most-From-Your-Teammates.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md b/3-Advanced/Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md similarity index 97% rename from 3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md rename to 3-Advanced/Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md index 1b046db..1f7edaa 100644 --- a/3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md +++ b/3-Advanced/Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md @@ -12,4 +12,4 @@ Ask your team, both as a group and individually, what they think would create te Praise frequently rather than lavishly. Especially praise those who disagree with you when they are praiseworthy. Praise in public and criticize in private; with one exception: sometimes growth or the correction of a fault can't be praised without drawing embarrassing attention to the original fault, so that growth should be praised in private. -Next [How to Divide Problems Up](04-How to Divide Problems Up.md) \ No newline at end of file +Next [How to Divide Problems Up](04-How-to-Divide-Problems-Up.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md b/3-Advanced/Serving-Your-Team/04-How-to-Divide-Problems-Up.md similarity index 94% rename from 3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md rename to 3-Advanced/Serving-Your-Team/04-How-to-Divide-Problems-Up.md index 4ee4d14..b8d3ef5 100644 --- a/3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md +++ b/3-Advanced/Serving-Your-Team/04-How-to-Divide-Problems-Up.md @@ -6,4 +6,4 @@ Just as a composer considers the timbre of the instrument that will play a part There is a certain danger in this given that people will become bored as they build upon their strengths and never improve their weaknesses or learn new skills. However, specialization is a very useful productivity tool when not overused. -Next [How to Handle Boring Tasks](05-How to Handle Boring Tasks.md) \ No newline at end of file +Next [How to Handle Boring Tasks](05-How-to-Handle-Boring-Tasks.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md b/3-Advanced/Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md similarity index 90% rename from 3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md rename to 3-Advanced/Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md index dfdb8b9..a302dd5 100644 --- a/3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md +++ b/3-Advanced/Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md @@ -4,4 +4,4 @@ Sometimes it is not possible to avoid boring tasks that are critical to the succ If all else fails, apologize to those who have to do the boring task, but under no circumstances allow them to do it alone. At a minimum assign a team of two to do the work and promote healthy teamwork to get the task done. -Next [How to Gather Support for a Project](06-How to Gather Support for a Project.md) \ No newline at end of file +Next [How to Gather Support for a Project](06-How-to-Gather-Support-for-a-Project.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md b/3-Advanced/Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md similarity index 91% rename from 3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md rename to 3-Advanced/Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md index 3ba9eaf..b5710ca 100644 --- a/3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md +++ b/3-Advanced/Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md @@ -2,4 +2,4 @@ To gather support for a project, create and communicate a vision that demonstrates real value to the organization as a whole. Attempt to let others share in your vision creation. This gives them a reason to support you and gives you the benefit of their ideas. Individually recruit key supporters for your project. Wherever possible, show, don't tell. If possible, construct a prototype or a mock-up to demonstrate your ideas. A prototype is always powerful but in software it is far superior to any written description. -Next [How to Grow a System](07-How to Grow a System.md) \ No newline at end of file +Next [How to Grow a System](07-How-to-Grow-a-System.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/07-How to Grow a System.md b/3-Advanced/Serving-Your-Team/07-How-to-Grow-a-System.md similarity index 97% rename from 3-Advanced/Serving-Your-Team/07-How to Grow a System.md rename to 3-Advanced/Serving-Your-Team/07-How-to-Grow-a-System.md index 5aa9f8c..c179923 100644 --- a/3-Advanced/Serving-Your-Team/07-How to Grow a System.md +++ b/3-Advanced/Serving-Your-Team/07-How-to-Grow-a-System.md @@ -20,4 +20,4 @@ A reader, Rob Hafernik, sent in this comment on this section that I can do no be To which one can only reply *Fiat lux*! -Next [How to Communiate Well](08-How to Communicate Well.md) \ No newline at end of file +Next [How to Communiate Well](08-How-to-Communicate-Well.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/08-How to Communicate Well.md b/3-Advanced/Serving-Your-Team/08-How-to-Communicate-Well.md similarity index 94% rename from 3-Advanced/Serving-Your-Team/08-How to Communicate Well.md rename to 3-Advanced/Serving-Your-Team/08-How-to-Communicate-Well.md index 4e55ee2..adc43b1 100644 --- a/3-Advanced/Serving-Your-Team/08-How to Communicate Well.md +++ b/3-Advanced/Serving-Your-Team/08-How-to-Communicate-Well.md @@ -8,4 +8,4 @@ The programmer brings order out of chaos. One interesting way to do this is to i I haven't mastered communicating well, but what I'm currently trying is what I think of a four-pronged approach: After I have my ideas in order and am fully prepared, I try to speak verbally, hand people a white-paper (on real paper, as well as electronically) show them a demo, and then patiently repeat this process. I think a lot of times we are not patient enough in this kind of difficult communication. You should not be disheartened if your ideas are not immediately accepted. If you have invested energy in their preparation, no one will think poorly of you for it. -Next [How to Tell People Things They Don't Want to Hear](09-How to Tell People Things They Don't Want to Hear.md) +Next [How to Tell People Things They Don't Want to Hear](09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md) diff --git a/3-Advanced/Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md b/3-Advanced/Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md similarity index 93% rename from 3-Advanced/Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md rename to 3-Advanced/Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md index 7f8d7a4..f138938 100644 --- a/3-Advanced/Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md +++ b/3-Advanced/Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md @@ -6,4 +6,4 @@ The best way to tell someone about a problem is to offer a solution at the same One of the most unpleasant and common things you will have to say is, ‘The schedule will have to slip.’ The conscientious programmer hates to say this, but must say it as early as possible. There is nothing worse than postponing action when a milestone slips, even if the only action is to inform everyone. In doing this, it is better to do it as a team, at least in spirit, if not physically. You will want your team's input on both where you stand and what can be done about it, and the team will have to face the consequences with you. -Next [How to Deal with Managerial Mythis](10-How to Deal with Managerial Myths.md) \ No newline at end of file +Next [How to Deal with Managerial Mythis](10-How-to-Deal-with-Managerial-Myths.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md b/3-Advanced/Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md similarity index 94% rename from 3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md rename to 3-Advanced/Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md index 6acb49d..8288078 100644 --- a/3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md +++ b/3-Advanced/Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md @@ -10,4 +10,4 @@ The word *myth* sometimes means fiction. But it has a deeper connotation. It als If you have an opportunity, you can try to explain these things, but don't feel bad if you have no success and don't damage your reputation by confronting these myths belligerently. Each of these myths reinforces the manager's idea that they have some actual control over what is going on. The truth is that managers facilitate if they are good, and impede if they are bad. -Next [How to Deal with Organizational Chaos](11-How to Deal with Organizational Chaos.md) \ No newline at end of file +Next [How to Deal with Organizational Chaos](11-How-to-Deal-with-Organizational-Chaos.md) \ No newline at end of file diff --git a/3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md b/3-Advanced/Serving-Your-Team/11-How-to-Deal-with-Organizational-Chaos.md similarity index 100% rename from 3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md rename to 3-Advanced/Serving-Your-Team/11-How-to-Deal-with-Organizational-Chaos.md diff --git a/3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md b/3-Advanced/Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md similarity index 94% rename from 3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md rename to 3-Advanced/Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md index a1146c0..56ce830 100644 --- a/3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md +++ b/3-Advanced/Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md @@ -6,4 +6,4 @@ The distinction is not facetious because you may very well be asked to do what i It is impossible to satisfy a vague requirement, such as ‘Build a system that will compute the most attractive hair style and colour for any person.’ If the requirement can be made more crisp, it will often become merely hard, such as ‘Build a system to compute an attractive hair style and colour for a person, allow them to preview it and make changes, and have the customer satisfaction based on the original styling be so great that we make a lot of money.’ If there is not crisp definition of success, you will not succeed. -Next [How to Utilize Embedded Languages](02-How to Utilize Embedded Languages.md) \ No newline at end of file +Next [How to Utilize Embedded Languages](02-How-to-Utilize-Embedded-Languages.md) \ No newline at end of file diff --git a/3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md b/3-Advanced/Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md similarity index 96% rename from 3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md rename to 3-Advanced/Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md index dc1d8ac..c1fb892 100644 --- a/3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md +++ b/3-Advanced/Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md @@ -8,4 +8,4 @@ I and many other programmers have fallen into the trap of creating special purpo The real question to ask oneself before embedding a language is: Does this work with or against the culture of my audience? If you intended audience is exclusively non-programmers, how will it help? If your intended audience is exclusively programmers, would they prefer an applications programmers interface (API)? And what language will it be? Programmers don't want to learn a new language that is narrowly used; but if it meshes with their culture they will not have to spend much time learning it. It is a joy to create a new language. But we should not let that blind us to the needs of the user. Unless you have some truly original needs and ideas, why not use an existing language so that you can leverage the familiarity users already have with it? -Next [Choosing Languages](03-Choosing Languages.md) \ No newline at end of file +Next [Choosing Languages](03-Choosing-Languages.md) \ No newline at end of file diff --git a/3-Advanced/Technical-Judgment/03-Choosing Languages.md b/3-Advanced/Technical-Judgment/03-Choosing-Languages.md similarity index 100% rename from 3-Advanced/Technical-Judgment/03-Choosing Languages.md rename to 3-Advanced/Technical-Judgment/03-Choosing-Languages.md diff --git a/README.md b/README.md index f792c8d..0cd5c93 100644 --- a/README.md +++ b/README.md @@ -74,25 +74,25 @@ Welcome to the tribe. - [How to Talk to Non-Engineers](2-Intermediate/Judgment/08-How-to-Talk-to-Non-Engineers.md) 3. [Advanced](3-Advanced) - Technological Judgment - - [How to Tell the Hard From the Impossible](3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md) - - [How to Utilize Embedded Languages](3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md) - - [Choosing Languages](3-Advanced/Technical-Judgment/03-Choosing Languages.md) + - [How to Tell the Hard From the Impossible](3-Advanced/Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md) + - [How to Utilize Embedded Languages](3-Advanced/Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md) + - [Choosing Languages](3-Advanced/Technical-Judgment/03-Choosing-Languages.md) - Compromising Wisely - - [How to Fight Schedule Pressure](3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md) - - [How to Understand the User](3-Advanced/Compromising-Wisely/02-How to Understand the User.md) - - [How to Get a Promotion](3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md) + - [How to Fight Schedule Pressure](3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md) + - [How to Understand the User](3-Advanced/Compromising-Wisely/02-How-to-Understand-the-User.md) + - [How to Get a Promotion](3-Advanced/Compromising-Wisely/03-How-to-Get-a-Promotion.md) - Serving Your Team - - [How to Develop Talent](3-Advanced/Serving-Your-Team/01-How to Develop Talent.md) - - [How to Choose What to Work On](3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md) - - [How to Get the Most From Your Team-mates](3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md) - - [How to Divide Problems Up](3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md) - - [How to Handle Boring Tasks](3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md) - - [How to Gather Support for a Project](3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md) - - [How to Grow a System](3-Advanced/Serving-Your-Team/07-How to Grow a System.md) - - [How to Communicate Well](3-Advanced/Serving-Your-Team/08-How to Communicate Well.md) - - [How to Tell People Things They Don't Want to Hear](3-Advanced/Serving-Your-Team/09-How to Tell People Things They Don't Want to Hear.md) - - [How to Deal with Managerial Myths](3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md) - - [How to Deal with Organizational Chaos](3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md) + - [How to Develop Talent](3-Advanced/Serving-Your-Team/01-How-to-Develop-Talent.md) + - [How to Choose What to Work On](3-Advanced/Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md) + - [How to Get the Most From Your Team-mates](3-Advanced/Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md) + - [How to Divide Problems Up](3-Advanced/Serving-Your-Team/04-How-to-Divide-Problems-Up.md) + - [How to Handle Boring Tasks](3-Advanced/Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md) + - [How to Gather Support for a Project](3-Advanced/Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md) + - [How to Grow a System](3-Advanced/Serving-Your-Team/07-How-to-Grow-a-System.md) + - [How to Communicate Well](3-Advanced/Serving-Your-Team/08-How-to-Communicate-Well.md) + - [How to Tell People Things They Don't Want to Hear](3-Advanced/Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md) + - [How to Deal with Managerial Myths](3-Advanced/Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md) + - [How to Deal with Organizational Chaos](3-Advanced/Serving-Your-Team/11-How-to-Deal-with-Organizational-Chaos.md) 4. [Glossary](4-Glossary.md) 5. [Appendix A - Bibliography/Websiteography](5-Bibliography.md) 6. [Appendix B - History (As of February 2003)](6-History.md)