Startup Co-founders’ Coding Journey: From Newbie to Informed
Last week we introduced you to the Shipyard team and why they are learning to code. Shipyard is participating in Codementor’s Featured Star program, where they will work with a dedicated mentor to bolster their understanding of programming concepts and become better entrepreneurs.In this article, Shipyard’s team will share their experience so far after 2 weeks and four sessions into the program.
What have you covered over the 2 Weeks?
Vipin: Over our first four sessions we’ve been introduced to Ruby, installed Ruby/Rails on our machines, and started the Rails Girls tutorial. Philipe helped us understand concepts through a combination of lecture, show and tell, and a lot of Q&A. After each session, he would also assign us homework to prepare us for the next lesson.
Our first session was an intro to Ruby in which Philipe gave us some context and some of the philosophy around the language as well as a bit of background/history, and then we covered a few basic data types (strings, integers, floats, boolean values) as well as variables and methods. We learned these things by Philipe explaining them to us and showing us how they work in his terminal, and us asking a lot of questions.
In our second session we covered operators, arrays, hashes, loops, and if/else statements, continuing to lay the groundwork for us to be able to understand and use Ruby.
We spent the majority of the third session learning about classes (which were slightly more complex than expected), and then installing Ruby/Rails on our machines.
And in our fourth session we started walking through the Rails Girls tutorial and got introduced to the Model-View-Controller (MVC) framework.
We do all of our sessions with Philipe over Google Hangouts. After some initial chatting and questions, he usually shares his screen so that we can see both his text editor and his terminal. And then he uses his text editor both to outline the agenda for our class (“commenting out” those lines) and to show us how various commands work.
We didn’t do a lot of activities or exercises together over these first four sessions (that’s what our homework is for), but Philipe often asks us what we think will happen when he enters a particular command, or how we would write a command to do a particular thing, to keep us on our toes.
What Was it Like to Learn with a Dedicated Mentor?
Mark: I have tried, and failed, to learn to code several times in the past. For the first time, it’s starting to stick. I realized that jumping in headfirst with a mentor, and using an hands-on tutorial as the guide, was the way to go. Previously I had tried TryRuby.org, and have viewed some of the Rails for Zombies screencasts on Code School. I couldn’t really internalize the material, and for as technical as I am, I had started to think that “maybe my brain just doesn’t work this way.” Maybe I just can’t “get” programming. But starting from the very first session with Philipe, I’ve been soaking up the material like a sponge.
I’m amazed at how quickly I’m picking all of this up, and advancing down the path of being able to build a web app.
Vipin: I had three reactions.
My first reaction is that I can’t believe I never invested at least this much time to learn some of these basics as the cofounder/CEO of SideTour. In just two weeks, I have a much more concrete understanding of so many things we talked about with our dev team at SideTour, such as the nature of the various types of gems that exist. I don’t intend to become a developer but I think it can only make me a more effective founder to understand the underpinning language of tech better. But it also does feel empowering to be able to open my terminal, run Rails, use the scaffold functionality, and build and modify a simple app after just two weeks. I’d advise every founder/CEO to invest at least this much time in learning some of the basics of coding.
My second reaction is that I’m really surprised that the intro level materials we’ve been using (tryruby.org, learnrubythehardway.org, even the Rails Girls tutorial) aren’t better given how prevalent learning to code has become. I felt like I was doing a lot of copying and pasting without really understanding the underlying building blocks better. When I compare it to learning a foreign language, I think apps such as Duolingo (or even text books for that matter) do an incredible job of building knowledge bit by bit from scratch in a highly structured and systematic way. Maybe the issue is that people’s starting points are more diverse in learning to code. Or maybe it’s because the best way to learn code is to copy and paste command lines at first. Anyway, I’d love to see an app that does for Ruby on Rails what Duolingo does for foreign language.
My third reaction is that I’m delighted to have a mentor as I walk through this “door” (and, in particular, to have that mentor be Philipe). Having a mentor has created the right amount and balance of accountability and support for me. Knowing that someone as talented as Philipe is investing two hours a week to help me learn makes me really diligent about doing my homework and investing in myself equally. And I find Philipe’s combination of empathy, humor, patience, humility, and command of the material highly encouraging as well.
Minesh: Two weeks into our experience, the thing I’m probably most struck by is how much more accessible learning Ruby is relative to what I had expected. Coming into this process, I had a perception that programming was a fairly isolated “technical” domain that had little in common with “non-technical” disciplines. I assumed that the skills and perspectives I gained in finance and other fields would have little value in helping me to understand or to learn how to code.
What I’ve found is that there are actually a number of concepts from these experiences that have helped me grasp some of the fundamentals of Ruby in ways that I hadn’t anticipated. For those familiar with financial modeling or writing visual basic macros in Excel, there are countless parallels between methods and functions, loops and data tables, variable declaration, if-then statements, methods of debugging, etc. Beyond these elements, even more surprising to me is the similarity in mindsets — I was struck by Ruby’s emphasis on developing efficient, non-redundant, dynamic code, which are many of the same qualities used to define a well-structured financial model. I saw similar parallels between Ruby and a symbolic logic philosophy course and fractals math course I took years ago.
Stepping back, the two major insights for me were — (i) the wall between what we often label “technical” and “non-technical” can be much more porous than many might imagine, and (ii) it’s incredibly important for instructors and students to identify relevant analogies, common reference points and practical examples early to make learning more accessible and enjoyable. To that point, like Vipin mentions, I’m surprised that the online materials for teaching Ruby on Rails aren’t better or more innovative. Having a mentor like Philipe has been a huge help in providing more context to existing content and Ruby tutorials.
My second observation relates more the to richness of the programming ecosystem and how that has translated to ever more efficient and cheaper development cycles. As a co-founder of SideTour, I often heard about Ruby Gems and services such as Heroku, Amazon S3, GitHub, Bootstrap, etc. but never fully appreciated how they all fit together. In working with Philipe, for the first time, I’m getting a much deeper practical understanding for how these services and open source resources support developers and how the barriers for non-developers to learn how to code and build basic web apps are coming down.
What Are Your Learning Goals?
In the first conversation with Philipe, he discussed the importance of setting a goal to help direct the learning process. This goal didn’t need to be decided in the first session but could be defined in the first few weeks. When thinking about goals for this program, what are your initial thoughts?
Mark: Going into this process, I had a simple goal: to be able to build a simple web app by January 1, 2016. To create a sense of accountability, I even stated this goal publicly in a blog post. In my second week of working with Philipe, I accomplished that goal. I’m moving ahead so swiftly, and making much more progress than I had expected.
So I’m in the process of rethinking my goal, to move the bar much higher. I’m thinking a respectable goal would be to build a somewhat polished, user-friendly web app, ready for actual use. Not a prototype, that has basic functionality, but an actual app meant for use by real users. I’m not sure what that app would be yet, but I’m thinking it through.
Minesh: Simply stated, I’d like to be able to credibly communicate with and assist technical teams, and understand the requirements to build and support the product. My near-term goal is to learn all of the terminology of Ruby on Rails, be able to confidently navigate existing code in the text editor, understand the various pieces and how they connect to one another to execute the intended functions. I’d also like to develop a better understanding for Internet architecture as well as the ins-and-outs of all relevant third-party services and fully understand their offerings and how to evaluate which service is best to use, etc. I plan on reevaluating this expectation for myself each week as we move along the learning curve.
Vipin: I’m honestly having difficulty defining my goal because I don’t know what is possible over the next eight weeks. Should I be able to code my own application? Should I make it a goal that I’ll be able to have an intelligent conversation with a developer about how much time a piece of work could take? Or should I simply aspire to learn all of the terminology so that I can never be lost in standup?
At this point, I just want to get as far as I can in the next eight weeks. Hopefully a more concrete goal emerges
Stay tuned for the next post in this series!