Coding Bootcamp Week 1: ALPHA Camp (Singapore)
And so I begin my journey into the world of programming. I have contemplated on this decision for awhile and finally decided to take a leap of faith into the relative unknown. We’ll see what happens. But for now, I am hopeful.
I enrolled in a 3-months coding bootcamp at ALPHA Camp. The first week at ALPHA camp was an eventful one: meeting awesome classmates from diverse backgrounds, all self-driven to learn to code. It was really nice to be able to thrive and learn in such an environment. The instructors were clear and detailed and the staff at ALPHA camp were all friendly and helpful.
As part of our curriculum, we have to create a blog to journal our learning on a weekly basis. This serves to allow us to reflect and consolidate our learnings. We were advised to adopt an ORID structure. Objective, Reflective, Interpretive, Decisional.
1. Objective: What did you do this week?
First things first: Setting up our laptops to install Ruby on Rails.
Ruby will be the programming language covered in this bootcamp. We jumped right into learning the language on the very first week. Bootcamp materials were given to watch and read to kickstart our learning. Being completely new to Ruby, I spent the entire week trying to digest information from reading, watching and doing Ruby exercises.
What I love about Ruby is how clean it is without much of the colon/semi-colons/brackets etc which is required for other languages. It’s also easy to understand since most of the code you read and write is much closer to English than other programming languages.
The assignment for the first week was a set of Leetcode exercises which were tough at first glance but doable with trusty help from Google, DevDocs and useful gems. Gems are gems indeed (pun intended).
The instructor introduced Codewars and encouraged us to do a 1–2 challenges each day to train our programming muscles. Tried it and it’s fun! But it gets progressively more difficult each time you level up.
2. Reflective: How did you feel this week?
Hopeful. Excited. Empowered. A little confused. A good sort of stress.
Prior to the bootcamp, I’ve set some expectations about this new journey. Coming from a completely different background (Pharmacy), I suppose learning to code will be one of the harder things I am attempting to learn. I need to pick up a brand new skill. Not only that, I have to learn to think in an entirely different way. I guess it’s only normal to be confused and frustrated, and even expected. I know it takes time. The quickest way to be stressed as a programmer-in-training is to expect instant understanding, instant improvement, and instant results. I am making peace with the fact that the journey before me will be long and arduous.
But it’s okay so as long as I don’t give up. I’ve got this :) #slowlybutSHERly
3. Interpretive: What did you learn this week?
First off, we learnt how to think as a programmer. Aka Computational Thinking. “Computational thinking is the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computer can effectively carry out.”
A complex problem is one that, at first glance, we do not have the answers to. What we can do would be to break down this complex problem into smaller more manageable problems (decomposition). Each of these smaller problems can then be looked at individually, considering how similar problems have been solved previously (pattern recognition) and focusing only on the important details, while ignoring irrelevant information (abstraction). Next, simple steps or rules to solve each of the smaller problems can be designed (algorithms). Finally, these simple steps or rules are used to program a computer to help solve the complex problem in the best way.
It’s been fun learning Ruby so far. I’ve been reading up on the basics but incorporating what I’ve learnt to problem solve requires constant practice.
Command Line Interface
Learning basic command line interface commands. I was initially intimidated (lesser now) as navigating from the command line looks seemingly difficult. But I know that by having a basic concept of the commonly used commands and shortcuts, it would enable me to save time and increase productivity. So I’m determined to master it (at least the basics).
So, the Terminal resides in the Utilities folder on a Mac and is ready to accept commands as soon as it is opened.
While the abilities of the command line can be quite vast, there are some basic commands and shortcuts you will find yourself needing and using regularly.
Git and Github
I learnt that Git is not Github. Git is a piece of software that you install locally on your computer which manages version control. Git has commands that allows one to
pull changes to other collaborators. Whereas Github is an open-source shared repository to store working directories — aka repositories (literally a hub for Git repositories). Git and Github are independent of each other. In fact, instead of Github, you could even use other Git hosting services available like Bitbucket. That being said, Github is the most widely used Git hosting service as it has a large community of users sharing code and interacting.
GitHub bring all of the benefits of a decentralized version control system (VCS) to a centralized service. GitHub also stores a copy of your project’s repository just like any other developer. Then, you basically designate that as the project’s central repository and all the developers push and pull their changes to and from that repository.
GitHub also allows developers to fork a project’s repository and then use that as their own centralized repository. From there they can send “pull requests” to the main project with their changes and then the project maintainers can review them before deciding whether to include them in their project or not. This makes it easy to contribute and collaborate on open source projects.
4. Decisional: What are you going to do next week?
- Continue with learning Ruby
- Build a Tic-Tac-Toe game based on Ruby :)
- HTML and CSS
It’s gonna be fun:)