“There were absolutely no exceptions and no excuses.”
Meet Sahat Yalkabov.
Last year, as he kicked off his senior year at the City College of New York, Sahat decided to code for 365 days straight — a full year streak. As a result, not only did he cultivate a muscular GitHub profile, but he was also brought life to two great hacks: Hackathon Starter and Satellizer.js. The former hack, which is of course of interest to us here at MLH, is basically a Node.js boilerplate to augment the on-the-go creation of web apps at hackathons. (It came out from personal experiences at hackathons, Sahat tells me. “I was so fed up with struggling to implement something as simple as ‘Login with Facebook’ for my apps). The latter is a token-based authentication library for AngularJS.
Sahat was kind enough to let us ask him some questions about his experience.
Tell me about yourself.
I graduated this Spring from the City College of New York, with the Bachelor’s of Science in Computer Science. This past summer, I was enrolled in Hacker School. It’s essentially a 3-month self-directed “bootcamp” in which you are surrounded by smart, friendly, intellectually curious people who enjoy programming and want to become better at it. At Hacker School you are free to explore your passions and interests or you can pair up with another student to work on something together. That’s where I made Satellizer.js, which was later featured in the Hacker School’s blog at What people do at Hacker School.
Are you from a family of coders?
No, I’m the only tech-savvy person among my family. In 2008, after leaving the US Air Force, I wanted to study so many different things at school: video production, psychology, computer networking, computer security, programming, architecture and civil engineering. I ended up majoring in Computer Science. The first semester was pretty rough and I almost switched majors because I thought I would have never been great at programming anyway. The fact that we used Java as our first programming language did not help it at all. But over time things got a little better due to the sheer number of hours put into coding, debugging and asking for help on StackOverflow. I started getting an edge over my peers in 2011 after attending my very first developer conference – PyCon 2011. And then things really took off in 2012 after my very first hackathon, attending tons of events, meet-ups and conferences, all while taking 5 to 6 classes at the The City College.
When did you start coding?
I officially started coding in 2009 during my first year in college. We used Java and C++. Two years later, I picked up Python during my free time and then JavaScript. Python and JavaScript were the only two languages I was more or less comfortable with using at hackathons and for my side projects. Learning a new programming language on your own can be super fun and exhilarating. From my experience, the best way to learn a new language is to start building a side project with it. Looking at code examples on GitHub can be a great way to learn as well.
When did you decide to start coding everyday?
On September 19th, 2013. It was during my senior year at the City College of New York. It was right after finishing my summer internship at Continuum Analytics in Austin, TX. I was sitting in the computer lab at school, chatting with my friend David, and I told him: “David, starting today, I am going to code every single day!” And that’s how this all started.
What was the inspiration behind your project?
I wanted to reach the same level of coding proficiency as John Resig, Addy Osmani, Paul Irish, TJ Hollowaychuk, Jeremy Ashkenas and many other amazing developers. I was so impressed with what they’re able to do that I was willing to code every day if only to become half as good as them some day.
What was your goal?
I wanted to be a better developer. Maybe I could have done it on my own, but not wanting to break at streak can be a powerful motivator to keep going every day. Plus, the fact that your GitHub account basically acts as a coding resume that only strengthens the incentives. After all, a college degree alone is no longer enough to get a decent job as a developer.
Before you started coding every day, did you consider yourself a solid developer?
Nope, definitely not.
How long did you code every day?
It varied depending on the day. When I was super busy, it was probably less than 15 minutes. At other times, I coded all day long — as soon as I wake up all the way ’til early the following morning until I can no longer keep my eyes open.
Did you focus on one project at a time, or did you spread yourself across multiple projects?
Typically, I focused on one project at a time. If I wasn’t sure what to work on, then I would make a few small changes here and there across my GitHub projects. But from my experience, it was best to focus on one project at a time because that is when you are the most productive. Switching back and forth between multiple projects forces you to have to “get back into it” all over again. That takes time and mental effort that’s not the most efficient.
Was it ever difficult? How did you cope with homework and exams?
It wasn’t all that difficult. I had to make sure that I didn’t forget to make at least one commit to GitHub everyday. For that reason, I created a recurring reminder on my iPhone that was set to repeat every day at 3:15pm. There’s nothing special about 3:15pm; it just happened to align well with my classes schedule during the Fall 2013 semester. I just never bothered to change it.
The biggest challenge is, of course, “context switching.” I am extremely productive when I’m “in the zone,” but if I had an exam coming up I would have to clear my mind and focus on the class. Then, when I got back to coding, I would often find myself staring at my code not knowing where to start. For me, coding has always taken a higher priority over school, despite taking 6 classes per semester during my senior year. Even when I had multiple final exams on the same day, I would still try to push at least a few commits to GitHub.
There were absolutely no exceptions and no excuses. If you can make one exception, then you can make two exceptions and so on.
On some days did you just write up some issues and call it a day? Did you do lots of refactoring? What were some of the hardest days to follow through on this?
Yes, on rare occasions I had to either create an issue or bump a version number for project dependencies. I almost missed a commit once because I was flying from California to New York with several connecting flights. I had arrived in New York just in time at 11:30pm to push a quick commit to GitHub from my iPhone.
And yes I do a lot of refactoring as I write code. The hardest day to follow through on this is when your mind has completely switched to something else (e.g. obsession with the latest video game or you are too focused on work-related stuff).
How do you deal with the problem of getting too lost in your own code?
Fortunately, it’s a little different when you write public open-source code. There is a certain level of motivation to it. You write code with the goal that it might help someone else. You write code knowing that someone will be reading it at some point, so you try your best to write clean and elegant code. It is also a very gratifying experience to have your project trending on the front page of Hacker News, GitHub and featured in multiple weekly newsletters.
So, I rarely need a break from the computer to clear my head. I should also mention that I primarily work with tech that I am passionate about: I absolutely love Node.js community and all-things JavaScript. Furthermore, I constantly challenge myself by learning something new all the time, for example building a project with AngularJS, writing a tutorial based on what I’ve learned with it, then building something with React, exploring Polymer and Web Component, trying out other languages like Go and Elixir.
This way I never get bored with coding.
How did you feel throughout this project?
I never got tired of writing code. I used to joke around by saying that coding is the only activity I could do 24/7 apart from gaming. I still feel the same way about it as I did when I started this coding challenge.
On Day 365, how did it feel?
Honestly, it felt just like any other day. I did not have any particular time goal when I started this challenge. I just wanted to code every day in order to improve myself as a developer. Then again, I am rarely satisfied with my accomplishments.
Will you be taking Coding Every Day to the next level, whatever that may be?
I don’t know. It all depends on what I will be working on at Yahoo. You may have noticed that I barely made any commits in the last two weeks because I’ve been working primarily on internal Yahoo projects. Realistically, that gives me only a few hours a day for my side projects and then a few hours for The Sims 4 and Destiny.
That said, however improbable it may be, I would still like to reach 10,000 total contributions in 1 year period as my next goal.
What would your advice be to others who would want to code every day?
You really have to want to do this. Otherwise, it’ll feel like a tedious chore.
At the end of the day, commit streaks don’t really mean anything, but it can be a great motivator to code every day.
Here are some tips on projects: If you choose to build an open-source project, you really be passionate about it. You have to believe in it. Go above and beyond to make it the best of its kind. Attention to detail matters more than you think. Your project is as good as its documentation. Always have a demo link; you have less than 5 seconds to show me what your project does before I close the tab.
Also, the best time to showcase your project on Hacker News is on weekdays at 8am EST.