Skip to content

Commit 7d68115

Browse files
committed
merge pull request braydie#44
1 parent cb2b7db commit 7d68115

File tree

5 files changed

+241
-112
lines changed

5 files changed

+241
-112
lines changed

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Node rules:
2+
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3+
.grunt
4+
5+
## Dependency directory
6+
## Commenting this out is preferred by some people, see
7+
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8+
node_modules
9+
10+
# Book build output
11+
_book
12+
13+
# eBook build output
14+
*.epub
15+
*.mobi
16+
*.pdf

4-Glossary.md

Lines changed: 0 additions & 110 deletions
This file was deleted.

GLOSSARY.md

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# Glossary
2+
3+
This is a glossary of terms as used in this essay. These do not necessarily have a standardized meaning to other people. Eric S. Raymond has compiled a massive and informative glossary[HackerDict] that rather surprisingly can pleasurably be read cover-to-cover once you can appreciate a fraction of it.
4+
5+
### unk-unk
6+
7+
Slang for unknown-unknown. Problems that cannot presently even be conceptualized that will steal time away from the project and wreck the schedule.
8+
9+
### boss
10+
11+
The person or entity that gives you tasks. In some cases this may be the public at large.
12+
13+
### printlining
14+
15+
The insertion of statements into a program on a strictly temporary basis that output information about the execution of the program for the purpose of debugging.
16+
17+
### logging
18+
19+
The practice of writing a program so that it can produce a configurable output log describing its execution.
20+
21+
### divide and conquer
22+
23+
A technique of top-down design and, importantly, of debugging that is the subdivision of a problem or a mystery into progressively smaller problems or mysteries.
24+
25+
### vapour
26+
27+
Illusionary and often deceptive promises of software that is not yet for sale and, as often as not, will never materialize into anything solid.
28+
29+
### boss
30+
31+
The person who sets your tasks. In some cases, the user is the boss.
32+
33+
### tribe
34+
35+
The people with whom you share loyalty to a common goal.
36+
37+
### low-hanging fruit
38+
39+
Big improvements that cost little.
40+
41+
### Entrepreneur
42+
The initiator of projects.
43+
44+
### garbage
45+
46+
Objects that are no longer needed that hold memory.
47+
48+
### business
49+
50+
A group of people organized for making money.
51+
52+
### company
53+
54+
A group of people organized for making money.
55+
56+
### tribe
57+
58+
A group of people you share cultural affinity and loyalty with.
59+
60+
### scroll blindness
61+
62+
The effect of being unable to find information you need because it is buried in too much other, less interesting information.
63+
64+
### wall-clock
65+
66+
Actually time as measured by a clock on a wall, as opposed to CPU time.
67+
68+
### bottleneck
69+
70+
The most important limitation in the performance of a system. A constriction that limits performance.
71+
72+
### master
73+
74+
A unique piece of information from which all cached copies are derived that serves as the official definition of that data.
75+
76+
### heap allocated
77+
78+
Memory can be said to be heap allocated whenever the mechanism for freeing it is complicated.
79+
80+
### garbage
81+
82+
Allocated memory that no longer has any useful meaning.
83+
84+
### garbage collector
85+
86+
A system for recycling garbage.
87+
88+
### memory leak
89+
90+
The unwanted collection of references to objects that prevents garbage collection (or a bug in the garbage collector or memory management system!) that causes the program to gradually increase its memory demands over time.
91+
92+
### Extreme Programming
93+
94+
A style of programming emphasizing communication with the customer and automated testing.
95+
96+
### hitting the wall
97+
98+
To run out of a specific resource causing performance to degrade sharply rather than gradually.
99+
100+
### speculative programming
101+
102+
Producing a feature before it is really known if that feature will be useful.
103+
104+
### information hiding
105+
106+
A design principle that seeks to keep things independent and decoupled by using interfaces that expose as little information as possible.
107+
108+
### object-oriented programming
109+
110+
An programming style emphasizing the the management of state inside objects.
111+
112+
### communication languages
113+
114+
A language designed primarily for standardization rather than execution.
115+
116+
### boxes and arrows
117+
118+
A loose, informal style of making diagrams consisting of boxes and arrows drawn between those boxes to show the relationships. This contrast with formal diagram methodologies, such as UML.
119+
120+
### lingua franca
121+
122+
A language so popular as to be a de facto standard for its field, as French was for international diplomacy at one time.
123+
124+
### buy vs. build
125+
126+
An adjective describing a choice between spending money for software or writing it your self.
127+
128+
### mere work
129+
130+
Work that requires little creativity and entails little risk. Mere work can be estimated easily.
131+
132+
### programming notation
133+
134+
A synonym for programming language that emphasizes the mathematical nature of programming language and their relative simplicity compared to natural languages.
135+
136+
### strawman
137+
138+
A document meant to be the starting point of a technical discussion. A strawman may lead to a stickman, tinman, woodman, ironman, etc.
139+
140+
### white-paper
141+
142+
An informative document that is often meant to explain or sell a product or idea to an audience different than the programmers of that product or idea.

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# How to be a Programmer: Community Version
2+
23
Robert L. Read with Community
34

45
Copyright 2002, 2003, 2016 Robert L. Read
@@ -31,7 +32,7 @@ Welcome to the tribe.
3132
- [How to Manage Memory](1-Beginner/Personal-Skills/09-How to Manage Memory.md)
3233
- [How to Deal with Intermittent Bugs](1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md)
3334
- [How to Learn Design Skills](1-Beginner/Personal-Skills/11-How to Learn Design Skills.md)
34-
- [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How to Conduct Experiments.md)
35+
- [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How to Conduct Experiments.md)
3536
- Team Skills
3637
- [Why Estimation is Important](1-Beginner/Team-Skills/01-Why Estimation is Important.md)
3738
- [How to Estimate Programming Time](1-Beginner/Team-Skills/02-How to Estimate Programming Time.md)
@@ -93,7 +94,7 @@ Welcome to the tribe.
9394
- [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)
9495
- [How to Deal with Managerial Myths](3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md)
9596
- [How to Deal with Organizational Chaos](3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md)
96-
4. [Glossary](4-Glossary.md)
97+
4. [Glossary](GLOSSARY.md)
9798
5. [Appendix A - Bibliography/Websiteography](5-Bibliography.md)
9899
6. [Appendix B - History (As of January 2016)](6-History.md)
99100
6. [Appendix C - Contributions (As of January 2016)](7-Contributions.md)

SUMMARY.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Summary
2+
3+
* [Beginner](1-Beginner/README.md)
4+
* Personal Skills
5+
* [Learn to Debug](1-Beginner/Personal-Skills/01-Learn To Debug.md)
6+
* [How to Debug by Splitting the Problem Space](1-Beginner/Personal-Skills/02-How to Debug by Splitting the Problem Space.md)
7+
* [How to Remove an Error](1-Beginner/Personal-Skills/03-How to Remove an Error.md)
8+
* [How to Debug Using a Log](1-Beginner/Personal-Skills/04-How to Debug Using a Log.md)
9+
* [How to Understand Performance Problems](1-Beginner/Personal-Skills/05-How to Understand Performance Problems.md)
10+
* [How to Fix Performance Problems](1-Beginner/Personal-Skills/06-How to Fix Performance Problems.md)
11+
* [How to Optimize Loops](1-Beginner/Personal-Skills/07-How to Optimize Loops.md)
12+
* [How to Deal with I/O Expense](1-Beginner/Personal-Skills/08-How to Deal with IO Expense.md)
13+
* [How to Manage Memory](1-Beginner/Personal-Skills/09-How to Manage Memory.md)
14+
* [How to Deal with Intermittent Bugs](1-Beginner/Personal-Skills/10-How to Deal with Intermittent Bugs.md)
15+
* [How to Learn Design Skills](1-Beginner/Personal-Skills/11-How to Learn Design Skills.md)
16+
* [How to Conduct Experiments](1-Beginner/Personal-Skills/12-How to Conduct Experiments.md)
17+
* Team Skills
18+
* [Why Estimation is Important](1-Beginner/Team-Skills/01-Why Estimation is Important.md)
19+
* [How to Estimate Programming Time](1-Beginner/Team-Skills/02-How to Estimate Programming Time.md)
20+
* [How to Find Out Information](1-Beginner/Team-Skills/03-How to Find Out Information.md)
21+
* [How to Utilize People as Information Sources](1-Beginner/Team-Skills/04-How to Utilize People as Information Sources.md)
22+
* [How to Document Wisely](1-Beginner/Team-Skills/05-How to Document Wisely.md)
23+
* [How to Work with Poor Code](1-Beginner/Team-Skills/06-How to Work with Poor Code.md)
24+
* [How to Use Source Code Control](1-Beginner/Team-Skills/07-How to Use Source Code Control.md)
25+
* [How to Unit Test](1-Beginner/Team-Skills/08-How to Unit Test.md)
26+
* [Take Breaks when Stumped](1-Beginner/Team-Skills/09-Take Breaks when Stumped.md)
27+
* [How to Recognize When to Go Home](1-Beginner/Team-Skills/10-How to Recognize When to Go Home.md)
28+
* [How to Deal with Difficult People](1-Beginner/Team-Skills/11-How to Deal with Difficult People.md)
29+
* [Intermediate](2-Intermediate/README.md)
30+
* Personal Skills
31+
* [How to Stay Motivated](2-Intermediate/Personal-Skills/01-How to Stay Motivated.md)
32+
* [How to be Widely Trusted](2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md)
33+
* [How to Tradeoff Time vs. Space](2-Intermediate/Personal-Skills/03-How to Tradeoff Time vs Space.md)
34+
* [How to Stress Test](2-Intermediate/Personal-Skills/04-How to Stress Test.md)
35+
* [How to Balance Brevity and Abstraction](2-Intermediate/Personal-Skills/05-How to Balance Brevity and Abstraction.md)
36+
* [How to Learn New Skills](2-Intermediate/Personal-Skills/06-How to Learn New Skills.md)
37+
* [Learn to Type](2-Intermediate/Personal-Skills/07-Learn to Type.md)
38+
* [How to Do Integration Testing](2-Intermediate/Personal-Skills/08-How to Do Integration Testing.md)
39+
* [Communication Languages](2-Intermediate/Personal-Skills/09-Communication Languages.md)
40+
* [Heavy Tools](2-Intermediate/Personal-Skills/10-Heavy Tools.md)
41+
* [How to analyze data](2-Intermediate/Personal-Skills/11-How to analyze data.md)
42+
* Team Skills
43+
* [How to Manage Development Time](2-Intermediate/Team-Skills/01-How to Manage Development Time.md)
44+
* [How to Manage Third-Party Software Risks](2-Intermediate/Team-Skills/02-How to Manage Third-Party Software Risks.md)
45+
* [How to Manage Consultants](2-Intermediate/Team-Skills/03-How to Manage Consultants.md)
46+
* [How to Communicate the Right Amount](2-Intermediate/Team-Skills/04-How to Communicate the Right Amount.md)
47+
* [How to Disagree Honestly and Get Away with It](2-Intermediate/Team-Skills/05-How to Disagree Honestly and Get Away with It.md)
48+
* Judgment
49+
* [How to Tradeoff Quality Against Development Time](2-Intermediate/Judgment/01-How to Tradeoff Quality Against Development Time.md)
50+
* [How to Manage Software System Dependence](2-Intermediate/Judgment/02-How to Manage Software System Dependence.md)
51+
* [How to Decide if Software is Too Immature](2-Intermediate/Judgment/03-How to Decide if Software is Too Immature.md)
52+
* [How to Make a Buy vs. Build Decision](2-Intermediate/Judgment/04-How to Make a Buy vs Build Decision.md)
53+
* [How to Grow Professionally](2-Intermediate/Judgment/05-How to Grow Professionally.md)
54+
* [How to Evaluate Interviewees](2-Intermediate/Judgment/06-How to Evaluate Interviewees.md)
55+
* [How to Know When to Apply Fancy Computer Science](2-Intermediate/Judgment/07-How to Know When to Apply Fancy Computer Science.md)
56+
* [How to Talk to Non-Engineers](2-Intermediate/Judgment/08-How to Talk to Non-Engineers.md)
57+
* [Advanced](3-Advanced/README.md)
58+
* Technological Judgment
59+
* [How to Tell the Hard From the Impossible](3-Advanced/Technical-Judgment/01-How to Tell the Hard From the Impossible.md)
60+
* [How to Utilize Embedded Languages](3-Advanced/Technical-Judgment/02-How to Utilize Embedded Languages.md)
61+
* [Choosing Languages](3-Advanced/Technical-Judgment/03-Choosing Languages.md)
62+
* Compromising Wisely
63+
* [How to Fight Schedule Pressure](3-Advanced/Compromising-Wisely/01-How to Fight Schedule Pressure.md)
64+
* [How to Understand the User](3-Advanced/Compromising-Wisely/02-How to Understand the User.md)
65+
* [How to Get a Promotion](3-Advanced/Compromising-Wisely/03-How to Get a Promotion.md)
66+
* Serving Your Team
67+
* [How to Develop Talent](3-Advanced/Serving-Your-Team/01-How to Develop Talent.md)
68+
* [How to Choose What to Work On](3-Advanced/Serving-Your-Team/02-How to Choose What to Work On.md)
69+
* [How to Get the Most From Your Team-mates](3-Advanced/Serving-Your-Team/03-How to Get the Most From Your Teammates.md)
70+
* [How to Divide Problems Up](3-Advanced/Serving-Your-Team/04-How to Divide Problems Up.md)
71+
* [How to Handle Boring Tasks](3-Advanced/Serving-Your-Team/05-How to Handle Boring Tasks.md)
72+
* [How to Gather Support for a Project](3-Advanced/Serving-Your-Team/06-How to Gather Support for a Project.md)
73+
* [How to Grow a System](3-Advanced/Serving-Your-Team/07-How to Grow a System.md)
74+
* [How to Communicate Well](3-Advanced/Serving-Your-Team/08-How to Communicate Well.md)
75+
* [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)
76+
* [How to Deal with Managerial Myths](3-Advanced/Serving-Your-Team/10-How to Deal with Managerial Myths.md)
77+
* [How to Deal with Organizational Chaos](3-Advanced/Serving-Your-Team/11-How to Deal with Organizational Chaos.md)
78+
* [Appendix A * Bibliography/Websiteography](5-Bibliography.md)
79+
* [Appendix B * History (As of January 2016)](6-History.md)
80+
* [Appendix C * Contributions (As of January 2016)](7-Contributions.md)

0 commit comments

Comments
 (0)