Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In business they say that to succeed

"Pick one or two things and do them very well".

This is the antithesis of the modern programmer. We are exposed to a constant stream of changes in business, technology, tools and everything else. There are a handful of guys lucky enough to concentrate on one core technology, say C#...then blog about it, be an expert at it.

But all in all, knowing C# well (but no other technology) + 50 cents will buy you a Coke. So, are we all doomed to miserable customers and generally miserable careers? Or, is there some way to succeed despite the "law of business"?

share|improve this question

closed as not constructive by Jon Hopkins, maple_shaft, Aaronaught, ChrisF Jul 28 '11 at 14:52

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.

5  
Worth noting that the phrase shows up in only two places on Google, and one of them is this thread. –  Jonathan Hobbs Jul 28 '11 at 13:55
3  
Is this a real question? There are clearly both generalists and specialists doing fine in the world and being happy. It's just going to elicit a bunch of unsupported opinions. –  Jon Hopkins Jul 28 '11 at 14:15
    
Hyper specialization is a pretty commonly noted trend. –  Morgan Herlocker Jul 28 '11 at 14:17
1  
@maple_shaft - That is a negative and miserable view on work and life. Disagree. –  P.Brian.Mackey Jul 28 '11 at 14:34
2  
@P.Brian.Mackey About your lady-who-opened-a-brownie-shop situation: Do what you enjoy. That's the oft-spoken rule. That lady enjoys making other people happy, so her job is about making other people happy, and that's what gives her a job she enjoys. –  Jonathan Hobbs Jul 28 '11 at 14:48
show 6 more comments

11 Answers

up vote 5 down vote accepted

Maybe pick one or two things that are not bound to a specific technology. For example: become a UI/UX expert, but make sure you keep on top of the latest trends in various UI APIs, rather than binding yourself just to wxWidgets or WPF or SWT. Or go even further and become an expert in a business domain such as insurance or finance, and be a progammer there. In some places, they care more if you know the business domain than the particular technology they use (because the technology changes often; the business, not as much).

share|improve this answer
add comment

Business and programming are different things, and thus have different rules. There are many things that are very important to programming that are not tied to a particular technology or language. You make focus on a general area, but the fact that you have only written C# should not mean you can't write Java.

share|improve this answer
add comment

On the contrary. General knowledge may last longer than knowing specific intricacies of a small field, because you can adapt such knowledge more easily to new challenges.

Most professions are exposed to a constant stream of changes. Be it a secretary (steno and mechanical typewriters becoming obsolete), a craftsman (having new tools and materials), a lawyer (dealing with new laws and court decisions) etc.

Our modern society has changed since the last few centuries: No matter what's your profession you are "doomed" to constant learning and adapting. At the IT industry - which is very young - the pace is probably faster, true. Nonetheless to succeed you must know the the things you are currently doing very well. It doesn't help you to be an absolute pro with C++ if your current assignment is about doing SQL queries. So you still need to pick one or two things and concentrate on it, but you have to pick new ones every now and then :)

share|improve this answer
add comment

In this industry you need both depth and breadth to succeed. You can't learn just one language and still get things done and you are not doing yourself any favors if you only know the beginner level of 20 languages. You need both.

There are a handful of guys lucky enough to concentrate on one core technology, say C#...then blog about it, be an expert at it.

This isn't luck, it's hard work. And don't think for a moment these people don't know at least a little about a bunch of other languages as well.

share|improve this answer
add comment

The keywords in your question are the first two. "In business." In other words "In a field that is related, but is not programming." That alone should be sufficient to conclude that the appropriateness of the 'law' to programmers is subject to questioning.

The important question I think you need to ask yourself is this:

Do you want to be a programmer to get a job, or do you want to be a programmer because you want to be a programmer?

If your answer is the former, you can pick a specialty, get a job, and do it well. If your answer is the latter, then it doesn't matter what the job market is like - you'll be pursuing a wide variety of subjects and interests in the computing field because that's what you want to do. You might only use a handful of your skills with any regularity, at whatever job you get, but specialization will emerge out of experience, not out of necessity.

share|improve this answer
add comment

But all in all, knowing C# well (but no other technology) + 50 cents will buy you a Coke.

Doing one or two things very well is different than specializing. I would argue that knowing C# well (and by well I mean the spec by heart and all of the compiler nuances that go along with it) will get you farther than you expect.

I am not talking about your standard usage scenarios here. Learn the language it all then apply that knowledge. Blog, Tweet or whatever. You will find that many doors are opened to your knowledge.

You can begin even while sitting in your current miserable career.

share|improve this answer
add comment

Let's see... One or two things you say? Then I'd like to be good at the following two (2) things:

  1. Developing
  2. Everything else

There you go. The whole saying is meaningless, because it depends on the granularity of "thing." It's not like anyone would want to be really good at declaring integer variables, for example.

share|improve this answer
add comment

I do not really see the connection between using multiple technologies and having a miserable career. I might be the only one, but I got into this field specifically beacause it is such a rapidly changing field. I get paid everyday to come in and learn about cool new stuff; what is miserable about that! Also, there are certainly other types of expertise than the kind associated with a particular programming language. The core functionality (aka, the stuff people actually use) of most modern programming languages is not even that complex. To be a real expert you have to either proceed into the depths of the language minutia (aka, the stuff that people hardly ever use), or you proceed into the depths of a particular domain you are interested in (UI, Accounting, Security, Compilers, Embedded Systems, etc...anything you could possibly want to do). General knowledge as a programmer is great, but I really do think that we are all on our way to being an expert of something, whether it be a technology, a system, or a problem domain. Also keep in mind that the specialization rule is coming from MBAs, who are not exactly known for understanding the world of programmers :)

share|improve this answer
add comment

Well, I dont agree with you. Even specialists like Doctors keep learning and unlearing throughout their lives. Most high paying careers will involve CHANGE of some type. People who go on to become CEO's didn't start as CEO's or with traits of becoming a CEO while they were freshers, they had to go through continous learning and unlearning throughout their lives. Yes, programming inherently doesn't like specialist but all new learning isn't really new learning. For eg. a Singleton can be used both in Java & C++ and can be a part of the SingleThreaded Model in Servlets.

share|improve this answer
add comment

"Pick one or two things and do them very well".

If problem solving using technology can be a thing then that would be my thing that seems to be OK in fitting this. The technologies used can be almost irrelevant as the user of a form may not give a care if the form is coded in classic ASP, ASP.Net, PHP, C++, or something else as long as it works.

While I have had some frustrations in my career, there have also been moments where I was rather happy and fulfilled that I helped in some great venture. Perspective is a rather powerful force that I'd suggest understanding just how deep that rabbit hole can go. There is a Dr. Phil Life Law, "There is no reality, only perception." that is rather applicable here. What perceptions do you have in looking at this?

share|improve this answer
add comment

No, it does not. It's an obstacle but not a showstopper. There is always a demand for programmers who "just can get the standard job done". Not everyone needs a guru, not everyone can afford a demigod. A versatile, well-rounded guy who can be assigned to any job and do it semi-competently is always in demand.

You won't advance to a higher manager, you won't get awesome bonuses, you will not design the huge systems, but there will always be a cubicle where you'll be welcome and your skills sufficient.

share|improve this answer
add comment

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