Git Product home page Git Product logo

howtobeaprogrammer's Introduction

How to be a Programmer: Community Version

Robert L. Read with Community

Copyright 2002, 2003, 2016 Robert L. Read

Licensed under Creative Commons Attribution-ShareAlike 4.0 International License.

Available on gitbook to read

Available to buy as a hardcover book (cost covers production & shipping only) - Edition 1, published 04/01/16

Introduction

To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one's coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom he or she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one.

This is very subjective and, therefore, this essay is doomed to be personal and somewhat opinionated. I confine myself to problems that a programmer is very likely to have to face in her work. Many of these problems and their solutions are so general to the human condition that I will probably seem preachy. I hope in spite of this that this essay will be useful.

Computer programming is taught in courses. The excellent books: The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96], and Extreme Programming Explained [XP99] all teach computer programming and the larger issues of being a good programmer. The essays of Paul Graham [PGSite] and Eric Raymond [Hacker] should certainly be read before or along with this article. This essay differs from those excellent works by emphasizing social problems and comprehensively summarizing the entire set of necessary skills as I see them.

In this essay the term boss is used to refer to whomever gives you projects to do. I use the words business, company, and tribe, synonymously except that business connotes moneymaking, company connotes the modern workplace and tribe is generally the people you share loyalty with.

Welcome to the tribe.

Contents

Also available in Chinese and Japanese

  1. Beginner
  2. Intermediate
  3. Advanced
  4. Glossary
  5. Appendix A - Bibliography/Websiteography
  6. Appendix B - History (As of January 2016)
  7. Appendix C - Contributions (As of January 2016)

Creative Commons License
How To Be A Programmer: Community Version by Robert L. Read with Community is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

howtobeaprogrammer's People

Contributors

adrianmann avatar ahangchen avatar aidewoode avatar ajsebastian avatar archenoth avatar benstiglitz avatar benwr avatar bingocaller avatar borerere avatar braydie avatar carlmungazi avatar claflamme avatar cleentfaar avatar domwilliams0 avatar emporsteigen avatar erictendian avatar fokionzervoudakis avatar gnuself avatar gregestren avatar hansale avatar imdineshsaini avatar jaimemarijke avatar janroudaut avatar jrodbx avatar karinakozarova avatar kennethlimcp avatar mmarica avatar robertlread avatar samypesse avatar waldyrious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

howtobeaprogrammer's Issues

Tool for exporting?

I was thinking it would be nice to have the whole "book" into one file.

What if we write a little script to go through a folder and pack all of the .mds into one master .md or a pdf of whatever else? We could even add that as a build task so for every build we export a new final version.

Epub Download?

How do I actually get the epub version to download? The gitbook link requires an account AND a phone number. Is that the only option?

Broken links

Links here are broken, nothing happens when you click them. Consecutively, pdf, mobi and ePub versions are only 13 pages long.

GitBook Export Links Broken

Hello! Thank you so much for open sourcing and maintaining this great guide!

The link on the README for PDF export appears to be broken and sends the user to the GitBook homepage.

Post each one of these in medium

Medium.com is the perfect place for this material to be. It has awesome reader experience and gives the ability to highlight and comment anything. You could provide a link to each medium post in the README.md

What do you think?

Proposed new section - Design patterns

Currently we have 1.11 "How to Learn Design Skills", and I think getting an understanding of well-designed software is very important (especially as a beginner), but should we look to include a section later on (perhaps in Intermediate) on when to use (and not use) design patterns? Currently 1.11 makes no mention of them and even having an awareness of them can be beneficial.

PDF

Hello,

Even though this is still being worked on, I would love if there was a way for me to read this offline on my kindle.

Regards,
BRP

Language that welcomes both women and men?

In the intermittent bugs chapter, the name you called the tool you used -- the French stripper -- looks like an example of the kind of thing that, while it seems intended innocuously, could alienate women. This is otherwise an amazing introductory text, and our industry has a real problem with welcoming both women and men. Consider changing?

How to be Trustworthy - typo "know" should be "no".

HowToBeAProgrammer/2-Intermediate/Personal-Skills/02-How to be Widely Trusted.md

First line should read "To be trusted you must be trustworthy. You must also be visible. If no one knows about you, no trust will be invested in. Rather "To be trusted you must be trustworthy. You must also be visible. If know one knows about you, no trust will be invested in "

Love your stuff guys 👍 :)

For what is worth..

If not, then delete this issue-comment.

Change the title to HowToBeAnEmployee or even HowToBeAnEmployeeInCompaniesWithLargeGlassWallsForWhichThereAreNoPeopleButEitherResourcesOrClients

07-How to Use Source Code Control.md

Should there be a small note here that these systems are also called version control systems since this is in the beginner section and a beginner could be confused by the different naming conventions?

Its not that hard

You don't need this much explanation for this xD, i cant stop laughing. I can tell 5 steps to be a programmer

1. Get familiar with a code editor
2. Learn a basic language fully if it's hard schedule it
3. Do a project yourself
4. Go outside 
5. Brag your a programmer

Add some examples

This repository is a good idea ! I think you should add some examples to illustrate each chapters.

Learn

Give me some tips to gain an knowledge in the basics of programming that you know. Stay tuned !!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.