4 Tips to Achieve Your New Year’s Resolutions

With the start of the new year, my mind is on resolutions and how to best achieve these changes I’d like to accomplish throughout the year. I try to bea better person towards others, to live a healthier lifestyle, and to progress my career.

I certainly don’t achieve all my resolutions, but I’ve got an high success rate; the following tips have greatly helped me and they can do the same for you:

#1 Make it Specific

Far too many people make the mistake of creating resolutions that are vague. Vague aspirations make it extremely difficult to truly understand what you want to achieve and therefore even harder to make meaningful strides. For example:

Vague: Improve my health.
Specific: Track my daily calorie intake and exercise at least 329 days in a year (90%).
Vague: Improve my writing.
Specific: Publish weekly posts (52 total) on andrewkkirk.com blog.

Want to know if your goals are specific? Here’s a quick test – can you measure your results?

#2 Make it Measurable

Having goals are meaningless without any frame to reference progress. Tracking your results serves several purposes.

First, measurements give you data to quantify results. Without measurement to keep us honest, it’s too easy to rely on judgement alone. As the resolution creator and judge, we’re biased. Measuring removes judgement from the results.

Second, analytically data will drive your sense of purpose. It’s too easy to lose focus with unspecific, unmeasurable goals. Abstraction is the enemy of your goals.

Tracking data points allows us to be binary. At the end of each week, I will have either completed or not completed an average of one new blog post. By constantly updating progress, we’re provided instant feedback which allows for adjustments. By measuring progress, there are no surprise results – you always know your status. If you’re looking for easy tool for tracking, Lift App is my favorite tool for tracking daily habits.

You can’t manage what you don’t measure. Tweet This

#3 Write it Down

You need to write down your goals. You certainly don’t want to forget your goals, but the implications are deeper. The physical act of documenting your desired results has psychological implications. You create a pact with yourself.

My process involves writing my goals down with pen and paper, then capturing it electronically to be stored in an ever-growing file stored in Evernote. Keep each year stored together and you’ll be happy to see the log over a few years time. I’m already excited for the joy I’ll have when I stumble back upon my current list in 20 or 30 years from now.

#4 Make it Realistic

It’s a new year. Hope and optimism is overflowing. It’s an exciting time, and the excitement can impair our acuity. I’m not talking about giving yourself softball lobs (ever tried to hit a softball? – not as easy as this metaphor implies). Anything too easy will have no meaning or impact.

But, the converse is true. You’ll lose hope and will abandon incredibly difficult or unattainable goals. We don’t change easily, so think realistically. Only you can determine what lies just beyond your current comfort zone.

Bonus: #5 Share Your Goals

Follow #1-4 and you’ll be in a great spot. And if you want to take the process to the next level, tell your goals with others. In addition to your own drive, you’ll have added desire to stick to what you’ve shared.

Share it with your partner, close friends, or on Facebook. In all cases, a positive social pressure will give you an extra boost of motivation.

What are your resolutions and what tricks do you use to be successful?

help wanted

How I Landed a Job Offer After 18 Weeks Learning to Code

tl;dr:
127 days of intensive self-study + pair programming = Programmer Job Offer.

Note: In September 2012, I set out full time to learn to code. This article is the culmination of my experience, which resulted in a job offer in January 2013. 

My background is in working with amazing startups and technology companies focusing on sales and marketing. But, I wanted to do more, to build and to be at the core of building a product. On September 10, 2012 I began an adventure, a mission to teach myself to code.

Before I started my journey, I considered myself a very computer savvy, non-technical person; I understood the basics of the web, front-end design, and had run through a few Codecademy tutorials. But, I couldn’t code up a web page from scratch, had never interacted with a database, nor did I fully grasped the web stack.

Why Learning to Code Full Time?

Why did I decide to drop everything and learn to code full time? Learning to code part-time, in my free time, wasn’t sufficient for where I wanted to take my skills and understanding. I didn’t gain the breadth of knowledge or tool set I needed to do anything meaningful, while learning to code at night and on the weekends.

Also, the timeline didn’t make sense to me. Patience is not one of my virtues. To push myself above a novice programmer, I was looking at grinding away slowly in my spare time. I’m results driven and need to see a more immediate impact to keep me motivated.

Going full time removed time and work hurdles from my learning to code experience. I was fortunate to have built a business to a place where I had a financial cushion.

While it was successful, I was running full steam and exhausting myself. As a result, I either needed to expanded the business (hire more people) or refocus the strategy. After carefully analyzing the opportunity, I wasn’t attracted longterm to a B2B services business.

So I took the money and invested it in myself, paying myself a salary for three months while I dedicated 100% time to learning to program.

My Learning to Code Plan

I crafted my own plan to learn to code, with lots of help and insight from others. I learn by doing.

Therefore, I utilized a project based approach to learn to code. The first seven weeks I spent reading and completing various online tutorials. In week 8, I started working on a web app project of my own. This important step was to force me into more critical thinking.

I should have started writing my own code earlier. Starting on my first project was a rush. This euphoria was quickly followed by the realization of how lost I was.

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

This is as a good time as any to emphasize how much I relied on other people to learn. I was very fortunate to meet amazing developers who gave up time to help me out. Discussing code, pair programming, and line-by-line code reviews were the single most important steps in my entire process.

Big props to my mentor, Joe Goldberg, who guided me throughout the entire process.

Entering the Job Market

Heading into the 12th week, I felt my best opportunity for growth would require me to work full-time as a developer. My biggest strides occurred working alongside other developers.

Finding a suitable job opportunity was the most difficult aspect of this experience. I applied to entry-level jobs listed on job boards. I used my network extensively; I spoke to developer friends, folks from meetup groups, recruiters, and I responded to 63 Hacker News job listings. Companies in which I was interested simply didn’t have the resources or desire to train me. I was turned down many times.

As weeks passed, I was beginning to lose hope. I contacted Originate in Los Angeles, and they too didn’t have a place for me. I reached out directly on LinkedIn to Rob Mallery, an executive at Originate.

We jumped on a 20 minute call and he referred me to the recruiter who would ultimately find me the job offer. She knew of a few companies looking for junior developers. One comapny, a web development agency with 12 engineers, had an opening that in particular grabbed my attention. I was very under qualified as compared to the required skills, but the recruiter encouraged me to apply anyway.

The Interview

Based on my resume, I was invited in to interview. I spent the 24 hours leading up to the meeting prepping for questions.

Funny side story: When I arrived, there was a buzzer to enter the office space. However, when I hit it, there was no sound nor response. I knocked and hit the buzzer several more times without any response. I could see lights on inside and started to panic.
Wait. Was this my first test? I had read harrowing “Google-Amazon-style” interview tests that potential engineering hires underwent. My mind raced. Was I being tested right out of the gate?
Well, no it turns out the buzzer was just broken and another employee happened to appear and let me in.

To minimize this already growing post, I’ll cut short details regarding the interview process. If you’d like more specifics about the interview process, let me know in the comments.

Job Offer Result

I spoke to the recruiter that same afternoon, told her I thought it went well, and was told I would either way soon. The next morning she sent me email saying I was offered a junior developer role with a strong base salary, 401K match, 17 vacation days, and medical/dental/vision benefits.

Conclusion

So I’m a Junior Developer Engineer now, right? Well, the story isn’t that simple. After much contemplating, discussion with family, friends, and trusted mentors, and a serendipitous set of circumstances, I ultimately turned down the job offer. I’ll save my reasons for that decision for my next post.

computer science degree

Hope for Non-CS Majors Learning to Program

I don’t have a computer science (CS) nor engineering degree. I didn’t drop out of college or skip it all together because I was buried in lines of code working away as a developer. It’s the reality of my background.

As a result, I’m certain there are important technical aspects of software development that I don’t understand. In fact, I would bet there are technical aspects of computers and programming that I don’t even yet realize that I don’t know about.

And the truth is that I’m okay with it. After starting to program, thoughts of being in over my head crept in. How could I possibly get my programming abilities to be equivalent to an entry-level developer? But that’s no longer the case. I’ve come to terms with the fact that I’m a non-CS degree web programmer.

Are College Degrees All Hype?

There has been lots of noise the last few years about college debt and people bucking the college trend (“college is for suckers”). So you might think I’m better off. Well, don’t take these stories as the almighty truth; in fact, you can chalk up the uncollege movement to PR fluff.

I’m not saying that this movement doesn’t have valid arguments and dedicated, intelligent individuals working to disrupt an educational industry desperately in need of it. But, if you want to gain professional employment as a developer today, every job description will mention requirement of a CS degree or equivalent experience (EE). Perhaps employers in the future will catch up to speed with the trend away from college degrees, but not yet.

Interestingly, spending four years in school doesn’t necessarily prepare you as a programmer on Day 1. The degree is often used as a ‘stamp of approval’ to indicate you’re capable of learning new, complex material. Ultimately, your skills at development boil down to time invested in honing the craft.

Succeeding Without The CS Degree

A computer science degree will make it much easier to get your foot in the door with employers, but you can still do it without one. If you’re in the same boat as me and a CS degree is not an option, you’ve got to take other avenues in order to gain more experience.

If You Build It, They Will Come

Nothing speaks louder about your abilities as developer than demonstrating the code you’ve created. Create your own apps and contribute to open source. It will enhance your abilities and open doors within the developer community.

Or you can go the route that Bryan Helmig and the other Zapier cofounders took. None of these guys have a CS degree, but they’ve built a budding SaaS business, gained customers, and were accepted and successfully completed YCombinator. Bryan’s own words on the experience  are worth the quick read.

Ignore Formal Job Descriptions

If running your own company is not your fit, there are still many great opportunities. If you’re a self-taught programmer, than you’re incredibly self-motivated and driven.To find an employer to hire you and give you experience, you’re going to have to harness that same spirit.

Take that same drive and apply it to convincing a person to hire you. You’re not going to woo anyone on paper with your resume; you’re going to do it in person. Look for companies that are hiring entry-level engineers (<2 years experience) and network with their current engineers using LinkedIn or better yet at local meetups. Also, look for companies with multiple open engineering positions; companies in need of talent will be more likely to place a bet on hiring you on the cheap in order to develop your skills further.

Non-CS Majors Learning to Program Conclusion

Whether you have a computer science degree or not, learning to program requires much hard work, determination, and perseverance. Be prepared that if you don’t travel a traditional route, you’ll need to hustle a little bit harder to create your career path.

UPDATE:  Join the discussion on Hacker News.

learning

My Most Helpful Materials in Learning to Program

The number one question I receive about learning to program is which tools have been most helpful to me. It’s an interesting and delicate question for me to answer, because usually the person is hoping to recreate my experience.

I intentionally made the title of this post in reference to my personal materials, as opposed to a generic “Best Tools for Learning to Program”. While, the marketer in my brain wanted to use this broader appealing title to attract a larger audience, it wouldn’t have been has beneficial to you.

Learning styles vary and what works for me, won’t necessarily work for the next.

In this regard, I’ve been careful to write about how to start the process learning to code and important factors to considered in your own personal choices. If you’re just starting out, see these articles for information about getting started:

Once you’ve thought about your best approach, you’ll begin to think about learning tools to help your process and your chosen language. My personal learning approach is entirely focused on building web applications. I’m not trying to be a scholar of Ruby. As a result, I having working knowledge of Ruby, but not necessarily a strong grasp of the language at this point.

Instead, I’ve used the Rails framework to build my application and then only learn aspects of Ruby specifically required to build the next feature. I didn’t start out my learning to program process with this mentality.

When I started, I read a lot online from more experienced developers ranting about newbies only using Rails and not understanding Ruby. Well, that was not going to happen with me. I wasn’t going to be one of those uniformed developers. So I mistakenly made it my goal to learn Ruby from the very start.

I went though material on Ruby basics and covered Procs, Lambdas, Modules, etc. And it gave me a much stronger understanding of Ruby, right? Wrong. I didn’t absorb the Ruby material because I had no context in which to frame it.

Fortunately, I’ve taken an agile approach in learning to program. I quickly dropped the Ruby material and only focused on building an app, knowing that I may need to supplement my understanding of Ruby at a later time. These are the materials that helped me do that:

Best Rails Learning Material

Front-end (HTML, CSS, JavaScript)

  • Codecademy for basic HTML and CSS
  • “Build a Simply RoR App” on Treehouse presents JavaScript and jQuery inside an actual app.

These materials have been most helpful during my first 6 weeks where I focused on tutorials, reading, and creating a baseline level of knowledge to begin building my app. In a future post, I share my materials which have been most helpful for building my first Ruby on Rails app.

Featured image courtesy of Wesley Fryer

Hacker News

How I Got Unbanned from Hacker News

Dear Internet Gods of Technology,
Forgive me for I have sinned.

Now that I’ve said my repentance, allow me to explain how I got my account unbanned from Hacker News.

Tech Sanctuary

For those who don’t know, Hacker News (HN) is the Mecca of sharing all things nerd, tech, and science. Thousands of users go here daily to share the latest and greatest from the world of technology, computer engineering, and startups.

In addition to sharing, users can comment and vote-up articles, all of which can lead to your article landing on the coveted front page. There is great interest in it because a front page mention for your site can attract a large volume of traffic and expose your ideas or app to tens of thousands.

Like any popular system, it has attracted abusers. People looking to gain off the eyeballs of Hacker News, have submitted articles outside the scope of the site. Doing so, among other activities, can get you banned from the site. But in the land of free accounts, this outcome is of little consequence to the user who can simply create new accounts ad nauseam.

As result, Paul Graham, Venture Capitalist Y Combinator co-founder, and HN administrator, has put in place an intelligent, and some would save devious, system for dealing with abusers: hellbanning. As a hellbanned user, you can continue to use the site as normal, but without other users seeing your submissions or comments.

Think of it this way: Basically, your Bill Cosby in “Ghost Dad” right after the car accident – everything feels and looks perfectly normal to you, but to the outside world of HN you’re invisible. Nonexistent.

ghost-dad

My Sins

How did this happen to me? It’s pretty simple: I broke the HN rules. As a marketer, I signed up for HN and used it to submit articles I’d written for my blog or customers. My posts were off-topic and I became hellbanned. I had no idea.

When I began my learning to program project, I wanted to share my articles about learning programming as non-technical person. However, after a friend was unable to see my post on HN and much searching, I realized that I was hellbanned.

I immediately felt embarrassed and bummed; I’m working to become actively involved in the developer community and here I was banned from one of it’s most popular community sites. I had to make things right and get my account back.

Repairing The Damage Done

I discussed it with HN super user and Rails Apps creator Daniel Kehoe. He’s a really smart guy and incredily well-respected in both the Rails and HN communities. He kindly suggested I considered it a wash and create a new account.

But, I didn’t think all hope was lost. The internet is supposed to bring us together, to connect us on a human-level, right? Couldn’t I profess mea culpa, reform my behavior, and become a positive contributing member of HN?

So I found Paul Graham’s email and sent him the following note:

Paul,

My account on HN news, andrewkkirk, has been hellbanned. And rightfully so, I wasn’t following the guidelines and submitting off-topic posts.

I’ve read the guidelines, understand the errors of my ways, and would now like to contribute in a positive manner to HN.

Other developers advised me to just create a new account, but I believe in the power of connecting personally and asking for a second chance.

Thanks in advance for the consideration,

Andrew Kirk

To my surprise, the following note landed in my inbox the following day:

paul graham email

Lessons Learned

Clearly, I wish I hadn’t have been banned in the first place. But, I did take away a few important lessons.

#1 Don’t Abuse Sacred Communities

These communities are desirable because the collective value input by it’s members. Abusing their standards devalues their work, angers community members, and puts you in a bad spot.

#2 Admit Wrongdoing; Ask for Forgiveness

It’s not to say all wrongdoings will be forgiven. We should still act with decency. All to often online communities become outlets for free-range bad behavior.

#3 Make a Personal Connection

Our online worlds are bustling with social-integration and real-time communication. But, we can still lose sight of the personal aspects of the web. Don’t let technology become a barrier to interacting on a personal level.

Unbanned from Hacker News Conclusion

I can only speculate as to why I was unbanned. I imagine Paul Graham responded to my honesty and appeal that people can correct mistakes. Or maybe anyone can get unbanned from Hacker News.

Leave your thoughts and questions in the comments below. Also, join the discussion on Hacker News.