Teaching Real-World Programming. By Philip Guo January 7, 2013 Comments (16) In this post, I describe a ubiquitous style of programming that, to my knowledge, has never been formally taught in the classroom.
In most programming classes, students write programs in a single language (e.g., Java, Python) and its standard library; they might use a well-documented third-party library for, say, graphics. Students fill in skeleton code templates provided by instructors or, at most, write a few chunks of code "from scratch. " Specifications and interfaces are clearly defined, and assignments are graded using automated test suites to verify conformance to specs. What I just described is necessary for introducing beginners to basic programming and software engineering concepts.
Over my past decade of programming, I’ve built research prototypes, extended open-source software projects, shipped products at startups, and engaged in formal software engineering practices at large companies. 1. 2. 3. 4. 5. 6. Kayur Patel -k Johannes Brauer. 11-22-11 - The Mature Programmer. 1.
The Mature Programmer The mature programmer manages their own time and productivity well. The MP knows that maintenance is as much work as the initial writing and code always takes longer than you think. The MP knows that any changes to code can introduce bugs, no matter how seemingly trivial. The MP knows that premature optimization is foolish and dangerous. When I started at Oddworld, I was watching lots of game companies get into dick-waving contests about who had the greatest home-rolled graphics engine, and I was also watching lots of indie developers spend massive amounts of time on their "one true" product and never actually ship it. But the way of the Mature Programmer can be a trap which comes back to bite you.
The problem is that writing code in this way is not very much fun. Most of us got into programming not for the end products that we create, but because the programming itself is a joy. 2. 3. One of the problems is simply the intellectual overload. Holding a Program in One's Head. August 2007 A good programmer working intensively on his own code can hold it in his mind the way a mathematician holds a problem he's working on.
Mathematicians don't answer questions by working them out on paper the way schoolchildren are taught to. They do more in their heads: they try to understand a problem space well enough that they can walk around it the way you can walk around the memory of the house you grew up in. At its best programming is the same. You hold the whole program in your head, and you can manipulate it at will. That's particularly valuable at the start of a project, because initially the most important thing is to be able to change what you're doing. Your code is your understanding of the problem you're exploring. It's not easy to get a program into your head. Even the best programmers don't always have the whole program they're working on loaded into their heads. Avoid distractions.