Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What are the things that took you only a little time to learn, but had a big payoff? And how long did it take to learn enough before the they began to pay off?

For instance, I’m not a master of regular expressions, but it probably took a couple of hours to understand the basics enough for to start using them and they come in handy on a regular basis.


migration rejected from Aug 11 '14 at 18:36

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as not constructive by Mark Trapp Dec 17 '11 at 3:44

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

I’m not a master of regular expressions, but it probably took a couple of hours to understand the basics enough for to start using them and they come in handy on a regular basis. Tip: First you don't use a tool when you should because it seems too difficult to learn. Then when you finally learn it you start to use it when you shouldn't. Be careful not to abuse regular expressions where they are not appropriate. – Mark Byers Jan 11 '11 at 14:15

38 Answers 38

Writing software typically requires you to keep track of thousands of tiny subtasks. During my first years as a professional software developer, I learned how to do this efficiently. Later on, I discovered that David Allen has described this methodology in his book Getting Things Done. Since then I wished I was taught this at school.


Agile and in particular Estimation:

The ability to collaborate on generating estimates.
Over the years doing estimates had always been one of those black arts that leads and managers did without real feedback or explanation to make the plans fit the schedule.

But over the last few years the rise of agile (especially scrum) has opened my eyes to a whole set of new tools for planning and estimation. I am now a die hard fan of the ability of scrum to accurately estimate (after a couple sprints to calibrate) the cost of a project and quickly identify when things are getting off track.


It really depends on what kind of software you develop. Looking at the big picture I would say that learning Domain-Driven Design and Design Patterns had a really nice return as I would communicate more efficiently, design better software and find clever solutions to annoying problems.


Here's a few:

  1. Classes
    1. Inheritance
    2. Polymorphism
  2. Constructors/Destructors
  3. Perl Memoization
  4. Javascript Closures
  5. Stack Overflow/Wiki Codes

I like the question, a lot. As a professional developer, I'm learning things all the time and after all these years, I want to know what has helped me the most to stay employed and have a comfortable living but as a result of the contributions and positive impact that I've created with the products and services that I successfully built and shipped. There's no other way for me to measure success.

I continuously ask myself this very same question all the time and since long time ago. I think is a very honest way to evaluate you in the mirror.

I like the investment term that you used: "return on investment" or aka ROI. Ultimately a successful career is the result of the accumulation of multiple smaller successful investments and minimizes or cut your losses; yes you can have losses also. But if you play the game well: re-invest your winnings and minimize or cut your losses, you will be rewarded with a comfortable living and some decent savings, or better have your own mini Microsoft, mini Google, etc.

Ok back to reality with some very pragmatic programmer skills examples.

In my case, I can easily say 2 things have given me a very good ROI, and it hasn't stop, they keep giving me every day. A very good sign of a good investment: they keep giving to you even when you are sleeping! Let me check...ok the market has closed and my online statement was just updated, so I have fresh numbers:

English = 1*10x12 %

SQL = 1*10x9 %

Unix = 1*10x9 %



English (my native language is Spanish) opened many doors to me and exposed me to the widest array of programming material known today.

SQL, when I originally studied E-R theory, and SQL as an implementation of that, we only did it on the chalkboard and on paper exclusively. The concept had like 5-7 years of being announced, and commercial SQL databases were very expensive and unavailable for small universities. I really liked it and learned all about the E-R theory: entities, tuples, relationships, primary key, foreign key, joins, normalization, etc. There were not free things like PostgreSQL or MySQL, which I wish I had had. The first DB that I had all for myself was MS SQL 6.0; I think it was the first release of a SQL database product from Microsoft.

Unix – Linux/GNU tools, what can I say about my favorite OS and associated tools?

The interesting thing about these programming skills, is that they have been stable for the longest time: they are not the latest hot buzzword or you don't see them being used as a fashion statement. They are just sitting there, not making too much noise but they are solid as the Gibraltar rock. You can easily research some old "skills" that were very popular in their time and now they are obsolete or almost dead: PowerBuilder comes to mind. No, these skills can be boring but they are solid investments and keep giving me very juicy returns, year after year.


Writing things up clearly for other programmers and also for management - letting people know what you're doing and why, clearly, articulately and succinctly.


From time to time I ask myself what I would tell to the past-myself if I could send a message through time-continuum, or what to suggest to a newbie asking me "what should I learn now?".

My first answer is: a scripting language.

Not a specific one, but one which you can use to write some "quick and dirthy" stuff to get your results immediately. Perl, Python or Ruby may be good choices. For me learning Python has been a good investment.

My second answer is: a functional programming language.

Learning it gives you a good elasticity, and you finish in solving quickly problems with a few well-crafted lines, for instance placing a good foldl instead of 30 lines of code. Often this kind of functionality is also available in non-functional language (again, take Python, suggestion: see itertools, how nice is that?).

My third (and last) answer is Regex.

As other users pointed out, this is a totally good skill to know. Combine it with a good regex-aware editor and you'll be fast as light in boring, repetitive and error-prone jobs.


My computer science degree and high GPA and all has helped me to get a foot in the door, but my physical looks have helped me to propel myself to a much cushier position in life. So, I work out regularly, eat lots of nuts, eggs, protein powder and I wax and bleach myself.

+1, Health is very important, however it is not really a skill, but it is a skill to maintain it. – NoChance Nov 17 '11 at 16:56
That is pathetic and disgusting. And, pathetic and disgusting as it is, true. – mjfgates Nov 17 '11 at 18:11

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