Kanban is a method for controlling inventory flow within a production facility.
Personal Kanban is a means for completing one’s tasks without getting too overloaded.
A whiteboard is often used to implement Personal Kanban.
Carmen references the Pragmatic podcast episodes titled “Maximum Erasability” (23 and 23a) that discuss whiteboard use. (You can also listen to our prior interview with fellow podcaster John Chidgey, who produces the Pragmatic podcast.)
We talk with civil engineer, author, and coach Anthony Fasano about steps one can take to ensure a successful engineering career.
Although Jeff’s engineering career hasn’t led to huge financial success, he considers it to have been successful, as he has gotten to work on a lot of interesting projects, and meet many fascinating people.
Intended to encourage good programming practices, Pascal gained wider acceptance as the basis for Borlands’s Turbo Pascal.
Programming in the 1970’s was not carried out at a terminal, but required punching data cards on a keypunch machine, then feeding the cards into a card reader. Yes, that huge stack of spinning “magnetic disks” at the 1:14 mark is an early hard drive.
Our guest for this episode is Greg Wilson, who is the founder and director of Software Carpentry, an outreach and training program that helps scientists and engineers be more effective by teaching them “best-practices” for software programming.
Software Carpentry seeks to reach the majority of researchers, scientists, and engineers who build “small” data projects, rather than the relatively few that work on “huge” data sets using supercomputers.
A typical Software Carpentry workshop consists of a two-day course, with blocks of instruction addressing the Unix shell, Python, version control, unit testing and SQL. The two-day workshop is often followed up with about six weeks of online instruction.
Greg says that if participants come away with nothing else, they should learn the value of version control, so that the provenance of scientific data can be tracked and analyzed.
The Software Carpentry team has found screencasts to be “a lousy way to teach,” as personal interaction is an important component of learning.
Greg has found engineers to have a bit more “hands-on” experience than scientists, and to be more MATLAB-oriented, but perceives relatively little difference in their understanding of software issues.
Considerable empirical research has been conducted about programming effectiveness, but little of this information is shared with students in college courses.
One of the most critical indicators of how well individuals can work together in a corporate programming project is not their geographical separation, or language differences, but how far apart they are in the company’s organization chart.
Pair programming is an effective method for reducing software errors, but it has an important caveat: it only keeps working if you keep shuffling the coding partners.
The single most effective way to find bugs is code review. Don’t compile the code, or run it, but have someone else read through the code. You’ll find 60-90% of the bugs in the first reading. Review Board is an open-source web-based tool designed to help in such efforts. A commercial product for this purpose is available from Smart Bear Software.
Mark Guzdial has been using “worked examples” to teach programming at Georgia Tech, and has found it to deliver more learning in less time.
A flipped classroom has students watch instructional videos for homework, and then spend class time working problems.
In a 2009 blog post, Greg talked about “real” engineers becoming more like software engineers, rather than the other way around.
Greg believes that higher quality software is possible, if the right incentives are offered to programming organizations.
Even if we can’t review code line-by-line, we can at least verify the methodology and processes used to create it.