Today I learned Bamboo and it's concepts a bit and thought I will share with you all. First of all Bamboo is part of the Atlassian suite of tools, which can be used to run continuous builds, and continuous deployments. If you want to learn about these terms take a look into this post. I looked into videos and blogs and Atlassian Bamboo documentation to understand what it is. But I guess I did them too early before even I used Bamboo. What ?No, what I did is right ? wrong ? Doesn't matter at all ? Let's discuss.
For the busy reader
Rather then trying to learn Bamboo from videos, training, the documentation you download the installation available from Atlassian website and install in your machine, and setup a job, deployment and get wet with the options in Bamboo. That works, really works. Besides have someone who can give a precise 30 minute rapid walkthrough, which really helps.
The science of learning a Concept Vs Tooling
This is one dilemma I keep getting all the time. How should you learn a concept and how should you learn a tool. Learning a concept you listen as much as you can and read as much as you can and try to do as much as you can so you understand the concept and master it. But when it comes to a tool , the following philosophy always worked for me.
To learn a tool you first do as much as you can, then debug as much as you can, read as much as you can and watch videos as much as you can.
In both the learning you go through all the phases, but the order differs. Why ? Consider the following graph
Learning a theoretical concept (e.x. Bellman-Ford Algorithm)
When you are about to learn a algorithm, you don't go to the computer and start typing void main(). Don't you ? Because learning an algorithm involves understanding it's purpose and intent, before you do anything useful with it. That is why we spend a lot of time upfront (as shown in the graph) to learn the algorithm, then start implementing it. But the expertise here comes only when you implement it. Till then it's a potential knowledge sitting in your head, that can be applied.
Now let's come to the part of learning development tools. In contrast this involves using the the tool as much as you can, exploit it's options as much as you can, then read about it, understand the science behind it. Consider the following graph.
Learning a tool (e.x. Atlassian Bamboo)
As shown in the graph, knowledge about a tool is more important and it comes by using it as much as possible. This is exactly what I did with Atlassian Bamboo. But the downfall with most of the developers is that we tend to stop with the "Do things" phase. But what really is needed to master the tool, when it comes to resolving issues with it is the scientific understanding of the tool and its internal workings. This helps, I mean really helps. Also the conceptual understanding of the tool helps to use/implement it effectively.
Have a good time learning :-)