Author Archives: Andrew K Kirk

bridge support

Learning to Program Supporters

“It Takes A Village to Raise a Programmer” – I just made that up for this post.

So yes I did fabricate this quote for my own purposes. But it seems to fit my situation well, as I truly have been the benefactor of tremendous support and efforts of many. And as those of us in the US settle into our annual time of thanks, I feel incredibly grateful to everyone who has shown me support.

Heading down this path to learn to program required a strong leap of faith, and I don’t regret it for one second. That’s not to say it’s been all positive; in between learning and building, there have been times of stress and frustration.

But the support of everyone from family to complete strangers has been overwhelming. It’s great to know there are people pulling for my success.

Tweet of Support

I’ve placed the following tweet on this site from the beginning. An amazing number of people, many strangers, have sent this tweet out to support me.

“I support @andrewkkirk on his journey to go from total noob to programmer in 18 weeks.” < Tweet This Message >

I send a big thank you to all of you that have taken time to support in one way or another. Theses gestures mean more to me than you could imagine.

The Importance of Sharing

Once I made the commitment to learning to program fulltime, I knew it would also be important to write throughout my entire process. My hope is that others will benefit through documenting my experiences, and even avoid certain pitfalls by avoiding my mistakes.

An additional result, which I didn’t anticipate, is that I’ve reconnected with people who find out about my project from social media. For example, I recently received this note from a high school soccer coach I hadn’t spoke to in several years.

I just read most of your blogs on your page about learning to program. I wanted to let you know I am proud of you for taking this leap. Good luck and I know you have the determination and commitment to get it done. I look forward to hearing about your progress. Take care.

Isn’t the internet incredible? Of course, if I hadn’t written about my process and widely shared it, I wouldn’t have had this benefit.

“On-Call” Support Team

Finally, I’ve add several people take time out of their busy schedules to support me by meeting up to pair program with me, discussing code on skype, and answering questions when I inevitably break something. These folks have gone above and beyond, all in the name of helping a fellow developer.

Remember to be thankful not just for those family and friends close to you, but also to those people that make a subtle impact on us. Without their support, I wouldn’t have made it this far. Thank You!

The Role of Stress in Learning to Program

I’m a pretty upbeat, positive person. I really believe we make a choice each day of whether to be happy or not. And I make decisions according to this belief. It was this philosophy that sent me on a journey learning to program.

During this process, I’ve maintained a similar attitude, and I’ve tried to convey this attitude in my posts. The sentiment is not artificial; I’m learning a ton, meeting some amazing people, and having a great time. But that certainly doesn’t mean I don’t feel stress nor anxiety.

Outcome Importance in Learning to Program

I’m headed down unfamiliar territory and that generates fear and uncertainty. Now that I’ve transitioned to building my own app, there’s an added sense of responsibility. The real work has begun and I’m feeling the pressure.

I worry about building something that will be public facing because it exposes me to criticism. I’ve taken a risk by putting my business on hold to learn to program. Aside from my own sense of pride in what I’ve accomplished, much of the value of this project is relying on me building a web app that others find value in.

It’s an interesting paradox because each step I take in learning brings me closer to reaching my goal of building a working web app. But, until I’ve built anything, I’m also that much closer to failing.

At one point I considered adding a count-down clock to my site for dramatic effect. In a wise move, I opted out. Can you imagine having to stare at that every day? Talk about stress.

Countdown Clock

Image courtesy of Scott Beale

What’s At Stake?

I’m trying to not to dwell too much on interpreting this project in a success vs. failure mindset. There are lot of great accomplishments simply in undertaking this journey.  However, when I reach the end of this 18 week journey, I’ll have to face people and summarize this project and my outcome.

Many close friends and family have expressed admiration in my courage to take a chance in learning something new. But what about when I need to demonstrate a more concrete result. If I can’t build a functioning app, will people respect my courage to try? Or will they look at me and think I took an 18 week siesta on the beach?

Certainly, I’m exposing myself by admitting these insecurities, but self-doubt is by no means isolated to me. Developers and others who seek to create something from scratch, such as artists, engineers, and designers, must also face this hurdle. In fact, some level of self-inflected stress can be beneficial.

In his book, “The 4-Hour Work Week”, Tim Ferriss discusses how we can cultivate eustress, in which we have a positive cognitive response to stress. Harnessing these intrinsic emotional and chemical responses can be very powerful in propelling us towards an accomplishment.

When you have an important project, how do you harness stress and anxiety to overcome and achieve a successful outcome?

aha moment

Learning to Program and When to Start Building Your Own App?

After completing 8 weeks, I have hit a critical point in my learning to program journey – I’ve begun coding my first app. I feel a new excitement because this is what I’ve been working towards for almost 2 months now. But, how did I arrive at the point where I was comfortable enough to start programming my own app?

tl;drI didn’t feel comfortable. I felt nervous and unsure of my abilities. But, to make my learning process more targeted, I needed a project to direct what to learn next.

Where’s My ‘Aha’ Moment?

If we wait until we’re ready, we’ll be waiting for the rest of our lives. -Lemony Snicket < Tweet This>

Remember those standardized tests we took throughout elementary and middle school in which we proved our arithmetic and reading comprehension was sufficient to move us on to the next grade? There’s no equivalent competency test in computer programming (at least that I’m aware of). So what did I use to evaluate my own proficiency, in that I had acquired the necessary foundation to begin programming on my own?

Here’s the funny part – there was never a moment when I hit a particular milestone or understood “enough” technique that told me I was ready to begin building. Interestingly, it was more a specific moment at which I felt continuing the tutorials and intro lesson were no longer beneficial.

It occurred to me while reading about cookies and storing sessions in Action Controller in the Rails Guides. At that moment, it struck me; how can I understand the impact of cookies with no frame of reference? I realized I’d hit the point where I needed to build an application in order to guide what is relevant for me to learn.

Additionally, my mentor through this process assured me that I’d never get to a point where I felt perfectly comfortable building on my own. Part of learning to program adventure is diving into unknown territory.

Hitting Highs and Lows

tea cups dizzy

My brain starting to program. Photo courtesy of Andy Castro.

Starting on my first project was a rush. This euphoria was quickly followed by the realization of how lost I am. Staring at a blank project made my brain feel like it had been on the tea cups ride at DisneyLand.

But these mini-panic moments are actually helpful. Hitting a moment when I don’t know how to move the app forward, are actually learning opportunities (disguised as error messages) literally popping up on my screen.

With my foundation from 8 weeks of tutorials, I’ve built a simple app. Each step in the app’s functionality that I can’t execute sends me a quest for answers. Using StackOverflow, blogs, and Twitter, I’ve found help and overcome obstacles.

This is the essence of project-based learning. Rinse and repeat this break-learn-build process a few hundred times and I’ll have built a functional web app while learning Ruby.

At least, that’s the plan.

Update: Join the discussion thread on Lobste.rs

Featured image courtesy of Rishi Bandopadhay

Ruby Nuby Project

Rogues Ruby Nuby Project Video

The team at Ruby Rogues is putting together a show, Ruby Nuby Project, based on learning Ruby. They’ve requested Ruby noobs, like myself, to submit a video describing their experience. You can see my video and written response below. Here are the specifics of the request:

Have your Nuby record a 5 minute video talking about their experience learning Ruby. They should answer these questions:

  • Who are you?
  • What do you use Ruby for?
  • How have you gone about learning the language? What resources did you use? E.g. books, videos, blog posts, online courses, one-on-one tutoring, etc.
  • What has been the most difficult, surprising and/or delightful aspect of learning Ruby?
  • What do you appreciate most about the Ruby community?

Here is why I’m learning to program Ruby.

Who are you?

I’m an entrepreneur, digital marketer, and founder of the digital marketing agency Face The Buzz. I’m on a mission to learn to code. I’m dedicating myself full-time for 18 weeks to transform myself from a non-technical person into a beginning programmer. I’m 7 weeks into journey so far and having a blast.

What do you use Ruby for?

I don’t have an engineering or computer science background. I’m learning Ruby so I can use it to develop web apps. My background is in working with technology startups, but never as part of the technical team. My role has always been in marketing. I’ve been extremely fortunate to work with many great entrepreneurs. I want to be part of the early stage development and building of a product.

How have you gone about learning the language? What resources did you use? E.g. books, videos, blog posts, online courses, one-on-one tutoring, etc.

I learn by doing. Therefore, I’ve focused on online tutorials. I’ve used a few online courses, including Code School’s Rails for Zombies, Treehouse, Codecademy for HTML, CSS, and JavaScript. I’m also using a project based approach to learn to program and I’ve begun to work on a web app project of my own. This important step and I hope will help me transition between simple repetition into more critical thinking about programming.

What has been the most difficult, surprising and/or delightful aspect of learning Ruby?

Ruby and Rails have an amazing amount of functionality built into the language/framework. This feature is powerful, but can also be difficult and confusing for trying to understand exactly what’s going on inside an app.

What do you appreciate most about the Ruby community?

I appreciate how receptive and helpful the Ruby community is. Whether it’s sending out a tweet, using online communities, or a meetup, developers have been very friendly and happy to help – you just have to ask.

help wanted

3 Tips for Asking for Help Learning to Program

Learning to program is not easy, especially in my case coming from a non-technical, non-engineering background. The biggest boost to my entire process has been finding help directly from other people. In the age of the internet, you might think that all answers are already available online and we could simply cut out the human-to-human interaction.

Wrong!

If you’re looking for answers to simple questions or to very specific error messages, then a simple web search will be your best bet. But, in my experience, the ability to speak and work directly through difficult problems with another person, is the area where the greatest learning takes place.

The most difficult aspect is finding and seeking out the help. People won’t randomly stop by your blog or Facebook page, to ask if you have questions. You have to take a very proactive approach to learning from others. This step can be intimidating for many people. When you’re in the position of having less knowledge and asking for a favor for someone with greater knowledge, it can be scary.

There’s no need to be scared. Here’s the biggest lesson I’ve learned throughout this entire project:

When learning to program, most developers are happy to help – you just have to ask. < Tweet This>

With that mentality in mind, here are three tips to find the right people to ask and get help learning to program.

#1 Send a Tweet Asking for Help

Tweet to a specific person and not just out into the entire twittersphere. This method is great for people who’ve created online teaching tools. Twitter is a public forum and your question will bring exposure to their project. For example, I was working on the ‘Rails Deep Dive‘ from RubySource, and had questions so I went directly to the owner Glen Goodrich.

 

He responded directly to my question and created a gist on GithHub with a detailed explanation to my questions. Unprompted, he sent a message directly to Daniel Kehoe informing him about my self-guided learning to program project. Daniel reached out to me directly to let me know about his RailsApps Project, which is geared towards getting a new Rails project up and running very quickly. Daniel’s built an incredible resource for developers, and he’s also been extremely responsive and helpful to me. Keep in mind this entire chain of events with Glen and Daniel was kicked off by me sending a Tweet to a complete stranger. Isn’t the internet incredible?

#2 Find Online Communities

For specific technical questions, StackOverflow or IRC channels will likely be more helpful. However, to find help for the purpose of learning, you need to find individuals who’ll take a more personal interest in your progress. The best method to accomplish this scenario is to look for online communities specific to your language, where people develop relationships and look out for one another. Use Google Groups are online communities with a very specific focus. Search and you’ll find people talking about your language, answer questions, and providing guidance. Find Helper Hotlines I was overjoyed when I first discovered the Rails Hotline. The concept is that more experienced Ruby on Rails developers hold tutoring hours online, where students can call them directly. Unfortunately, my experience has been a miss to date. I’ve tried calling twice without a response.


But, that recent Tweet gives me hope that I’ll have better luck the next time I try. It is a free service, with donations excepted, so my expectations are tempered at this moment.

#3 Find Local Developers

Use meetup.com to find groups dedicated to the language you’re learning. There will be free meetings and you’ll learn from experts. But, the meetings can happen in several different formats, all of which can be helpful to meeting developers.

Social Gatherings

While you won’t be opening up your laptop to learn, social gatherings are a great place to meet lots of developers and find interesting projects that others are working on. The more developers you know the better. They may help you learn, introduce you to other developers, and perhaps help you get a job one day.

In Souther California, LA Tech Happy Hour and 106 Miles – Southern California are a good Social Gathering meetup.

Tech Presentations

Presentations by other developers are a great way to learn, especially about new technologies or techniques. For total newbies, they are probably too advanced, but you can still meet people. The networking time will be limited as compared to Social Gatherings.

In LA, LA Ruby on Rails Monthly Meetup is a great monthly Ruby Tech Presentations meetup.

Hack Nights

These are my favorite meetups, especially for learning. The basic concept is that everyone gets together to work individually on projects. These meetings are great for finding more advance developers to sit down with you in front of your project and work in tandem. Your brain will be stimulated during these sessions in ways you couldn’t have imagined.

In LA, Carbon Five Hack Nights has been amazing!

Regardless of the meetup type, you should always have genuine interesting in meeting and talking to developers. It will help you grow your network and you’ll likely find people willing to help. Do NOT go to meetings and start conversations by telling people you’re looking for a developer coach or tutor. You’ll appear insincere and will quickly scare away anyone from helping you.

Instead, show an interesting in getting to know the group members. Better yet, prior to your first meeting, contact the group organizer. Explain to him/her that you’re new, excited to get involved, and offer to help. By taking an interest the in the group, others will take an interest in you and your projects.

Help Learning to Program Conclusion

Help is available in many different forms. Never be afraid or embarrassed to ask for assistance. Most developers love to help for two reasons. First, people love appearing knowledgeable and sharing knowledge with others is an ego boost. Second, at some point in time, the developer was in the exact same shoes as you and can commiserate with the process you’re going through. This sense of shared experience instantly creates a bond between you, the learner, and the experienced developer.

Featured Image courtesy of K Nicoll