Skip to content

Commit 9451022

Browse files
committed
Updated all links to be url-endcoded
1 parent fe28ced commit 9451022

File tree

184 files changed

+826
-826
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

184 files changed

+826
-826
lines changed

en/1-Beginner/Personal-Skills/01-Learn To Debug.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ Debugging tools are wonderful when they are stable and available, but printlinin
1818

1919
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.
2020

21-
Next [How to Debug by Splitting the Problem Space](02-How to Debug by Splitting the Problem Space.md)
21+
Next [How to Debug by Splitting the Problem Space](02-How%20to%20Debug%20by%20Splitting%20the%20Problem%20Space.md)

en/1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ To a true beginner, the space of all possible errors looks like every line in th
1212

1313
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.
1414

15-
Next [How to Remove an Error](03-How to Remove an Error.md)
15+
Next [How to Remove an Error](03-How%20to%20Remove%20an%20Error.md)

en/1-Beginner/Personal-Skills/03-How to Remove an Error.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ In fixing a bug, you want to make the smallest change that fixes the bug. You ma
66

77
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.
88

9-
Next [How to Debug Using a Log](04-How to Debug Using a Log.md)
9+
Next [How to Debug Using a Log](04-How%20to%20Debug%20Using%20a%20Log.md)

en/1-Beginner/Personal-Skills/04-How to Debug Using a Log.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ The amount to output into the log is always a compromise between information and
1010

1111
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.
1212

13-
Next [How to Understand Performance Problems](05-How to Understand Performance Problems.md)
13+
Next [How to Understand Performance Problems](05-How%20to%20Understand%20Performance%20Problems.md)

en/1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ There are many dimensions to the performance of a computer system, and many reso
88

99
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.
1010

11-
Next [How to Fix Performance Problems](06-How to Fix Performance Problems.md)
11+
Next [How to Fix Performance Problems](06-How%20to%20Fix%20Performance%20Problems.md)

en/1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Often, the bottlenecks in performance will be an example of counting cows by cou
1010

1111
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.
1212

13-
Next [How to Optimize Loops](07-How to Optimize Loops.md)
13+
Next [How to Optimize Loops](07-How%20to%20Optimize%20Loops.md)

en/1-Beginner/Personal-Skills/07-How to Optimize Loops.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ Sometimes you'll encounter loops, or recursive functions, that take a long time
1212

1313
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.
1414

15-
Next [How to Deal with I/O Expense](08-How to Deal with IO Expense.md)
15+
Next [How to Deal with I/O Expense](08-How%20to%20Deal%20with%20IO%20Expense.md)

en/1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Representations can often be improved by a factor of two or three from their fir
1010

1111
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.
1212

13-
Next [How to Manage Memory](09-How to Manage Memory.md)
13+
Next [How to Manage Memory](09-How%20to%20Manage%20Memory.md)

en/1-Beginner/Personal-Skills/09-How to Manage Memory.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ An important case occurs when you can define an upper bound on the number of obj
1212

1313
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 of garbage collection, such as reference counting, to do this for them.
1414

15-
Next [How to Deal with Intermittent Bugs](10-How to Deal with Intermittent Bugs.md)
15+
Next [How to Deal with Intermittent Bugs](10-How%20to%20Deal%20with%20Intermittent%20Bugs.md)

en/1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ This illustrates some risk associated with third-party software. We were using a
1414

1515
The program 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.
1616

17-
Next [How to Learn Design Skills](11-How to Learn Design Skills.md)
17+
Next [How to Learn Design Skills](11-How%20to%20Learn%20Design%20Skills.md)

en/1-Beginner/Personal-Skills/11-How to Learn Design Skills.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ Then you must do it yourself. Start with a small project. When you are finally d
66

77
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.
88

9-
Next [How to Conduct Experiments](12-How to Conduct Experiments.md)
9+
Next [How to Conduct Experiments](12-How%20to%20Conduct%20Experiments.md)

en/1-Beginner/Personal-Skills/12-How to Conduct Experiments.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ First, try to be very clear about your hypothesis, or the assertion that you are
2020

2121
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.
2222

23-
Next [Team Skills - Why Estimation is Important](../Team-Skills/01-Why Estimation is Important.md)
23+
Next [Team Skills - Why Estimation is Important](../Team-Skills/01-Why%20Estimation%20is%20Important.md)

en/1-Beginner/Team-Skills/01-Why Estimation is Important.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ really means:
1212
1313
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.
1414

15-
Next [How to Estimate Programming Time](02-How to Estimate Programming Time.md)
15+
Next [How to Estimate Programming Time](02-How%20to%20Estimate%20Programming%20Time.md)

en/1-Beginner/Team-Skills/02-How to Estimate Programming Time.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ If there are big risks that cannot be evaluated, it is your duty to state so for
1818

1919
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.
2020

21-
Next [How to Find Out Information](03-How to Find Out Information.md)
21+
Next [How to Find Out Information](03-How%20to%20Find%20Out%20Information.md)

en/1-Beginner/Team-Skills/03-How to Find Out Information.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ If you want to know *how likely it is* that a faster algorithm for a particular
1616

1717
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.
1818

19-
Next [How to Utilize People as Information Sources](04-How to Utilize People as Information Sources.md)
19+
Next [How to Utilize People as Information Sources](04-How%20to%20Utilize%20People%20as%20Information%20Sources.md)

en/1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ A strange example of this is the summer intern. A summer intern in a highly tech
1212

1313
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.
1414

15-
Next [How to Document Wisely](05-How to Document Wisely.md)
15+
Next [How to Document Wisely](05-How%20to%20Document%20Wisely.md)

en/1-Beginner/Team-Skills/05-How to Document Wisely.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ This does not make it easier on the responsible programmer. How does one write s
1717
- Thinking about the reader and spending some of your precious time to make it easier on her; and
1818
- Not ever using a function name like `foo`,`bar`, or `doIt`!
1919

20-
Next [How to Work with Poor Code](06-How to Work with Poor Code.md)
20+
Next [How to Work with Poor Code](06-How%20to%20Work%20with%20Poor%20Code.md)

en/1-Beginner/Team-Skills/06-How to Work with Poor Code.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ In any estimate that you make for work against code you didn't write, the qualit
88

99
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.
1010

11-
Next [How to Use Source Code Control](07-How to Use Source Code Control.md)
11+
Next [How to Use Source Code Control](07-How%20to%20Use%20Source%20Code%20Control.md)

en/1-Beginner/Team-Skills/07-How to Use Source Code Control.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ I was late to appreciate the benefits of source code control systems but now I w
66

77
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.
88

9-
Next [How to Unit Test](08-How to Unit Test.md)
9+
Next [How to Unit Test](08-How%20to%20Unit%20Test.md)

en/1-Beginner/Team-Skills/08-How to Unit Test.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ Use assertion checking and test drivers whenever possible. This not only catches
66

77
The Extreme Programming developers are writing extensively on unit testing effectively; I can do no better than to recommend their writings.
88

9-
Next [Take Breaks when Stumped](09-Take Breaks when Stumped.md)
9+
Next [Take Breaks when Stumped](09-Take%20Breaks%20when%20Stumped.md)

en/1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ Most programmers are good programmers, and good programmers want to get a lot do
1313

1414
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.
1515

16-
Next [How to Deal with Difficult People](11-How to Deal with Difficult People.md)
16+
Next [How to Deal with Difficult People](11-How%20to%20Deal%20with%20Difficult%20People.md)

en/2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ NinjaProgrammer at Slashdot sent in this gem:
1010

1111
> Remember that a good design will be resilient 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.
1212
13-
Next [How to Manage Software Dependence](02-How to Manage Software System Dependence.md)
13+
Next [How to Manage Software Dependence](02-How%20to%20Manage%20Software%20System%20Dependence.md)

en/2-Intermediate/Judgment/02-How to Manage Software System Dependence.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ It is always best to encapsulate the component in some way so that it is isolate
1010

1111
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.
1212

13-
Next [How to Decide if Software is Too Immature](03-How to Decide if Software is Too Immature.md)
13+
Next [How to Decide if Software is Too Immature](03-How%20to%20Decide%20if%20Software%20is%20Too%20Immature.md)

en/2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ Using software other people wrote is one of the most effective ways to quickly b
1515

1616
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.
1717

18-
Next [How to Make a Buy vs. Build Decision](04-How to Make a Buy vs Build Decision.md)
18+
Next [How to Make a Buy vs. Build Decision](04-How%20to%20Make%20a%20Buy%20vs%20Build%20Decision.md)

en/2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ You should think twice before building something that is big enough to serve as
1313

1414
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.
1515

16-
Next [How to Grow Professionally](05-How to Grow Professionally.md)
16+
Next [How to Grow Professionally](05-How%20to%20Grow%20Professionally.md)

en/2-Intermediate/Judgment/05-How to Grow Professionally.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ Evaluate yourself. If you want to become a better programmer, ask someone you ad
88

99
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.
1010

11-
Next [How to Evaluate Interviewees](06-How to Evaluate Interviewees.md)
11+
Next [How to Evaluate Interviewees](06-How%20to%20Evaluate%20Interviewees.md)

en/2-Intermediate/Judgment/06-How to Evaluate Interviewees.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ A reader has had good luck using a ‘take-home’ test for interviewees. This h
1212

1313
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.
1414

15-
Next [How to Know When to Apply Fancy Computer Science](07-How to Know When to Apply Fancy Computer Science.md)
15+
Next [How to Know When to Apply Fancy Computer Science](07-How%20to%20Know%20When%20to%20Apply%20Fancy%20Computer%20Science.md)

en/2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ The three most important considerations for the potential computer science techn
1212

1313
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.
1414

15-
Next [How to Talk to Non-Engineers](08-How to Talk to Non-Engineers.md)
15+
Next [How to Talk to Non-Engineers](08-How%20to%20Talk%20to%20Non-Engineers.md)

en/2-Intermediate/Personal-Skills/01-How to Stay Motivated.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ Obviously, there are entire industries organized around motivational techniques
1212

1313
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 it 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.
1414

15-
Next [How to be Widely Trusted](02-How to be Widely Trusted.md)
15+
Next [How to be Widely Trusted](02-How%20to%20be%20Widely%20Trusted.md)

0 commit comments

Comments
 (0)