How Much Should Non-Career Programmers Learn?

railsBlog

Lately I’ve found it difficult to get to the next phase in my knowledge as a programmer. After having spent the last year and a half learning to program and building my new startup, my job’s role has mostly transitioned out of programming daily to marketing, sales, and product management. I’m finding myself losing the motivation to get better just for the sake of getting better. Without having clear programming deliverable in my sights, the need to open up a book or take more Treehouse classes has left me for the time being. I don’t consider myself a career long programmer, and I’m having trouble figuring out how much I should learn.

That’s not at all to say that I don’t want to continue to learn more, but I know that I don’t want to be a career developer. When I started I wanted – and I believe I achieved – the ability to be able to prototype ideas. Some might say I cut corners, as I never worried about scaling or learning to write tests. Doing things right is very important to me, so I did write with best practices in mind and kept my code clean.

Lately I feel as if I’ve achieved almost all I want to achieve with programming. One disincentive from keeping focused on programming is that I still think there’s much that I could improve on in other areas, more important aspects of my career as a serial entrepreneur I could and should focus on instead. Josh Long, Managing Editor of Treehouse, asked me if “knowing what I know now, I would learn to program again.” I told him emphatically that I would never trade learning to program for anything, but that I’m not honestly not sure how much farther I want to progress.

I’d love to start a discussion among the readers of this blog about how much you think non-career programmers should learn. Do you believe that I, and others, should continue to dedicate some of my time to learning new concepts, or what? I’m really looking forward to your answers, as it’ll help me figure out what to do next.

Free Workshops

Watch one of our expert, full-length teaching videos. Choose from HTML, CSS or WordPress.

Start Learning

Spencer Fry

I’m a 29 year old entrepreneur. A Business Guy turned Programmer. Co-founder & CEO of TypeFrag ('03 - '07), Carbonmade ('07 - '11) and currently Uncover ('12+). Uncover is everything you need to start and run an employee recognition program for your company. My hobbies are squash, soccer, cooking, music, and art. You should follow me on Twitter.

Comments

38 comments on “How Much Should Non-Career Programmers Learn?

  1. As a designer who has evolved into a bit of a front end developer I often ask myself the same question and find that my answers can sway a bit depending on my mood. I think that knowing a base level of coding so you can develop a solid prototype is something that would be helpful to a range of people within different positions. However being able to fully develop and deploy bulletproof large scale code is another thing entirely. I find that if you have a solid base to build upon and a desire to learn you can find a position as a entry level front end dev.

    • We’re definitely in agreement then. Knowing how to prototype is where I’ve stopped learning rather than going on to learn the in’s and out’s of large scale code as you say. I’m happy with that decision.

      • I think thats a solid choice then and it’s not like you can’t find the passion for code later down the road and start back up.

        I view it like this; you can buy and operate, and even replace, some parts of your car but for the most part anything out of your reach you bring to a mechanic. Now some people love to work on cars and become automotive technicians or simply do weekend warrior projects but that doesn’t mean that everyone who owns or operates a car should know the complete in’s-and-out’s of a vehicles motor, suspension etc. As long as they know enough basics for proper upkeep and safe usage your all set.

        • Thanks, that’s solid advice. I think that’s the best analogy I’ve ever heard for learning to program. That’s spot on. Just out of curiosity, have you heard that before or just came up with that on the spot? I really think it’s brilliant and totally relates to my current situation.

  2. Nicholas has a great point. You need enough programming to rough out a concept or iron out an issue with the tools like WordPress that you work with everyday. Once you have the basics under your belt it’s important that you use it enough that you don’t forget what you’ve learned. It’s like languages, if you don’t speak them regularly you lose proficiency and struggle to have a reasonable conversation.

    • I think staying fresh is very important as you say. I’ve recently found myself going in to tweak code and not remembering exactly how to do something. I’ve then had to Google the answer to remind myself. That was very frustrating as earlier when I was coding every day I wouldn’t have had to look up such fundamental things.

  3. What do you know now? Can you list out the things that you needed to learn to launch uncover? For example, things like validation, templating, multi-tenancy etc.

    • Certainly. I learned a year’s worth of Rails. What that means can definitely be different from person to person. For me, I learned how to set up a development environment, write to a database, update records, secure user registration, deploying to Heroku, backing up code, using Amazon’s file system, properly using Model/View/Controller, learning ERB, learning HTML/CSS, learning limited JavaScript, learning LESS, routes, partials, writing methods, mailing from the app through MailChimp’s Mandrill, and so on. I think taken together it’s what’s needed for a prototype.

  4. I say dive as far down into the rabbit hole as you possibly can. Ive founded my own start up as well, it helps to know the deepest parts of things like Obj_C as you can to see your limitations and know what you are developing.

  5. What’s the use of keeping to invest in a skill if you lose more knowledge than you win. You mentioned yourself that you forget alot and have to look it up because you don’t program every day anymore. Well.. I guess you know enough for the things you need to know, and that seems prototyping. It doesn’t seem programming is going to be your career-long love, so focus on what you really want to do and treat this as a side-skill.

    I am an Interaction Designer and I know my html/css, and Im interested in javascript/jquery stuff for personal projects, some CRO tools, feature opportunities and maybe prototyping. But will I ever be at a high level? Not likely, it’s just a sideskill that comes in handy :)

    • Yeah. I think you’re spot on in your assessment. I will continue to learn new things as I feel I need to, but I’m pretty happy with my programming skills for being able to do what I do now. If I don’t know how to do something in the future, I guess I’ll just learn how. :)

  6. I think it is essential to any project that has to deal with the development that everyone know at least small elements of how the systems work (even if only at a high level) so that there is greater understanding when it comes to timelines and possible difficulties.

    Most people forget that development/implementation can be much more complicated even though the end-user actions are quite simple.

    • Yeah. That’s certainly something you can only learn by learning how to program yourself. I know that when I use to manage developers without knowing how to code, I wasn’t able to understand exactly what went into things. I now have a much better understanding of what goes into programming and can better lead a team of developers.

      • I think that’s an even more valueable aspect of programming than actually being able to do it perfectly yourself. It’s so valueable to be on the same page as the rest. I remember an article where you mentioned this guy wouldn’t want to work with you unless you knew about programming. And it’s exactly that.

        • Yeah. It’s so true. That was my current co-founder for Uncover https://www.uncover.com. It’s not that he was being an ass and saying that he would refuse to work with me, it was more that he wouldn’t have *wanted* to do it if I didn’t know how to code. A subtle difference.

  7. You need to know enough to ensure a successful product. What’s most important is work ethic, Since you went to Yale, I’m guessing you know a lot about having a good work ethic.

    • I work hard and a lot of hours, but more than any of that I try to work smart. That means I only work when I’m productive and I don’t work when I’m not feeling it.

  8. I’m a CS grad and used to code a lot back in school, but never liked it enough to view it as a career path. In the past year however I’ve been brushing up again on coding and I have to say it’s been fun. I can say that I’m probably like you in that I’m happy to know enough to be able to create prototypes and manage devs. I still can’t see myself dedicated fully to coding; I’ve come to view the holistic building-a-business part more valuable and worth my time.

    I view the ability to code to be an enabler for new potentials in problem solving. Taking deeper dives into the latest and greatest Java libraries and XCode specs, and watching the latest RailsCasts, etc. for me, takes away from spending more time identifying, understanding, and framing real problems and designing their solutions, which is where I prefer to be. One shouldn’t be coding just for the sake of coding. I don’t mean to sound trite or overly obvious, but coding should be a vehicle for you and your team to solve problems. If prototyping is enough for you to discover and think about new opportunities and solutions, then I think you’ve found a sweet spot that suits you. Any needs for heavier lifting, then bring the big gun specialists out and dedicate those resources to the nitty gritty so you can do what you do best.

    I’ve written some more about this, if you care to read it: https://medium.com/teaching-learning/6d23e812348

    • I agree with you 100%. I like this especially: “One shouldn’t be coding just for the sake of coding. I don’t mean to sound trite or overly obvious, but coding should be a vehicle for you and your team to solve problems.” I think we share the same point of view.

  9. If I was a girl, I would probably want to marry you. Are you single?? I have a sister…

  10. I know I am late to the party here, but every child between the grades of 6 – 8 should learn how to program. Almost every school still teaches with the industrial model of an assembly line. For example here is what you need to know memorize it take a test and move on the line until you graduate. Kids today need problem solving skills on top of the basic knowledge and very few schools focus on that skill. No subject in school cultivates those skills more than computer programming. Most jobs today require you to either fix something (sometimes creatively) or make something work (again sometimes creatively) and yet our students are severely lacking those skills. All that being said it sounds like you learned enough for someone not interested in a programming career. If you understand programming basics and can apply them then I would say you are there. After that first year of learning you really are just mastering the craft.

  11. WOW! Every morning new mercies I see! But today– Sunday, September 15, 2013 is a very especial day for me—a very especial anniversary and at 5:20 am what do I see? An amazingly focused individual—no doubt you are destined to go even higher than the cybernetic world! I don’t want to be spammed so, plz let me know if u want me expound my statement.

  12. As a wise professor once told me, “Information is the commerce of democracy.” What an awesome time to be alive. Even though you are not driven to pursue further programming I think you should. Innovation and Entrepreneurship are some of my favorite topics. Information creates Innovation. Information you may be passing up as things in this tech world are evolving at an unprecedented rate.