After finishing up the first week at Launch Academy, I find that I am starting to “think like a programmer”. A lot of this is a result of the various ways that my familiarity and confidence has been built up regarding different aspects of software development.
Command Line Comfortability
I’d always heard that the command line was a powerful tool, but never really knew where to get started with using it. Trying out a few commands, I never really saw the benefit over using a graphical file navigation tool.
After a week of forcing myself to use the command line, I am getting used to the speed and power it can bring. Creating and running files using the CLI (command line interface) feels so natural and intuitive.
On a related note, I’m finding error messages much less cryptic, and actually using them to track down bugs based on the location of the problem and the error type. It’s no fun runing into errors, but the faster you can identify and resolve them, the better.
Pair programming was a new concept to me going in, but I’m starting to see the benefits. “Two heads are better than one,” as the old saying goes. It may seem counter-intuitive at first, but it allows one person to focus on the coding, while the other looks at the “big picture”.
I’ve also found it very beneficial to talk with others after completing a program to see how we approached it differently. I’ve found walking someone else through my code helps me understand what I did, and can point out areas where I don’t have a full grasp of why something works how it does.
Additionally, it’s helpful to have others available for a quick quesiton I’m making an effort to take advantage of having a large pool of individuals, all sharing a common goal.
There are known knowns; there are things we know that we know. There are known unknowns; that is to say, there are things that we now know we don’t know. But there are also unknown unknowns – there are things we do not know we don’t know.
The above quote from Donald Rumsfeld, while convoluted, calls attention to the idea of “known unknowns”. While it was heavily mocked, I think it highlights the importance of being self-aware in your knowledge.
In the past I’ve had trouble accepting that I didn’t understand something right away. I may get hung up on a small detail, which distracts me from moving on, or I could find myself trying to learn all aspects of a new topic and becoming overwhelmed.
With programming, there are often examples you’ll see code that performs a certain function, but not understand every piece of it. This is especially true when you’re just starting out and haven’t yet learned the necessarily foundational information to build upon.
For example, this past week I created my first Ruby on Rails app through the use of scaffolding (for demonstrative purposes). While not pratical for most real-world applications, it was helpful to see and interact with the structure of a typical Rails project. While I only worked with a few of the many files, it was helpful to give me a basic grounding, and served to provide me with a goal of learning to build a project without using generated code.
I’m accepting that I won’t understand everything right away; and that is okay. I think it is important to identify concepts that you don’t understand, and evaluate whether it is something you should learn immediately, or that it is something you should take note of and make a goal to teach yourself in the future.
Being honest with yourself allows you to take control of your education and determine the best path for you to take next.