Using Ruby Fibers for Async I/O: NeverBlock and Revactor
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tracking change and innovation in the enterprise software development community
Posted by Derek Longmuir on Jul 03, 2008 12:49 PM
Andy Hunt’s interview last month talks about his progression from pragmatic programmer to Agile development to his latest interest – Pragmatic Wetware. Understanding how people learn and improve is an important addition to the Agilist’s toolkit.
“Wetware is the stuff in your head. That’s the thing between your ears that’s really where all the action is – that’s where all the software development actually takes place. It doesn’t take place in an IDE, you don’t write software in an editor – software is developed in your head, and in the heads of your team members, and that’s really where the game is happening.”
In the podcast, Andy discusses how software development is a mental activity – thinking about solving problems – and comments on how developers can do it better. He is putting the finishing touches on a book covering these topics and more: Pragmatic Thinking and Learning: Refactor Your Wetware, which is currenty in Beta at the Pragmatic Programmers website.
Why is this important to Agile practitioners? One of the foundations of Agile is feedback and improvement. There can be improvements at the practical level, including practices to follow, rules, and guidelines. The next level after that is improving how people think: making them better problem solvers, increasing their creativity, and introducing a shift in how they approach the problems as they progress from a novice viewpoint to an expert viewpoint. Just as incorporating feedback from retrospectives on practices and processes is important to the team, an individual’s ability to re-adjust and re-tune their thinking as they build their skills in a certain area is also important.
Introducing the Agile practices and teaching the team is also a first step towards a team adopting Agile. Andy says that there are better ways to learn new skills than the usual “get the book and play with it” approach followed by most developers. He mentions “deliberate learning” as a pragmatic approach for people to learn faster, easier and with higher retention. While he doesn’t go into specifics, it sounds like it could be a valuable addition to the Agilist’s toolkit.
Andy also discusses how certain activities can activate different areas of the brain, including doodling, verbalizing vs. writing or saying it in your head, Mind Maps and how sometimes stepping away from the keyboard can be the best way to gain insight into solving a problem. This might be an explanation for some of the effectiveness of many of the Agile processes and how they use different senses and parts of the brain – an emphasis on communication and talking, a focus on whiteboards and drawing, and even the practice of using index cards and moving them around.
To learn more, listen to the podcast at the Pragmatic Programmer’s Pragmatic Podcasts and check out the book’s site for the full table of contents and sample chapter.The Agile Business Analyst: Skills and Techniques needed for Agile
Agile Metrics Tracking and Mingle Podcast + Transcript
The End of Middleware: Freedom from IT Stacks as we know it
Gamma's Jazz platform's first implementation: Rational Team Concert (Trial Download)
I am currently having great pleasure reading it.
How to refactor our "old" own brain in order to better live with this ocean of digital knowledge that surrounds us ?
This book gives some theoretical answers, and provides a lot of practical technics and tips.
I am sometimes ashamed of not being fond of complex tools, and prefer draw things on real paper. But one of the things I learned in this book is that I shouldn't be ;-)
Software is not designed in an IDE or other tool
IMHO (and as suggested in the article), it is a must read for anyone interested in why Agile methods work in software development
Thanks Andy !
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
1 comment
Reply