I had originally intended this post to be a technical write-up about how I built my second Rails app. Where the idea came from, heroic descriptions of encountering bugs and working out solutions, things like that. But I couldn't write that because my heart wasn't in it. So I'm going to talk about something different, and I'm hoping this reaches someone who needs to hear what I'm going to say.
You see, I've been in a self-paced web development boot camp for over a year and a half. During that time, I've seen a lot of people quit, and a lot of people fly through it in a few months. Most of the people I know who started when I did have graduated by now. Learning to program has not come easy for me.
When I started programming, I had a feeling that I could do it, but I had no evidence to back that up. I had never seen a command line. I had never heard of Python, Ruby, Go, Erlang, Elixir, C, or any of the other languages. I would never have thought that Java and JavaScript were two completely different things. Sudo? Oh, you mean that Phil Collins song?
Permission denied
When I was supposed to build my first program (a CLI web scraper) I was completely lost. I tried and failed multiple times before I found a mentor who taught me how to do it. Learning to rely on other people, and to ask for help despite feeling stupid or embarrassed has been essential to my success. But even after building an object-oriented Ruby program, I still felt lost. I would watch classmates of mine solve coding problems that were impossible for me. I was frustrated, anxious, and thought about giving up almost daily. But then about five months into the boot camp, a funny thing started happening. I was still getting stuck just as much as before, but I was asking for help a little bit less. I was finding more solutions on my own, and things were starting to make a bit more sense to me. I was slowly understanding why I would need to create classes, what attr_accessor
does, and as I gained insight into self
in Ruby, I was gaining insight into my own self as well. I was thinking about things differently. Logically, systematically, breaking things down and reasoning out outcomes and solutions. I was feeling confident, excited, capable. "I can do this!"
And then I had to learn Sinatra.
Learning SQL, ORM, Rack, ActiveRecord, MVC architecture, and web frameworks made me feel like I was starting all over again. The anxiety kicked in right away, and there was always a voice in the back of my mind saying "you can't do this." But close to a year after I started, thanks to solid mentorship and after many, many, starts and stops and restarts, I had built my first web app.
The best is yet to come, and won't it be fine
Once I had one app under my belt, I felt like it would be smooth sailing. I ran into a whole new challenge as I rebuilt my Sinatra app in Rails. It took a while to learn all the things Rails can do, and get used to how powerful it is. A couple of months later, I had built a full Rails app but still felt like I didn't really understand Rails. Since I rebuilt my first project for my second, I really wanted to do something different for my third, which was supposed to be simply jQuery features added to the Rails app I already built. Anxiety set in, however, and I couldn't do it. I'd break into a cold sweat at the thought of building another app from scratch. A couple more unproductive months followed, and then I had an idea for an app that I really wanted to build. I could see how it would work on the backend right away. I knew how I would set up my database, my associations, my models. I sat down, opened my terminal, made a new directory and ran rails new
. You can see the finished product here and the code here.
I found that all the worry, doubt, and anxiety was all for nothing because I knew how to do it after all. And now it looks like I'm actually going to finish this boot camp, despite all the times I thought I couldn't do it.
How have I made it this far? Well, the thing is, I may not have believed in myself, but I believed in possibilities. Whenever I thought I would never be able to learn a technology or complete an exercise or build something, I always thought to myself, "but it's possible that I can do it."
And that's the best advice I can give to anybody who might be experiencing what I have and surely will again. If it's possible that you can do it, you owe it to yourself to try. You just have to start if you have already stopped, or keep going if you're thinking about giving up. It's the only way I know. It can be painful, but you'll learn, and you might just realize that you were about to give up without realizing that you could do it all along.
I still look at apps other people build and think that I'll never be good enough to create something like that. But then I remember that the things that are easy for me today were impossible for me a year and a half ago. So I keep learning, because who knows what I'll be able to do a year and a half from now.
So don't give up.
Top comments (7)
As a primarily self-taught dev, I know these feelings all too well. That said, I think it is important to keep all these things in perspective and have clearly defined goals.
If my goal was to be a senior software engineer in 6 months, I would be setting myself up for failure and the appropriate amount of disappointment.
Instead, I try to focus on small, bite-sized goals that are achievable in small time frames and aim towards a main overarching goal. For example, I am just trying to build a progressive web app calculator with react in the next few weeks after work. I am going to keep focusing on small projects like this until I can get a solid portfolio together and land a junior developer job.
Rather than focusing on the literal technical aspects of learning to program, I like to frame my progress as learning just a bit more than I knew last week.
This sounds super intuitive, but it has helped me crawl out of some mood funks. Of course, I want to be able to claim "software developer" as my job title, but I also want to be able to enjoy both the journey and the role. Keeping things positive and fun helps me stay motivated and not burnt out.
I think that's really great advice. Personally, I always struggle with focusing on the now and enjoying the journey, but you're right. If we can build great products one line of code at a time, we can build our lives and careers one small piece at a time too.
Thanks for the article. I think everyone goes through this in life. If you haven't, you will.
A really good song for those days when motivation is below low: youtube.com/watch?v=ZkzY29DKHEQ
Thanks for that! I had never heard of that band before, and I'm always interested in new music. That's a really good song, and motivating too!
Thank you for this motivating article! I think the forgotten phase when learning to code is, "but I was asking for help a little bit less". This is a good sign. It's hard to get to this point, but many don't realize that this phase is past the massive and painful hurdles!
I know many people who would be comforted by this, me included. It does get better!
As an English major who turned into a programmer, I can relate to a lot of the stuff in your post, for sure.
Thanks for posting, and keep after it!