
A guide on how to be a Programmer (2002) - gnocchi
https://github.com/braydie/HowToBeAProgrammer
======
awwducks
After reading the first few bits in the "beginner" section, this reminds me of
my experience with "Lessons in the Fundamentals of Go" by Kageyama Toshiro 7p
[0] (Go the game). It's a terrific book where he stresses the fundamentals
even if you feel like you're above it. I read the book cover-to-cover many
times at different stages of my life as a go player, each time learning
something new.

The book starts on ladders, a pretty basic concept that I teach to beginners
within 15 minutes or so of learning the rules. [1]

    
    
      Still on ladders?  Ridiculous!  Even looking at this page is beneath me.
    
      Yes, but even if you feel you are being cheated, read on a little further.
      Don't forget the fundamentals.  Our study begins with ladders.
    

[0]: [http://www.gobooks.info/g28.html](http://www.gobooks.info/g28.html)

[1]: [http://senseis.xmp.net/?Ladders](http://senseis.xmp.net/?Ladders)

~~~
srcreigh
What's "don'"?

~~~
awwducks
There's a horizontal scroll bar :)

I'm not sure how to format a block quote without it.

Edit: Well, just added newlines. Seems to look ok.

~~~
DanBC
Don't use leading spaces, just use >

Or do use leading spaces, but insert line breaks. Remember that people on
mobile have very short screens.

------
srcreigh
There's some heavy stuff in here.

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

[https://github.com/braydie/HowToBeAProgrammer/blob/master/en...](https://github.com/braydie/HowToBeAProgrammer/blob/master/en/1-Beginner/Team-
Skills/10-How%20to%20Recognize%20When%20to%20Go%20Home.md)

~~~
diskcat
What about modafinil?

~~~
mikekchar
I haven't read the article yet (I intend to do so when I get some free time).
But the best advice I can give you for maximising your productivity as a
programmer is to sleep when you are tired. Try not to make an exception of it.

Some people are not very good at organizing their free time so that they get
enough sleep the night before. This will hurt your career as a programmer. If
you want to improve your performance, drugs will be nowhere near as effective
as sleep.

If you have a social or medical situation that making it so that you can't
sleep, do whatever you can to fix that problem. I advise you to try to make it
your top priority. Get professional help if you need it.

If you are in a situation where you can't sleep because your work/commute time
is eating into your sleep time, quit. You are damaging your health and also
your ability to grow as a programmer. It is not worth it in any way.

Nothing else I have done has been so important to my life and career as the
above.

~~~
komali2
Agreed here. I found myself lethargic and frankly stupid until I discovered,
through a sleep study, that I have sleep apnea. To cure this, I was simply
prescribed an anti histamine pill, to be taken once a day, and a
corticosteroid spray to be taken in the nostrils once a day. My sleep apnea
was cured within a week and my abilities as a developer increased tenfold.

It is really amazing how much of a difference in your personality and
abilities a good night's sleep can make.

------
Yhippa
[https://github.com/braydie/HowToBeAProgrammer/blob/master/en...](https://github.com/braydie/HowToBeAProgrammer/blob/master/en/1-Beginner/Team-
Skills/09-Take%20Breaks%20when%20Stumped.md)

This one weird trick has helped me solve so many problems that I thought were
impassable in my day-to-day development. Bonus points if you couple it with
purposeless walking.

~~~
alkonaut
Walk to the coffee machine. Explain the problem to the coworker at the coffee
machine (if no coworker is nearby, just explain to the coffee machine). While
explaining the solution will magically materialize. This variation of the
rubber duck method is so effective it's scary.

------
evolvedlight
For the managerial myth of "It is possible to estimate software development
reliably. (It is not even theoretically possible.)", can anyone provide good
resources/references?

~~~
ArkyBeagle
I'm pretty sure the canonical source is "Mythical Man Month" by Fred Brooks.

------
kdamken
Step 1. Learn how to code

Step 2. Get someone to pay you for it

On how to be a _good_ programmer though, this seems like a solid guide.
Looking forward to reading through more of it.

~~~
JadeNB
I think that Step 2 can be replaced with the even simpler "Step 2. Code". Paid
programmers are not the only programmers.

------
9erdelta
The thing on this guide that is big for me is "How to Learn Design Skills" but
then the suggestions are underwhelming. If there was a list of "canonical"
well designed projects to learn from, that would be helpful.

------
alkonaut
> Since I have children, I try to spend evenings with them _sometimes_.

My emphasis.

Next in this series: "How to be a parent": step 1 be home for dinner -- You
answer to your kids first and your boss second.

------
pepijndevos
I like that "Choosing Languages" is considered advanced.

------
elcapitan
Is there some way to generate an epub based on that repo?

~~~
bmaupin
Got it: [https://www.gitbook.com/download/epub/book/braydie/how-to-
be...](https://www.gitbook.com/download/epub/book/braydie/how-to-be-a-
programmer?lang=en)

PDF and mobi also available, as well as the Chinese version:
[https://www.gitbook.com/book/braydie/how-to-be-a-
programmer/...](https://www.gitbook.com/book/braydie/how-to-be-a-
programmer/details)

~~~
elcapitan
Great, thanks :)

------
stackmojo
Its too vague. too much wanting to convey in one article

~~~
louhike
As there is a table of contents with separated sections, I'm not sure we can
consider this as just an article. It looks more like a book/guide to me. I
think you can read its different part over time and not in one shot.

------
finalight
this is why you should implement good test coverage in the beginning

