(What is BJD?)
(How does it work?)
BJD has a short event each month where we get together in person, with our computers. This event is normally held on the weekend (Saturday), during the day (Noon). Since I work full time Monday thru Friday weekends are easier for me to schedule an event on. The weekend event helps me keep a better work / life balance.
The goal of a monthly real-life event is to get to know each other. It is much quicker and easier to share information in person. If we all have our computers then we can try things out live on our own machine, aka in our Dev Environment. If we run into issues while coding, we can bring them up on the spot. With all the developers in the room from various backgrounds we can usually figure it out. For example, I work on a Windows machine and most of my friends have Macs. This usually means we have different steps to make examples work. Meeting in real-life helps limit potential frustrations that come along with “trying” something out.
Once you come to our meetup you get an invite to join our Slack channel. This gives us a way to keep up communications during and after the event. I also think it is a great way to network with folks in the area.
BJD also has a Github repo for developers to work from or add to. The repo has an eastern philosophy theme, but the core practices described in the repo are universal to all coding. The repo is open source so anyone can fork it or make a pull request.
(Why a JS Dojo?)
BJD was created with my love of martial arts in mind. The core purpose of BJD is to practice coding every day we can. It is hard to code every day, but to set a goal with this philosophy in mind isn’t. I also wanted to make BJD fun and interactive. Martial artist should practice every day to maintain their art and improve. The artist who practice every day should improve, over time. How long should a participant practice? I leave that up to the individual. What I do know is that working to code on deadlines should not be considered practice. Practice is a space where we are allowed to experiment and make mistakes without the pressure of possibly losing our job or our clients. Within the “practice” lies the potential for growth.
One day in 2016 I made a connection between Martial Arts and Coding Practice. Once I started with this analogy, I went all the way down the rabbit hole. The way of the warrior and the way of the coder are different points on the same bridge.
The “Dao of BJD” is to become a sifu. A sifu is traditionally a skilled practitioner, or teacher, or even master of their art.
How do you become a sifu in BJD?
You start by going to a Dojo, join an event and show up for the real-life meetup. Once at the meetup you can meet other sifus. Ask questions or share your knowledge. Once you are in the Dojo you will be invited to join our Slack Channel. The head sifu of the dojo can be referred to as “Root” or “Sifu Root” followed by their dojo name. This is purely for fun. No one is actually required to use different names in, or out, of the Dojo. I ask all who are serious about the practice to create a “sifu name”. This name is how we will refer to you in code if you want. The name that is chosen must be recorded in the github “Yatate” folder. This is usually the first pull request a sifu will make when they join BJD. The yatate file will have public contact details for you. Similar to the npx business card that Tierney talked about on Twitter.
If a sifu is looking for something to practice, there is a “Katas” folder to browse for inspiration. In the Katas folder are topics divided by language, library, or style. For example you want to get stronger with Github but don’t know where to start I suggest looking at the “Github-katas.md” file for some suggestions. Each kata is given a “Position #” for easier reference. If you get stuck on the kata you can find solutions, or hints in the corresponding “Github-guide.md” file. The kata file has “no code” just challenges. The guide file has code that should be easy enough to copy and paste as a solution.
If Katas are not enough and you need a challenge, I recommend trying to get a Dojo “Belt”. Katas are a form of practice used in martial arts. A kata will usually combine many smaller techniques into one Kata. Once a martial arts practitioner has mastered a kata they can try to attain a belt signifying their level of expertise. I do a similar thing in the dojo. Sifus are allowed to gain belt ranks. The belts are designed to show a level of commitment more than a level of competency.
Some sifus seek extreme challenges. We have a “Koans” folder of coding riddles which are like developer interview questions. These are intentionally hard coding challenges. The best Koan will break down the developers pre/mis-conceptions about programming. Then through discovering a solution it should help them progress because they no longer see a challenge but a new way of thinking when faced with that same type of situation.
In the real world Sifus work on “Projects” so there is a folder for that. A place where sifus create projects that other sifus can work on too.
(Where is the dojo?)
(When is BJD?)
Practice when you have time. If you don’t have time. Take the time. Make space in your schedule while commuting or waiting in the lobby to code for a few minutes. Run through a kata. You could also schedule to be at one of the monthly events, or pair up with someone on slack if you need motivation.
(Who can participate in BJD?)
As long as you have a computer to work on you are invited to the Dojo. We are creating a collaborative space so it is crucial that you can participate if you show up. It is also crucial that we respect each other in our actions, voices, and code. We follow the JS Conf code of conduct for this purpose.
Spread the word and help us out