background preloader

Development Methodologies

Facebook Twitter

Literate programming. Back in the 1970s Donald Knuth, yes THE Donald Knuth, came up with the idea of literate programming. The simple idea was that research, or exploratory research really, should not be bound by the sequential nature required by compilers. Plainly put researchers should write their explorations, insights and code in a way that make it easy for other people to read and follow. Sounds OK, maybe a bit strange but why isn't it common for people to structure their work this way?

When you are doing reasonably well as a programmer a lot of times you try to get into "the zone", this "I know what I am doing, don't try to stand between me and the keyboard" attitude to problem solving. The scary thing is the more of my code I treat this way the more I see that when I am in the zone I am not that good. LP definitively changed my view on that. OK that sounds like a great way of communicating with a collaborator and tackling a problem together. So why keep using LP?

Literate Programming? Oh, what a tangled web we weave... Many moons ago (The year 1984 if you want to get specific), Donald Knuth documented the idea of Literate Programming. Well, he did more than document it. He concocted software to support it, and applied the technique to his development of TeX. While researching this topic, I found a page that offers some insight that rings true with me: Literate programming, however, is not a mainstream technique. So, with some spare time on my hands, my mind has once again turned to trying to reach a level of comfort where I feel I've mastered Python. So I was thinking about this and it occurred to me that this is quite similar, I think, to the intent of Literate Programming.

Python literate programming and Bam! The providers of PyLit, another Python Literate Programming tool have provided a web page that is somewhat biased, I believe, towards PyLit, but that provides an overview of other Literate Programming tools for comparison. Python language basics. The Universal Troubleshooting Process. Troubleshooters.Com® Presents: The Universal Troubleshooting Process (UTP) Systematic Troubleshooting and Debugging Copyright © 1996-2014 by Steve Litt Important Note: In 2005, the term General Maintenance was replaced with Corrective Maintenance, which better describes the purpose of the maintenance. These terms are synonomous, so you can use either term, but courseware updated in 2005 and later uses the term Corrective Maintenance. Money, influence and reputation. These are the benefits accruing to the expert Troubleshooter, or the manager whose people troubleshoot quickly and accurately. Money I'm not saying that if you double your troubleshooting productivity you'll double your salary.

Use Al and Bob as an example. Imagine that in year 5 there's a recession. The preceding example detailed the monetary reward for a technologist. If your department troubleshoots effectively, they'll solve problems quickly. Influence Reputation An ex client called me. Brand Happiness Let's say you're single. Programmer Interrupted. I’m writing this post in an apt state: low-sleep, busy, disorientated, and interrupted. I try all the remedies: Pomodoro, working in coffee shops, headphones, and avoiding work until being distraction free in the late night.

But it is only so long before interruption finds a way to pierce my protective bubble. Like you, I am programmer, interrupted. Unfortunately, our understanding of interruption and remedies for them are not too far from homeopathic cures and bloodletting leeches. But what is the evidence and what can we do about it? Every few months I still see programmers who are asked to not use headphones during work hours or are interrupted by meetings too frequently but have little defense against these claims.

The costs of interruptions have been studied in office environments. For programmers, there is less evidence of the effects and prevalence of interruptions. Interruptions of Programmers We also looked at some of the ways programmers coped with interruption: Attentive Memory. Analysis & Design Methodologies. Resilience Engineering: Learning to Embrace Failure. Case Studies Multicore Performance File Systems and Storage RIA Development Making the Move to AJAX What a software-as-a-service provider learned from using an AJAX framework for RIA development Queue on Reddit GameDay Exercises Case Study It's very nearly the holiday shopping season and something is very wrong at a data center handling transactions for one of the largest online retail operations in the country.

The good news is that it's not a real disaster—though it could have been. Many operations are turning to resilience engineering not in hopes of becoming impervious to failure, but rather to become better able to adapt to it when it occurs. In the early 2000s, Amazon created GameDay, a program designed to increase resilience by purposely injecting major failures into critical systems semi-regularly to discover flaws and subtle dependencies. Participants include Jesse Robbins, the architect of GameDay at Amazon, where he was officially called the Master of Disaster.

How are Lean, Agile, and Devops related to each other? You hear a lot about various agile approaches. Things like Lean, Scrum, Kanban, and Devops seem to be important but it’s hard to sort them out. How do they relate to each other and where to start? Let me try to structure these ideas for you. Lean is the basis of Agile Lean tells you to optimize the end-to-end process which creates value for your customer – from the initial idea to collecting cash.

Lean principles focus on flow more than anything else: bottlenecks in the process must be removed and wasteful activities need to be identified and avoided. Build product development flow on top of Lean Creating value for your customers is all about finding and verifying product ideas, implementing these ideas, and running them to benefit your users. The three aspects of product development flow Lean Startup or Running Lean: here Eric Ries and Ash Maurya talk about how to create a learning cycle during feature discovery. Lean principles are the basis of your entire product development flow.

DevOps

Code Reviews. Agile. Scrum. Coding.