5 Free E-Books on Scrum and Agile Testing

For teams that do creative work, Scrum has become a popular management framework to help improve team focus and provide a disciplined pattern for continuous improvement.  Working with teams that use agile/scrum, it has been fun to see how the leadership and meeting patterns in scrum help improve positive communication in the organization.    I don’t present Scrum to you as “THE” perfect solution for running your projects.   No project management framework is perfect.   I,however, do believe that Scrum helps your team and organization discover ways to improve together.     As Ken Schwaber would note, Scrum has just enough structure to help your team start the continuous improvement process.

To help support some of my friends who are just getting started with Agile development,  I wanted to collect together a few free e-books that review Scrum, Kanban, and the engineering test practices linked to agile.    As I continue to improve my thinking around agile leadership, I believe it’s important to help our teams learn how to engineer software so that it’s easy to test and change.    Creating software that’s easy to test and change starts with thoughtful design.      

InspiredToEducate.NET Posts 

Visionary Kickstarter Projects to Inspire Future Makers

piBot

Pi-Bot: The Next Great Tool for Learning Arduino Robotics! The Pi-Bot is a uniquely designed (and affordable!) complete robot kit for anyone interested in building and programming robots!   Please consider supporting this team of college students supporting STEM education through their robotics innovation.  It looks really cool.

AgIC Print – Printing circuit boards with home printers AgIC transforms a home printer into a circuit board manufacturing equipment. The fastest and cheapest way to print circuits.

ScratchJr: Coding for Young Kids : Coding is the new literacy. With ScratchJr, young children (ages 5-7) learn to program their own interactive stories and games.

The MicrobeScope: The MicrobeScope, a powerful pocket-sized microscope, reveals the hidden world of microbes and shares video via iPhone compatibility.

 

InspiredToEducate.NET Posts 

 

Join the National Day of Civic Hacking

Hack For Change

Are you a programmer, community leader, or designer wanting to make a difference?  Mark your calendars for May 31 – June 1, 2014 for the National Day of Civic Hacking, a fun weekend of community service using design, programming and technology.  Whether you’re a novice or expert, all are welcome!

 

Why Join the Civic Hacking Day

  • Contribute to Your Community: The news is filled with challenges and problems that face our nation, state, and local communities.   On this weekend of community service, technologists across the nation join forces to grow our communities and prototype solutions.
  • Learning by Doing:  I greatly appreciate that the “National Day of Civic Hacking” is open to everyone!  You do not need to be an expert in technology to be a part of the event.   The event is an fruitful opportunity to learn from community designers, entrepreneurs, community leaders, and programmers.   Since the event only lasts one or two days,  teams design very simple solutions to a focused challenge.   The weekend time bounds create an intense and fun learning experience. You learn innovation by doing it.
  • Network with Creative Designers, Programmers, and Leaders: Creatives love to share their craft.   The Civic Hacking Day provides an opportunity for you to get inspired by new ideas, new design techniques, novel tools, and positive social connections.
  • Gain Insight into Community Challenges: The event shines a light on civic challenges and open data.   Collaborating with other innovators in your area, you get to study of problems in your community that YOU care about.
  • Experience the Creative Process:  The 1 or 2 day time box forces teams to explore simple solutions.   Teams will need to focus on one problem, brainstorm potential solutions, prototype a solution, and pitch the idea to your peers.   This is a weekend of action and focused creativity.
My Experience
Last summer, I had the opportunity to participate in my first civic hackathon in Macon, GA.  I spent the weekend prototyping a social network site to encourage and support student entrepreneurs to design a business plan, prototype ideas, and learn by experimentation.   During the weekend of building the site, I learned a lot with my team.  ( check out this post for more details )   It was fun building a social network.   We, however, struggled with keeping our idea focused and communicating the vision.   After supporting the community site with blog posts for months, I decided to pivot the idea for the community site.   While business minded high school and college students exist, these students are a very small minority.   I still believe that it’s important to give hope to high school and college students.   I’m still troubled when some of my young friends graduate from school and struggle to find work.   My personal goal was to give students inspiration and help them discover that they have options.  So, In the spirit of the lean startup, we created a minimum viable product(MVP), we tested it, and I learned lots of lessons.  

As I reflect upon the past year, I feel like I’m still accomplishing the vision of Changella website by mentoring our local Mercer University Google Developer Group.   I love teaching the craft of software and web development.   It has been fun to challenge our group to think about software as a means of positive change.   Technology is not an end.

 

How Do I Get Involved?

To learn more about the event get involved, visit the following website.   Events are organized across the country.

http://hackforchange.org/

What’s a Hackathon?  

InspiredToEducate.NET Posts

 

 

 

Engaging Young and Old Inventors with MakeyMakey: Re-invent the World!

Makey Makey

As artists and makers, we enjoy the process of creating something new from something old or familiar.   The Makey Makey makes this possible.   Makey makey is a USB device for your Mac or PC enabling makers of all ages to experiment with human computer interaction and inventing.   The Makey makey interface enables you to design playful circuits and switches.   Our family just received our device last night and the kids LOVE it!   The following video describes the Makey makey in great detail with example experiments.

On our first evening with the device, we built the following experiences:

  • Tin Foil Target: Using two pieces of tin foil, we created a really simple target.   We connected the “earth/ground” wire to one piece of tin foil.   We connected the other tin foil piece to the space bar trigger.   Using Scratch, we created a simple program that mades cat noise when the user pressed space bar.  We suspended the pieces of tin foil so that they had a slight gap between them.   When the tin foil touches by the boys throwing balls at it, the computer triggers the cat sound.   This was a big hit with the kids.
  • Spoon Piano: Using the online piano on MakeyMakey.com, we constructed a musical experience using 5 spoons.
  • Spoon Drumkit: Using Scratch and spoons, we created a small drum kit. 
  • Play-Doh controlled Minecraft: The kids wanted to use play-doh for one of their creations.   We designed a small controller so that you can move around Minecraft.

We did all of these experiments in 2 or 3 hours of playing.  It was tons of fun for me and the kids.   We’re looking forward to doing more tinkering!  Looking for more project ideas, check out the MakeyMakey website.

Why does this Programmer Enjoy Learning from Teachers?

Teacher helping student

While I work as a professional software engineer and scrum master, I have become passionate about creating environments of learning and becoming better as a teacher. While some of my geek or software buddies believe that I’m weird, I believe that my internal drive to learn more about education and learning is meaningful. For our readers, I wanted to share a few quick reflections regarding the impact of my study of great teachers and leaders.

1. My wife is a teacher: My wife Dr. Sarah Rosario works as a college professor teaching biology and microbiology.    At the Rosario dinner table, it’s common for us to share the high and low points of our day.    It’s really hard for us to avoid the topic of education since Sarah is growing young minds in college daily.   It’s great to hear Sarah connect with her students and help them grow.   It’s difficult to hear the times that her students let her down.   Sarah works REALLY hard to grow her students and create success for her students.  I guess… I study education technology and learning to help support my wife in her career.

2.  I’m a Dad. Teaching is my job: We have wonderful kids.   We have been blessed with good teachers in our schools so far.   As I study blogs on educational technology,  I am often reminded of my core responsibility to be a teacher to my kids.   As I have studied the book “Invent to Learn”, Makers movement in education, and project based learning, it has been fun to apply some of these ideas with my family.   Sarah is really good at getting the family to be outside and connect with learning in nature.   As parents, we are trying to grow as teachers.

3. Teaching gives me joy:  It’s one thing to write a cool piece of software and get it working.   It’s completely AWESOME when I see my team members growing, learning, and succeeding in writing well crafted software or using Scrum.    It’s cool to see junior team members take small “nuggets” of programming techniques I’ve taught them and see them teaching others.  Teaching creates more teachers.

4. Learning creates change: During a financial peace class, my wife and I got this precious tip from Dave Ramsey: Do business with people who have the “heart of a teacher.”   For some reason, that advice really stuck with me.   That phrase inspired me to make teaching a central strategy for growing success for my team and our communities.   It has been fun to coordinate a small professional learning group at work to help us become more innovative and serve our communities more.
( Check out this blog post on the book club) We are discovering that excellence in learning leads to excellence in culture.

5. Technology does not guarantee learning: In agile culture, we have a wonderful phrase: “People are more important than processes and tools.”   As I have studied teachers adopting educational technology, this insight is very clear and repeated.    Even if you give your students the best mobile devices and apps, I does not mean that your students will grow and learn.    It has been fun to study how great teachers plan,  give selflessly, organize games, and environments where students can have personalized learning and coach their students to move forward.

6. Machine Learning:  One of my hero’s from the machine learning research community is Sebastian Thrun.   His research team at Stanford won the DARPA grand challenge for driving an autonomous car across a desert maze.   This was an amazing scientific achievement in computer science.   I’ve noticed that people who love machine learning also love human learning.   Mr. Thrun has been a key leader in building UDacity , a start-up seeking to democratize higher education.     I love machine learning as well.  I think it has been important for me to study the learning of children to help focus my thinking in machine learning research.

7.  I am thankful:  I have been VERY blessed by my parents and my teachers.    The blessing of great education from my teachers and parents is a debt that I can never repay.   I hope that the small little lessons that I share on InspiredToEducate.NET help me pay forward the gifts given to me.   Perhaps a small lesson in leadership might transform a business.   Perhaps a young adult discovers a new career direction by learning how to code.   Perhaps a teacher discovers a new way to engage his or her students in learning how to learn by learning to program.

How can I help you?

The Wall Street Journal recently wrote a piece “Who Needs to Know How to Code.”  The article describes some of the benefits for kids and business executives to learn how to code.   While every business leader or kid does not need to become a developer like me, the article suggests that all people benefit from learning the thinking styles connected to coding: critical thinking, experimentation, tinkering, technical communication, etc.   By design, I would like this blog to serve anyone who wants to learn to code, design, and make.

I would like your help to focus the content of our blog.

  • What topics in code or maker education would serve your students?  What would help you as a teacher?  What would help you as a parent?  
  • What topics in learning to code would help you take your career to the next level?

 

 InspiredToEducate.NET Posts

 

 

Photo by http://www.flickr.com/photos/kathycassidy/8522478858/sizes/m/in/photostream/

Designing Software that’s Easy To Test

As programmers, we desire to create well crafted software that delights our customers.   Because we care about the long term maintainability of our code, we aspire to craft our code well.    In the ideal case, future programmers should find it easy to change our code while avoiding errors and regressions.  How do we accomplish this vision?

I wanted to share one of my favorite agile software engineering techniques: test first design.  (TFD)  In a classical model of software development, special attention for testing comes at the end of the project.    In agile culture, we aspire to test our software early and often throughout the project.   “Test first design” encourages programmers to write test cases for software units (“classes”) continuously through the life of the project.    For large software applications and games, it becomes more important to keep our software loosely coupled and easy to test.   Think about the components of your software as Lego blocks.   In the ideal case, the various components of your application should be designed to connect together.   At the same time, we should have the ability to test the behavior of each class or “lego block” in isolation.  Does each block function well?   If we snap all the blocks together, does the system behave as expected?

Software as lego blocks

In the following JavaScript code sample, I have presented a qunit test case to help introduce the idea of “test first design.”    The “MathUtil” class has a method for calculating the distance between two points.  In the “arrange” section of the code, we construct the variables and objects of the test case.    After we execute the method under test, we assert that the method “GetDistanceBetweenPoints” returned the correct answer.


test( "MathUtil__GetDistanceBetweenPoints__Success", function() {
//arrange
var util = new MathUtil();
var x1 = 0;
var y1 = 0;
var x2 = 5;
var y2 = 5;

//act
var result = util.GetDistanceBetweenPoints(x1,y1,x2,y2)

//assert
ok( result == 7.0710678118654755 );

});

Unit test frameworks exist in every computer language.   The process for test first design is pretty simple.   Write a test that fails.   After the test case compiles/parses correctly, write just enough code to make the failing test pass.    You are encouraged to write the most simple code that could possibly make the test case pass.     With test cases passing, take a little bit of time to clean up or improve the code.   That’s it!   Repeat the process as much as you like.

TDD cycle

By collecting your test cases over time, you can build a suite of test that will help you discover regressions in the system.    I love that this coding methodology helps you find semantic errors in your code quickly.   What are some other benefits of using “test first design?”   Here are just a few:

  • Find bugs early:  In general, the longer a bug remains in a code base, the more complex and expensive it will be to remove it.    “Test first design” helps you discover and remove defects early.    I don’t want to over sell this methodology.    You still need to use manual, scenario based testing, demo sessions, and peer reviews to detect and remove other classes of defects.  
  • Designing Lego blocks of working software: In test driven development (TDD), we are trying to test each method of a class in isolation.   This pattern of construction encourages us to design our software in baby steps.    The baby steps tend to be loosely coupled.
  • Documentation of behavior: TDD use cases can be used to document most of  the assumptions of a class.   It’s awesome that your test framework can document these assumptions in code and inform you of problems when the test suite is executed.
  • TDD encourages programmers to set and achieve goals:  By crafting a test case before writing production code, you are encouraging lots of good programming behaviors.    By writing a test first, your are more likely to be thoughtful regarding the naming of your methods.   You are more likely to be careful about the data getting passed into the method and how the method will return data.    TDD also encourages you to plan the behavior of the class.
In this post, we have introduced the basics of TDD and test first design.   The following video and e-book from Misko Hevery teaches you advanced concepts and tips for making your software more testable.    Misko is a thoughtful test professional from Google.    This is one of my favorite videos to help introduce TDD.  I hope you enjoy it.

InspiredToEducate.NET Posts

 

 

 

10+ Lessons To Help You Grow Your Skills as a Developer

Coding Dojo

The Google Developer Group of Mercer University strives to teach web and mobile developers about the various tools Google has available to help create great products more efficiently.  GDG Macon also helps technology students at Mercer University meet developers from the local community and provide community building for Middle Georgia IT professionals.

We have had a lot of fun building community and learning together in 2013 and 2014.  Just in case you missed all the action, we’ve collected many of the lessons from our sessions.   We hope the content serves you in growing your skills as a technology professional.

Fall 2013
Connecting Your Favorite Google Services Using Google App Script

Building Web Apps at Google Scale – Introduction To AppEngine

Finding Common Interests in Community Challenges and Hack-a-thons

Review of Tools for Android Development

Using “Coding Dojo” to Engage Learners and Have Fun

Ignite Talks on HTML5 – Lots of Learning in 5 minutes

Introduction HTML5 and JavaScript using Games

Spring 2014

Easy Data Visualization with Google Charts and JavaScript

Backbone.js

Introduction to Dart

Avast, Ye Pirates: Write a Web App using Dart

Coming Soon to Mercer GDG in Spring 2014