Forgot your password?
Programming Idle

What Are the Genuinely Useful Ideas In Programming? 598

Posted by Unknown Lamer
from the lattices-are-pretty-cool dept.
Hugh Pickens DOT Com writes "Computer Scientist Daniel Lemire has had an interesting discussion going on at his site about the ideas in software that are universally recognized as useful. 'Let me put it this way: if you were to meet a master of software programming, what are you absolutely sure he will recommend to a kid who wants to become a programmer?' Lemire's list currently includes structured programming; Unix and its corresponding philosophy; database transactions; the 'relational database;' the graphical user interface; software testing; the most basic data structures (the heap, the hash table, and trees) and a handful of basic algorithms such as quicksort; public-key encryption and cryptographic hashing; high-level programming and typing; and version control. 'Maybe you feel that functional and object-oriented programming are essential. Maybe you think that I should include complexity analysis, JavaScript, XML, or garbage collection. One can have endless debates but I am trying to narrow it down to an uncontroversial list.' Inspired by Lemire, Philip Reames has come up with his own list of 'Things every practicing software engineer should aim to know.'"
This discussion has been archived. No new comments can be posted.

What Are the Genuinely Useful Ideas In Programming?

Comments Filter:
  • by gentryx (759438) * on Tuesday October 08, 2013 @12:34AM (#45066617) Homepage Journal

    Exactly. Code Complete is a great book. I liked The Pragmatic Programmer -- from Journeyman to Master [] even better. It's slightly more meta, but the tips inside are really universa.

    Some are even applicable beyond software engineering, e.g. "don't repeat yourself" (i.e. don't have two versions of the same information (e.g. your source in your repository and its documentation on your website) stored in two different places because the probability that over the time both will diverge equals 1. It's better to make one the master copy and derive the other from it.) I recommend this book to all my students.

  • Re:databases (Score:5, Interesting)

    by reluctantjoiner (2486248) on Tuesday October 08, 2013 @12:50AM (#45066691) Homepage
    Surely any programmer ought to know the underlying principles that make databases work (ie ACID etc) even if they never intend to go anywhere near multi threading. Even in single threaded programs knowing what and how ACID works can help. Have you never done a write() and wondered where the data you sent to disk went?

    Perhaps the relational calculus might not be strictly necessary, however if knowing the theory behind relations helps engineers from naively treating databases as data garbage dumps, it'd be worth it.
  • by SuperKendall (25149) on Tuesday October 08, 2013 @01:12AM (#45066775)

    Half of those things are NOT things I would "recommend to a kid who wants to become a programmer".

    Version control, UNIX philosophy, software testing - it's too much! Someone who wants to be a programmer should start to learn programming first, and then they can explore the wild twists and ideas that surround the thing once they have a grasp of what programing means to them.

    I would say even starting languages to recommend depend on the person. If a programmer likes some languages and not others later in life, why should that not be true from day one because of how they like to think? What if you are recommending a language that will turn them off programming forever?

    It would almost be best to develop a kind of programming sandbox, that would let them use a variety of languages and concepts (like functional or OO or even, yes, procedural!) and see the path they take most naturally.

  • by narcc (412956) on Tuesday October 08, 2013 @02:21AM (#45067109) Journal

    I was with you until the last paragraph.

    How about we point beginners to a simple imperative language with an interactive mode? Pack it with simple but interesting games they can understand and modify.

    You know, the same stuff we had when we were kids. It sure beats the shit we're giving them now.

  • Re:Code Comments (Score:2, Interesting)

    by gnasher719 (869701) on Tuesday October 08, 2013 @03:45AM (#45067455)

    I would also _proper_ naming of variables, not everything abbreviated without any vowels that won't make any sense in 6 months.

    That's where the importance of typing comes in. Every programmer should take a typewriting course. Makes them a ten times better programmer if you don't have to use abbreviations and avoid commenting because typing takes you too long.

  • Re:Foundation (Score:5, Interesting)

    by TheRaven64 (641858) on Tuesday October 08, 2013 @07:16AM (#45068291) Journal
    No, I'm saying that learning to program microcontrollers teaches you how to program microcontrollers. If that's your goal, it's fine, but it's disingenuous to claim that it's a good way of teaching a transferable skill. But if you've got any more straw men, feel free to throw them out there.

What is wanted is not the will to believe, but the will to find out, which is the exact opposite. -- Bertrand Russell, "Skeptical Essays", 1928