How to be a Programmer: A Short, Comprehensive, and Personal ...
Popularity Report
![]() |
|||
![]() |
|||
![]() |
|||
![]() |
|||
![]() |
|||
![]() |
URL Tag Cloud
Bookmark History
Saved by 242 people (-72 private), first by anonymouse user on 2006-03-02
- Karthikonly on 2009-11-06 - Tags programming , development , software , toread
- Andy-nihon on 2009-10-19 - Tags dev
- Aowongster on 2009-10-14 - Tags no_tag
- Avatarantella on 2009-09-20 - Tags programming , howto , tutorial , programmer , software
- Keithdemele on 2009-09-08 - Tags programming , SU , Tags
Public Sticky notes
Highlighted by shingonoide
Highlighted by paulswartz
Highlighted by paulswartz
The common ways of looking into the ‘innards’ of an executing program can be categorized as:
Using a debugging tool,
Printlining --- Making a temporary modification to the program, typically adding lines that print information out, and
Logging --- Creating a permanent window into the programs execution in the form of a log.
Highlighted by paulswartz
Highlighted by paulswartz
Highlighted by paulswartz
Highlighted by paulswartz
Highlighted by paulswartz
Highlighted by turbotom
Highlighted by paulswartz
Highlighted by paulswartz
The late, great Edsger Dijkstra has eloquently explained that Computer Science is not an experimental science[ExpCS] and doesn't depend on electronic computers. As he puts it referring to the 1960s[Knife],
...the harm was done: the topic became known as “computer science”---which, actually, is like referring to surgery as “knife science” --- and it was firmly implanted in people's minds that computing science is about machines and their peripheral equipment.
Highlighted by paulswartz
Highlighted by quarkonics
Highlighted by paulswartz
Highlighted by alpachino
Highlighted by daibarnes
Highlighted by buzzart
Highlighted by hunter107
Highlighted by gokukiller
Highlighted by fakturk
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Logs can provide useful information about bugs that are hard to reproduce (such as those that occur in the production environment but that cannot be reproduced in the test environment).
Logs can provide statistics and data relevant to performance, such as the time passing between statements.
When configurable, logs allow general information to be captured in order to debug unanticipated specific problems without having to modify and/or redeploy the code just to deal with those specific problems.
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Remove floating point operations.
Don't allocate new memory blocks unnecessarily.
Fold constants together.
Move I/O into a buffer.
Try not to divide.
Try not to do expensive typecasts.
Move a pointer rather than recomputing indices.
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
To learn how to design software, study the action of a mentor by being physically present when they are designing. Then study well-written pieces of software. After that, you can read some books on the latest design techniques.
Then you must do it yourself. Start with a small project. When you are finally done, consider how the design failed or succeeded and how you diverged from your original conception. They move on to larger projects, hopefully in conjunction with other people. Design is a matter of judgment that takes years to acquire. A smart programmer can learn the basics adequately in two months and can improve from there.
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Writing code knowing that someone will have to read it;
Applying the golden rule;
Choosing a solution that is straightforward, even if you could get by with another solution faster;
Sacrificing small optimizations that obfuscate the code;
Thinking about the reader and spending some of your precious time to make it easier on her; and
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller
Programmers often succumb to this because they are eager to please and not very good at saying no. There are four defenses against this:
Communicate as much as possible with everyone in the company so that no one can mislead the executives about what is going on,
Learn to estimate and schedule defensively and explicitly and give everyone visibility into what the schedule is and where it stands,
Learn to say no, and say no as a team when necessary, and
Quit if you have to.
Highlighted by gokukiller
Highlighted by gokukiller
Highlighted by gokukiller


Public Comment
on 2006-07-02 by secretgeek
on 2006-07-04 by noondesertsky
on 2006-08-02 by inetguy
on 2006-08-03 by freality
on 2006-08-12 by rogerkondrat
on 2006-10-23 by tsangal
on 2006-10-25 by slackorama
on 2006-11-26 by electracool