I know someone who is a very good programmer with a good software development job and income. However, he spends practically all his time on his computer. Whether it is work or his own projects he is always programming or learning about new programming techniques etc.

I am wondering, do I have to be like that to be a good programmer? I enjoy programming a lot and I enjoy learning about new stuff, but I simply don't spend as much time doing that stuff as he does. Does this just mean my "experience rate" will be slower, or do I simply have to be on top of all new information that comes out and be constantly improving and practicing my skills, or I won't be good enough as a programmer?

closed as primarily opinion-based by Telastyn, user40980, Ixrec, Philipp, user22815 Apr 20 '15 at 1:34

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    "good" - probably. "Successful" - probably not. – Telastyn Apr 19 '15 at 23:21
  • 6
    You sound like "I don't want to become that ugly nerd, but I'm studying programming, so... will I morph into that?" YES YOU WILL. – ZJR Apr 19 '15 at 23:42
  • There different kinds of "successful" programmers... I know a genius programmer, no less, (97 average on a comp-sci BSc) who surfs, skydives, and some years ago worked a little as a male model. Though, you sound like you'll become a fat nerd... ;-) – AK_ Apr 20 '15 at 15:10
  • Several studies have shown that working regularly more than 40 hour weeks can actually cause a negative work rate, so all that extra work may be wasted or even counter productive (random reference: andrewjensen.net/should-you-work-more-than-40-hours-a-week) – Richard Tingle Apr 21 '15 at 6:09
  • See below for my answer, but as an example I am a lead developer in a team in a very large software firm (hundreds of developers across several products in the Enterprise Software space), and in the mornings and some evenings I am training for triathlon, with an end goal of completing a sub-6hr 70.3 Ironman in October. Also, I catch up with friends, and do home improvements on the weekend. I make enough to pay all the bills with a bit to spare for fun, and my partners income gets saved in it's entirety for investments. I would call that mildly successful. – MattJenko Apr 23 '15 at 7:16

It depends on what you mean by "succeed".

If you mean succeed in the classical sense, as in to make as much money as possible with absolutely no regard to personal health, relationships, etc. then it will be much harder if you are not programming all the time. People who get jobs at Google, VMware, etc. are either geniuses or work 60-80 hour weeks to make the money that they do (generally, this is not a broad paintbrush here).

However, I do not view success that way. To me, working all the time and forgetting about health, relationships, etc. is quite easy to do. I've met plenty of people who make way more money at my age who also don't have any real friends or hobbies. They are part of a "get rich or die trying" diatribe which seems to me doesn't leave much for happiness. I've seen more unhappy rich people than happy ones. To me, that is not success. What is very difficult to do is to have a balance where you can leave work and pursue healthy, creative endeavors and foster a balanced life where work is only a part of it (albeit a significant part).

You get to define what success means to you. Me, personally, I work to live, not live to work. I like programming and learning, but I also love my hobbies, exercising, and dating. I have recently gotten into photography as a hobby, and I love it. I also believe that a good programmer is a creative programmer, and I believe that my new hobby will help me at work as well, to think outside the box.

Keep in mind that the way to truly make lots of money and "succeed" is to get into management and lead lots of people. If you don't take the time to develop the social skills necessary for this, a programmer will be a programmer forever. Programmers have a glass ceiling once they hit 40 or so, but for management, the sky is the limit.

  • Thank you for your answer. When I say "succeed", it is like what you said. Money is not my goal here. I want to be a successful programmer so that I can do well at my job and provide for a family some day, but not so much that I become dead to the world and my computer is my life. – Christopher Spencer Apr 19 '15 at 23:53
  • You're welcome. I struggle with the same thought quite often, and always come back to what I typed above. In the end, do what makes you happy. Programming is a great career and can provide well whether you work 40 hours a week or 70, and that is what makes it such a great field IMO. – Lawrence Aiello Apr 19 '15 at 23:59

Depends upon your metric.

I've been a professional programmer for 25 years. The people I most like to work with know what technologies to apply when. You can be a very effective coder without being on the bleeding edge if you have the maturing and common sense to know when a solution is appropriate.

I have come across many coders who blindly apply the latest technologies without taking into account:

  • how they are going to scale when the program gets 10x (or 100x) bigger
  • how they are going to scale when you have millions of rows in a database
  • how appropriate they will be when other team members with less experience have to use them
  • how quickly they can be deployed

IMHO, maturity only comes with experience (often, not even then). Hours tinkering at home gives you experience tinkering. It does not necessarily make you a more effective coder at work.


Being a great software engineer is not always about the more technologies you know, the better you are. It is essential to know basics that apply across technologies, e.g. patterns, testing, automation, requirements gathering, etc... It is important to know HOW to figure out what you need to use and you also need to know when to step back and ask for help. (You do not need to know everything)

A great software engineer most companies want to keep are solid in their understanding of practices and can scale out their talents to not just produce great software in isolation but also to influence others in the right way. Great engineers need to know how to communicate the right way (with peers or high management) and how to tap into others talents and how to improve others around you. These things are a lot harder to learn and require a completely different mindset than learning a new language or technology but these are things that you learn on the job by changing your behaviors and not something you have to go home and study from books after work.


In your comment to Lawrence, you elaborated "Money is not my goal here. I want to be a successful programmer so that I can do well at my job and provide for a family some day, but not so much that I become dead to the world and my computer is my life."

Then yes, you can certainly achieve that as a programmer without unbalancing your life. I would say it is easier to achieve what you want that way, in any case. There are certainly many unbalanced programmers and unbalanced programming work environments, but you don't need (or, probably, want) to compete with those programmers or suffer with those workplaces.

What you do need, is to develop your general understanding of computer engineering, enough skills to do some useful things fairly well, and then to find a relatively sane and stable workplace. If you like working with computers and find programming makes sense to you and is relatively easy to figure out, then probably you're pretty well-suited to becoming a good programmer.


Edited to be more answer-like:

No, you don't need to spend all your time on a computer to be a good developer. It's all very well and good to be on top of every new technology that comes out, but in my experience that doesn't always lead to the knowledge of how best to apply those technologies to real business processes. Sometimes, your time is better spent understanding how to get the greatest gains from the mature technologies you already use, rather than trying to integrate new technologies that no-one else has experience with.

Another thing to keep in mind is that as a programmer, you do not write code for the sake of writing code. Depending on your definition of 'successful', it may be more worthwhile spending time understanding the business processes behind the software you write, and that understanding generally isn't gained on a computer.

No-one is saying that spending all your time on a computer won't make you a better programmer, but spending some time in the real world, understanding how software is used, can make you a better software engineer.

Also, if (when?) you become a lead developer due to your knowledge of how stuff works, you generally are given more flexibility with pushing the technological boundaries, and implementing technologies you may not as a general programmer.

  • 3
    This does not answer the question, it reads more like a comment. – user22815 Apr 20 '15 at 1:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.