The Kitten and the Elephant

Edward Weymouth
montanacodeschool
Published in
5 min readJun 24, 2017
Elephant!

Coding is challenging. There are deep mathematical problems waiting to be solved, there are long strings of knowledge to be parsed, there is the burgeoning and exciting field of machine learning, there are games to be built and there are worlds to be created for leisure and work. There are so many paths to choose from that the path least traveled is sometimes lost amidst the yellow wood. For veteran and journeyman coders this can be challenging. For those interested in taking their first steps or those that have only recently wandered onto the path, this can be overwhelming to the point of paralysis.

There is even a term for this state of being. It’s called choice paralysis in the case of having too many choices or more generally and with more alliteration analysis paralysis. That’s a fun one, try saying it out loud: analysis paralysis.

To avoid this many seasoned coders find and fight for the solid ground of familiar tools with a deep seated intensity, taking on any challenger with a quick wit and just a sprinkling of sarcasm: There is only one way to code and that is in language x. Language y doesn’t do this, language z doesn’t do that… language x is better than all other languages. This approach is good in many ways, specializing to eliminate the fear of choice paralysis, pairing down the choices until you have only one to focus on and never looking back.

There is a problem here, which is not immediately apparent but it becomes apparent when a new coder comes into the space, and that is of course the question: what coding language should I learn? This question is asked for any number of reasons at the forefront is probably employability. What language will get me a job then is the real question, but that is of course almost entirely dependent on the employer and without the knowing the language it is going to be hard to get a job, thus the cycle continues…

It’s a good question and there really are no great answers, but you have to start somewhere and as far as non-threatening goes, textual markdown is at the top of the list. Markdown is an easily formatted text file that has some simple syntax as part of it’s functionality. If you would like to try it out there is an online markdown editor called Dillinger.

I will call you Dillinger.

Markdown isn’t really coding however, markdown is the kitten of the large, sharp-toothed apex predator world that defines most computer engineering. It might not even be a kitten, maybe it’s just the snack that the kitten ate. It’s a great place to start if you don’t know what else to do and it’s just text with a little bit of formatting, which in it’s essence is what all programing languages are before they are compiled down into the ever eventual binary.

If you are looking for a simple place to start there is nothing better than the markdown kitten and the kitten’s friend in remembrance a little higher up the chain: the Git elephant. One of the many choices of Version Control System, Git and it’s partner in crime GitHub can help you track changes in an ever expanding code base with a high degree of accuracy and almost infinity number of options for revision. Moving you seamless back and forth in time with a high level of flexibility.

Like all programming, Git can be confusing and scary. It remembers all the steps you take and can be very picky about quick movements in the wrong direction, hence the elephant 🐘. Learning Git can be challenging and challenge combined with fear can be a lethal combination. When you’ve spent four hours debugging a pesky bit of the UI and you accidentally pushed to master, this can compound quickly. Don’t worry if you’re not sure about the first part of that last sentence, you’ll get there. There is a simple thing you can do to make that elephant a bit less scary. Start playing with it’s friend the kitten. A journal entry a day in Markdown, making commits to a branch and pull those commits into master, writing your commit comments and making sure everything is up to date before you get started, these are important skills in development and they can be gained by keeping a simple daily dairy.

“Well that’s cool, but I’m still confused” you say…

Yes, you should be. Programming is confusing. Learn to enjoy it. Emotions like confusion, frustration and brief periods of pure elation will now be your good friends. Be confused, it’s totally ok, but do something anyway:

1. Sign up for a Github account, remember to think of a hilarious username

  • This step should be pretty easy, you’ve signed up for accounts before. Say hi to the Octocat for me. 🐙 + 😺 = Octocat.

2. Start a new repository, maybe call it coding-journey or captains-log

That is definitely a button.
  • This second step is actually many steps which might be a bit of a struggle. You may need some things for the journey:
  • You may use the command line or a git client
  • If you get stuck search google or reach out to your friends. Needless to say once you have your account and have created a new repository you will need to make a local repository that is tied to this remote repository. If you are on a mac, you should have git command line tools as part of your current os. If you don’t or are running ubuntu or windows you may need to install some things.

3. Make a Markdown file, for extra points use the command line

  • Now type! Type like you’ve never typed before! Done? Go to step 4.

4. Push up!

  • You will, by default start on branch master you can check which branch you are on with: git branch
  • You can see your local changes with: git status
  • You can add them to a commit with: git add -A
  • You can stage your commit with: git commit -m "a message in a string"
  • Then push them to master, which is very unlike the real world, pushing to master is generally frown upon, but whatevs, let’s live dangerously: git push origin master

4. Now let the kitten play and go learn some real coding 😉.

Have fun coding in the big sky and remember: Software development is the canvas, you are the paint.

--

--