Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
scroll top