CodeRetreat events are awesome! I have attended and facilitated quite a few over the past years and it is always great fun.
I would love to see some other kind of retreat coming up though. A retreat were very experienced software craftsmen share their techniques with other crafters.
In this retreat each attending crafter would present her technique to the group in about 25 minutes and then the rest of the group would practice that technique for another 25 minutes. Each attending crafter would have to present a technique and also learn from the other crafters attending their techniques.
As a bonus (because I am a castle lover) the setting of this retreat would be an old European castle.
Learning and practicing different skills is something that motivates me. It keeps me going and doing things.
In today’s society we focus a lot on teaching, but fail to create an environment of learning. That is we show our children at school that they need to pass exams and learn from what they get taught at school instead of focusing on igniting their passion so that they embark a life of perpetual learning.
I would love to create a university where you can ask for the class you would love to attend, the time you have available, how many people you’d like to have with you in class and ultimately how much you are prepared to pay for it.
Then the so called university would seek out the most suited teacher and start classes for you and the people who choose to learn with you.
As a bonus you would be able to give a fellow student who helped you during class part of the money you paid for the course.
The Software Craftsmanship movement is sometimes seen as an elitist (in the bad way of the word) buch of people that are separating themselves from the rest of the software development community. Others say that we are very serious and not close to the people.
This is simply not true.
Most people saying these things have actually never really tried to talk to anyone (this I don’t know as a fact, but knowing how the people that I admire are) and just assume, from within their own positions how some people are.
Today’s idea is to create Software Craftsmanship apparel that is funny and sends some message. Like t-shirts similar to the ones in ThinkGeek with funny quotes or imagery on them.
I actually have a few great t-shirt ideas, so maybe, we at path11, will actually do something like this :)
Happy Sunday everyone!
Today it is a little late for posting my idea. I wanted to do it after taking a shower this morning, but I got caught up in some serious prototyping of a new product we want to launch in path11.
I a good friend of mine (and path11er), Raquel, is totally obsessed with her squash lessons. She will tell you what she did wrong during class, and how that move should be done, etc, etc.
Given I am not a squash expert (LOL) I was thinking that it would be great to have sport apparel (shirts, pants and all the shebang) with sensors attached to them. Obviously these would have to be really small (possibly the thickness of the fabric). The sensors would capture your moves and measure the correctness of them given the activity you are doing.
Later on you would be able to analyze what you have done in your training session and the analysis program would give you advice and routines to improve the next time.
As a bonus the improvinator would give you real time advice while you are in the middle of your training session.
So imagine the situation, you have this idea and you would like to make a business out of it. The first thing you do is prepare a business plan and some sort of market research to see if that idea will be accepted in a market that doesn’t know anything about that idea you have or that it needs it. Once you have done that you go and try talking to investors to get some money to get that idea going, right?
Wrong! (I would not give you my money)
So the idea is to make a one week event in which you will have people with ideas pitch these to you first.
Then the team (which is made of good software craftsmen with development and business knowledge) will select the nicest idea; the one that seems, based on their experience to be the one with the best chances to catch on in the market.
Once a group is selected they will form a team and work for one week on the idea to get the prototype out there in the market to validate that idea.
The most important part of your business is not the business plan; you have to have a product or service that is working, so that people and investors can play with it and you can start validating the idea as fast as you can.
Some pieces of software (programs and libraries) can be considered the particular masterpiece a craftsman has done. Those are those projects they did in their non-paying, non-working time (I use these terms as I don’t believe there is such a thing as free time), maybe with special care or love, but for sure trying to solve a problem or scratch an itch.
Usually I learn quite a bit when I look at the code of people who’s work I admire. This takes some time though, as I spend a lot of time then looking into open repositories looking out for these pieces of workmanship.
I would love to have a place where, known to be good, craftsmen would place their masterpieces. I am not talking about a repository for these. I am talking about a place where you will find some guidance of particular interesting parts of the code. A place where you can comment on the code and see the comments of others.
Many of us work with some form of kanban board that is adapted to our peculiar process. And I would go as far as to say that most of us use some sort of digital incarnation of such a board.
One thing we all do when we plan stories is to estimate these in one way or another (story points, etc). And that’s about what we do. The estimates are given, we work, finish, give new estimates about new work… and on and on it goes
We adapt, based on our experience those estimates, but it remains something of a gut feeling based on previous experiences. This is great! But it is also known that our brain rewrites those memories over and over, so sometimes basing estimations on our past experience can be a tricky thing… but that is a story for a different post…
So the idea is to have a kanban board that actually learns from your past estimates and gives a suggestion on what you should estimate, based on what you said on previous stories.
There are a lot of different typing games and tools out there that will help you to learn the basics of typing, improve your accuracy and speed, etc.
One thing that strikes me though is that they are somewhat inconsistent. Not that they are worse or better in absolute terms, but it seems that some help me somehow better to improve my typing and others don’t.
I would love a typing engine that has the right exercises, but that can be skinned with different themes. That is, if i just like seeing a screen with letters (or words) passing by, then I would have that, but if I like killing zombies, I could do the same.
The idea is, that even though the experience on the surface would be different (it’s not the same to type words on a dull screen than to kill zombies), the learning experience would stay the same.
The engine would be obviously open source and could be wrapped in any sort of game we would like to present to the learner.
The software development community, specially the one we belong to (the software craftsmanship community) is a very small community of professionals.
Sometimes we don’t exactly remember from whom we learned which technique or way of working and the roots of that knowledge, of that discovery, get lost in time.
I would love to have a place where, like in a family tree I could see who has learned what from whom. This way, for instance if I pair with Corey Haines and I realize that J.B. Rainsberger has had a great influence in his style for naming and refactoring I can try and contact Joe to see if there is a chance that I can learn that skill from him.
This place (or app) would not give any clue on how good you learned what you did, but only a way to see from whom you learned.
It should also offer the possibility of (at least) two ways of relations; direct (you actually paired with that person and she agrees that that is true) or indirect (you have read a book, article, etc that influenced your style).
In the cities of the ancient Greece there was a central place where people would share and learn about almost anything (athletics, philosophy, politics, etc);
In our modern times some people have spaces to share ideas, to talk about their itches or learn. Now a days these places are confined to local user groups and events (such as conferences and gatherings). They have become componentized and special.
I would love to see places emerging in different cities in the world where we would start sharing more. Unlike local user groups, the agora should be a place that welcomes everyone that wants to learn or share something. And unlike an event, it should be a place that is open all the time.
We humans are in an age where our creativity is going to dictate how we will shape our future, there are many things in life that affect us, that we don’t know, or that we want to learn. With this space we would be able to make this creative jump.
As a bonus the agora would make it paramount to include all the age groups in our society so that the younger folk could learn from the old. It should be this central place where we leave our egos behind and open ourselves to the knowledge and sharing of ideas.
If you have you already know the amount of things you learn during a CodeRetreat. It is incredible the amount of programming tips and tricks (let’s call them gems) that, if you lookout for them, you will learn from it.
Now, when programming we are faced with choices, what datastructure would be best here, is there a better sorting algorithm for this, etc.
I would love to see someone organize a retreat where the main focus would be learning more about data structures and algorithms (maybe even in different events).