share
ProgrammersWhich are the best investments you have done for your career as programmer?
[+61] [34] Amir Rezaei
[2011-01-12 14:52:58]
[ career books tools work computer ]
[ http://programmers.stackexchange.com/questions/36007] [DELETED]

By investment I mean, books, courses, certificates, equipment etc. Many may get these for free from your employer. You may spend thousands of dollars on equipment and stuff but which one gives best value?

Which investment has given you best value for your career as programmer?

(12) Thank you for asking this. I just realized that I barely spend anything, and that needs to change. I can't believe that this question made me draw a total blank. - Tim Post
(4) I used the money I got for my driver license to buy my first PC. I'm a pretty decent programmer these days but I still can't drive :) - konrad
(1) I imagine a computer is pretty useful... ;) - Maxpm
Apart from my PG, I did a complete GNIIT Certification Course at NIIT which took additional 3 years but it is one of the best thing I have done so far! - Karthik
[+71] [2011-01-12 15:23:15] Pemdas

Dual Monitors and a decent keyboard.


+1 for a second monitor - Anto
(4) +1 for Dual Monitors. A widescreen monitor that can swivel to show code length ways is especially handy at times. - Gortron
Dual monitors can depend on the employeer which can be relucant to invest, for various, specious reasons. A ergonomic keyboard is always a good investment. - StuperUser
You can get a monitor for like a $100 now a days...if your employer won't do it then just buy one yourself. - Pemdas
I did, but was then told a) IS wouldn't allow non-standard equipment, b) the graphics card was too old to support it and c) it might upset other developers who didn't have two monitors. I was out of the door after a few months. - StuperUser
(1) Only 2? I got 3 widescreens. DB - Code - Email/Browser - Chad
I tried 3 in the past, it was too much for me, I was beginning to get claustrophobic behind the wall of monitors :) - Gortron
Two widescreen turned 90 degrees (portrait) for reading code. One widescreen (normal landscape) for e-mail word etc that is also on a KVM for use with the laptop. - Loki Astari
(3) 4 monitors is awesome. You have room for all your commonly used tools/IDE windows with space left over and it works great for pairing. picasaweb.google.com/lh/photo/Dl4vTSgdgOUtAzhtweh1ZQ - Handcraftsman
@Handcraftsman Well, now you are just showing off (I say this with a bit of a jealous tone)... - Jesse McCulloch
@Chad, I downsized from 3 to 2 monitors because It made me less productive (email was distracting and I always couldn't find my mouse pointer). - Tawani
We have one guy here with 6...it's crazy. I'm jealous. - Chad
Two 27" screens is enough for me. - Stephen Canon
3 monitors or 1, but not 2 personally: you end up with a big empty space in the middle or need to move your head too much on the side when you have only 2. My favorite was 9 screens with a real helicopter chair for an army simulator, but sadly I wasn't able to keep them :D - wildpeaks
+1. I would add to dual-monitors and good keyboard the pair "A really good chair" and "Code-Complete 2" book. - Machado
just going to leave this here: codinghorror.com/blog/2004/06/… - Aren
1
[+58] [2011-01-12 15:46:48] Carra

A good chair.

You have to sit on it for 8 hours a day so you'd better get a good one.


(5) This cannot be overstated. Wrist and back issues I've watched affect many in this field. Give extra attention to both! - mummey
and how, i need to invest in a good one. my butt is hurting as we speak :( - Sauron
2
[+36] [2011-01-12 15:19:14] StuperUser [ACCEPTED]

Books:

I've got a lot of books for a developer (27 after 2 years), but the two that I would grab if the office caught fire are:


Edit: Book recommendations on StackOverflow [3]

[1] http://rads.stackoverflow.com/amzn/click/0735619670
[2] http://rads.stackoverflow.com/amzn/click/1933988274
[3] http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read

I haven't read "Code Complete 2", but I read "Code Complete 1" and my five-word review is, "do not program like this". - Malvolio
+1 for code complete, @Malvolio - whys this? Any book recommended by Jeff Atwood must be good - billy.bob
Code Complete was first published on 27 May 1993, the .NET Framework 1.0 was released on 2002-02-13. Code Complete 2 was first published on 1 July 2004, after .NET 1.1, but before 2.0. When I read Code Complete 2 I kept it in mind that there would be a lot more about C++ than C#, much like Writing Secure Code. - StuperUser
+1 for art of unit testing. such a great book - cdnicoll
I was in QA for 1.5 years and a dev for 2 before I read it and I didn't grok unit testing properly until I had. - StuperUser
@M.Edmondson -- honestly, I don't remember. I've blotted it out. I still have the book -- issued by my employer, a company famed far and wide for the poor quality of its software -- so I'll check out again tonight if I can find it. - Malvolio
3
[+31] [2011-01-12 15:05:33] Thomas Stock

Good noise-cancelling headphones

If I look at the gained productivity compared to the price, this was my best investment.


Too bad for companies/bosses that disallow headphones because they disrupt the 'collaborative' environment and act as a barrier to communication :p - Alain
Also too bad for companies that consider them a fire hazard. - entens
Could you recommend a specific brand? I've drooled over the Bose ones for years, but I'm a grad student and $300 is how much I spend on food for a month... - M. Tibbits
sennheiser HD 120 pro will set u back around 110€/120€ish and are very good. The ear cushions can wear out, but you can replace them. (which I did after 3 years) I use them daily. - Thomas Stock
sorry I meant HD 280 pro - Thomas Stock
If you're a team of one, I'd agree. I used to wear headphones all day on previous jobs, but eventually it got difficult to have that spontaneous flow of information which often happens in a good team. - l0b0
Even in a team there are (supposed to be) moments where you program "in the zone" without being disturbed. I use my headset about 2 hours a day on average. Some days 6 hours, some days none. I guess it depends on a lot of factors: in a small quiet team without radio I wouldn't use it at all. - Thomas Stock
+1 - I have been using it since 2 years and believe me it true. - Karthik
4
[+29] [2011-01-12 15:59:45] Loki Astari

Time:

Just investing your own time into studying the subject.
Every 18 months I spent some time learning a new language (I use the term language loosely here) just to see how things are done in other languages.

For me reading about techniques/languages is not enough I need to get my hands on a keyboard and try them bash them around a bit and try and understand what the author of an article is talking about.


(3) +1, I believe this, more than anything you can purchase, will provide the best value towards your career as a programmer - Rachel
@Rachel: Time is also a more valuable thing that you can give up. - Loki Astari
5
[+19] [2011-01-12 21:54:09] justin chase

I try to surround myself with people who are smarter than me, then learn by osmosis.


+1 This is how you get better faster. - El Ronnoco
+1 for Osmosis. Highway to success. - Karthik
6
[+14] [2011-01-12 15:06:17] Ryan Hayes

CodeRush/ReSharper

Most things I use to develop are paid for by my employer. The one thing that I've spent my own money on and use all the time now is CodeRush (many others use ReSharper). This little tool has saved me countless hours of refactoring time and other things that normally take a lot of time to do or are "dangerous" (will likely break your code).


7
[+10] [2011-01-12 15:31:46] Frank Shearar

My degree, first and foremost.

And after that, reading c2.com [1]. A lot.

Which then led me to invest a whole time in learning things like Smalltalk, Common Lisp, functional programming and, lately, Haskell.

[1] http://c2.com/cgi/wiki

what do you read on c2.com? it looks like the entrance to the site is mostly meta-wiki discussions. - Yar
I used to go to the RecentChanges page and grab something that looked interesting. Or, when I have something in particular I want to investigate - say, object = structure + closure - I'll google with site:c2.com. - Frank Shearar
And now I'm trapped in c2.com again: c2.com/cgi/wiki?FunctionalTest See you in a few hours! - Frank Shearar
8
[+10] [2011-01-12 20:32:50] Alain

Honestly, my best resource as a programmer has been taking the time to get involved with online communities such as stack exchange, experts-exchange, and programming language-specific forums and sites.

You gain a wealth of knowledge and skills in not only specific languages and environments, but in the art of describing problems and solutions. It teaches patience, diplomacy, generic problem-solving skills. This sort of experience makes you an invaluable employee at a small company, where you earn the reputation of being able to solve almost any problem, even outside of your expertise. If you're working on your own, having quick access to such communities, plus your acquired self-sustenance, will save you thousands on consulting and hours of time.

I'm still just at the very start of my career, but investing the time to be involved in a community that shares problems and solutions on a daily basis has potentially infinite value at zero cost.


(1) +1 For good point, such as "It teaches patience, diplomacy, generic problem-solving skills" - Amir Rezaei
+1 Count me in. Wisdom shared and gained are out of the world! - Karthik
9
[+10] [2011-01-12 23:50:12] webbiedave

Investing the time to learn the real dangers of Repetitive Strain Injury/Cumulative Trauma Disorder [1]

From Wikipedia [2]:

Repetitive strain injury [...] is an injury of the musculoskeletal and nervous systems that may be caused by repetitive tasks, forceful exertions, vibrations, mechanical compression (pressing against hard surfaces), or sustained or awkward positions.

More than just a good chair (which is a must), you need to be aware of desk/monitor height, changing focal distance and -- most importantly -- getting up and stretching throughout the day. If you're going to be programming for years to come, learn and implement preventative techniques now! It will save you much pain and heartache in the future.

[1] http://en.wikipedia.org/wiki/Repetitive_strain_injury
[2] http://en.wikipedia.org/wiki/Repetitive_strain_injury

10
[+9] [2011-01-13 05:15:33] Avinash

High Speed Internet

Internet is playing major role while you are learning a new things.


+1 - As more education tutorials are video based, good internet can save a lot of buffer time. - Karthik
11
[+7] [2011-01-13 16:45:39] espais

Learning how to use VIM, and then setting up gVIM to be my default editor on my Windows dev machine.


12
[+7] [2011-01-12 16:09:52] Pierre 303

Trainings + Conferences

I invested a huge amount of money is all sort of trainings and conferences. I have no regret and still have a yearly budget for that.

Books

During the past 10 years, I purchased an average amount of 1,25 books a month (I have more than 150+ technical books) and according to amazon, I kept that pace in 2010. I think it's the easier and cheapest investment you could make as a developer.

Experience

The next big investment you could do is failing. Failing fast, often, in many different situations. Failing has a big cost. But the reward, what you learn, is far more valuable.


13
[+6] [2011-01-12 15:41:12] theChrisKent

Believe it or not, my Microsoft Certification in SQL Server has been one of the best investments for me as a developer. I think certifications in general can be a great investment since it requires you to learn the material to the point of being able to pass a test. Some could argue that real world experience is better, and I agree, but a certification course/test still has a lot of value. I call out my database certification in particular because having a good understanding of database design has dramatically increased my skills as a programmer.


(1) I agree that certification is valuable in that it forces you to learn a bunch of nitty-gritty stuff that you'd never learn by just doing your job. It forces you to learn how to use the tools the way that they were meant to be used. That said, be aware that certification is of limited value in gaining employment if you don't have relevant experience to back it up. - Kristopher Johnson
@Kristopher Johnson - +1 for If you don't have relevant experience to back it up. +1 for Understanding of database design has dramatically increased my skills as a programmer. - Karthik
14
[+5] [2011-01-12 15:02:05] Goran Jovic

Buying a nice flat screen instead of my CRT from the older days, and also an ergonomic keyboard and a mouse pad with that pillow thingy for my wrist.

It didn't generate a monetary return on investment, but my eyes and hands are quite grateful.


15
[+5] [2011-01-12 22:38:51] Macke

1,5 year at a game company startup that ended up setting me back financially a bit. Got a real job then and was back to zero after a year or so.

However, I learned a lot. Both about software development, architecture, ecosystems as well as traits and issues to look for and avoid with companies, projects and people. Had a great time with good friends too. :)

You learn by mistakes, and you don't make mistakes by playing it safe.


+1 @Marcus In order to attempt to hit a home run you gotta swing the bat. Gotta say that jumping on the start up in any industry takes brass but start up in the game industry takes steel. Love your mistakes - Terrance
16
[+4] [2011-01-13 04:38:55] puddingfox

Get a job/internship in computers

A lot of the other answers given mention investing time or coding a big project but these only really hit the tip of the iceberg. The point of doing these things is to force yourself to do something unfamiliar, learning in the process. If you get up one day and decide to write another program in a language you already know, you will learn some from the new techniques necessary to solve the problem, but you are still only expanding in one direction.

Myself, I've been employed at my university for a little over a year as a junior system administrator. While this hasn't directly forced me to expand my programming ability, it has given me the opportunity to do a lot of things I couldn't have done alone. I am often given the job of maintaining former employees' hardware and software so this forces me to learn languages I never would have taught myself like Perl and PHP. I get to use older, retired hardware for my own projects such as building a website and managing a small domain. These projects built my skills in bash and python scripting. Finally, being a system administrator has enabled me to build my interpersonal skills with other computer-minded individuals.

In short, having a job in the computer field, even if it is only loosely related to software development, expands a programmers understanding and develops skills that wouldn't have been exercised elsewhere.


+1 For "In short, having a job in the computer field, even if it is only loosely related to software development, expands a programmers understanding and develops skills that wouldn't have been exercised elsewhere." I agree with you! For example as administrator you may learn about computer network, security, OS etc. which is also a quite good knowledge for a programmer. - Amir Rezaei
17
[+4] [2011-01-13 16:30:49] egil

Working with the commandline and its utilities
Having spent most of my time in the Windows domain, changing over to unix/linux for a while and learning to do everything at the commandline (compiling, sed/awk/grep, system administration etc.) has completely changed the way I think about most of the development tasks I do.
Knowing what the IDE does during compilation and the 'find-the-best-tool or write a script' mentality does wonders, also when returning to domains where this is not the common practice.


18
[+4] [2011-01-12 20:26:13] Brian Hooper

Although it probably isn't what you are expecting, the best investment I have made recently was the admission charge for the Durham Beer Festival. It was here, with my elbow on the bar, that I learned of a contract that I have since won. I have since resolved never to miss the Durham Beer Festival again.


19
[+3] [2011-01-12 18:46:23] Anto

I spent around 450€ on components which I used to build a simple home server (Dual Core Pentium 2.93 GHz, 2GB RAM and 1TB HDD). It runs Ubuntu Server Edition 10.10 and I host multiple things on it, many greatly enhanching my coding productivity.

Some things one could mention:

  • File Server (using SAMBA)
  • SVN Server
  • LAMP Server
    • Personal wiki using MediaWiki (to e.g. plan software)

I might add some more things, such as support to off-load compilation onto it and if I did more web development I would probably use it as a testing server


I like this, but obviously it should be targeted at your preferred/selected development platform. I use Windows Home Server on mine. - Matthew Whited
20
[+3] [2011-01-12 16:15:37] Simon Whitaker

I'd been a self-taught developer for years but only started getting sensible job offers after I'd been back to university and done a Masters degree in computing. It's paid for itself many times over since. (I'm not sure it made my code any better, although it did make me a more rounded developer - but the truth is that a degree in CS is a very valuable asset to have on your CV/resume.)


+1. I have been through the same road except the fact that I perused my MCA. :) - Karthik
21
[+3] [2011-01-13 06:54:30] Fraz Sundal

Fast Laptop for development I Buy a laptop that doesnt frustrate me and that helps me doing my work in peace. Configuration Intel Core i5, 4GB RAM


why not a good PC? - Hoàng Long
We have some power problem in our area thats why Laptop is a better choice - Fraz Sundal
22
[+2] [2011-02-13 19:49:59] Zachary K

Publish!

I wrote 3 articles for O'Reilly's "onLamp" magazine some years ago and I landed at least a bunch of interviews because of them. I am now working on a book on HTML5 for O'Reilly that should be out in the spring.

In addition to looking good it forces you to really think about your topic and present it clearly.


23
[+2] [2011-01-15 00:05:44] Bergius

In addition to the many sensible answers here, here's a tip to people using non-English keyboard layouts: set up your system so that you can switch between your native layout and a standard US layout, and invest the few weeks it takes to learn to code with the US layout. It'll increase your speed and reduce strain. The languages you're using were (hopefully) developed for the US layout.

I moved from the Swedish layout approximately 5 years ago. AltGr is not meant to be used when programming :).


Another option is to create your own layout. I have combined the Czech and English layouts, so that the first row contains Czech letters and special characters that are there on the English keyboard. This means I have to use numpad to type numbers, but that's okay with me. - svick
24
[+2] [2011-01-12 16:16:23] falclif

Web Hosting

Being a recent college grad, I didn't have a lot going for me in the connections area so I ordered some web hosting and started on a personal project. Through that I was able to make my own website and learn some new languages which helped me land my first job.


25
[+2] [2011-01-12 18:19:17] Matthew Whited

Third party libraries and tool kits. The extra speed you can get out of a well selected toolset can be a time (and money) multiplier


Totally agree, as a general piece of advice, remember if you're thinking to yourself "what I'm doing had to have been done by someone else before" whilst coding something, time to take a 5 minute Google break from your code to find out. - tekiegreg
At the same time there are things that you may have to reinvent (see deepzoomtools.dll) - Matthew Whited
26
[+2] [2011-01-12 15:03:36] Fanatic23

I would say there are 2 investments that generated the max. return on investment for me:

  1. Books: From Wirth, Kernighan & Ritchie, Stroustrup, Papadimitriou, Skiena and the likes

  2. The right equipment: My IBM Thinkpad with 2GB RAM 1.83GHz with WinXP, VMWare and Ubuntu may seem a trifle dated in these times of cloud computing, but they have survived loads of experiments that helped me learn how these beasts work.


27
[+2] [2011-01-12 14:58:32] Eimantas

That'd be probably some books. Although I do consider these things given. Best investment you can make is your own time. I'm thankful for sleepless nights in high school while trying to learn HTML, PHP and SQL (10 years ago). Those are the best investments in my life. They got me first job, which led to more books, courses, equipment.


28
[+1] [2011-01-12 20:04:24] Chocol8

I guess the DevExpress components


Can you provide more information about why these were a good investment. You don't have to write an essay - a short paragraph would do. - ChrisF
29
[+1] [2011-01-13 07:22:48] Corey Ogburn

Specialized schooling

I went to a community college and began getting certifications. I had a chance to get an Associates degree if I filled my two years there with gen-ed classes and a few specifics. Instead, since the school let me work at my own pace, I ran through as much stuff as I can. In my two years there I completed two courses that should have each cost me two years of my life. I'm not trying to show off, I was just hungry to learn. Network topographies, website architecture, Java, C#, PHP, SQL, HTML/CSS/Javascript, multi-threading, network transactions, e-commerce, website and general cyber security, we covered so many topics and I got several certifications in my time. It really wasn't hard if you actually want to learn it. I learned a lot of things for starting out with only a little VB6 knowledge.

My time there is priceless to me and by far one of the best decisions of my life.


So it was a good/robust starting point. - Amir Rezaei
My experience was well balanced. I was shown a diversity of options both in administration and development and helped me obtain more than just a simple understanding of all the mentioned subjects. I've learned so much more since I left that school but it gave me a great foundation (and looks good on the resume, too). There's always more to learn, especially in this field. Life long students. - Corey Ogburn
30
[+1] [2011-01-13 11:48:27] community_owned

Books, courses, and equipament are very, very important. You should read and study a lot, no doubts about that.

But don't overlook the non-technical aspects of your career. Health, mood, and stress level can harm more than those things can help you. There is no best investment, only a balance between every aspect of your career. I know this sounds obvious, but what we usually sacrifice first?

Bought a new notebook? Try to spend at least the same amount on a travel. Read 2, maybe 3 romances for each technical book you read. Equilibrium.


+1 Very good point "Health, mood, and stress level can harm more than those things can help you." - Amir Rezaei
31
[0] [2011-01-15 01:03:31] red-dirt

3 college courses:

Data Structures and Algorithm Analysis... focusing on proofs rather than implementation.

Computer Systems... nothing like learning to program a BST with recursion in assembly.

Discrete Mathematics.

Learning to touch type, and then learning VI have both come in handy too.


32
[0] [2011-01-13 16:52:13] l0b0

Perfectionism is of course not a virtue, but attacking a problem hard enough that I understand the fix and its limitations instead of just monkey patching always widens the knowledge basis and opens up possibilities for improving existing code. One bug fix almost always leads to improvement in several places.

The MSc in CS helps getting the "big picture" as opposed to just adding features until you end up with a big ball of mud.

Switching to Linux has made me much more productive by facilitating keyboard use and allowing an enormous amount of customization to my mode of work.

Basing all software on the shell or the web rather than a GUI gives you a ton of flexibility for free.


33
[0] [2011-02-18 12:41:53] WebDev
  • First Investmenst was learning the course of programming .
  • Purchased Laptop.
  • Internet Connection.
  • at last My Spax for reading on computer long time.
  • And of course my Time

34