8

Possible Duplicate:
Is it better to specialize in a single field I like, or expand into other fields to broaden my horizons?

Recently, I don’t know from where I got a thought in my mind that, “is knowing .NET development environment enough for a successful career in IT industry”. Should I be learning more languages too or will .NET suffice me for next 10-15 years.

By successful career I mean earning decent living and having good growth opportunities.

rsapru
  • 219
  • 1
  • 5

15 Answers15

19

If you want to be stuck in the same place forever, then know .NET and forget everything else.

Because technology moves, as do development environments and languages, the developers need to move as well.

Example (though I am a bit of an oddball), in 25 years I've actively used APL, BASIC (more varieties than I can remember), Fortran (several variants), C, C++, Pascal, Delphi, Ada, and a bunch more I can't even remember.

These have all been for large and complex projects. Then some of these were on operating systems (Windows, unix[es], linux, other strange proprietary OS's, IBM MVS/TSO, etc). And some have been on the bare-metal hardware (lots of embedded stuff), some had RTOS environment, some didn't.

The point I'm making here is - if you learn new things and move in new directions as the needs arise you will be more knowledgeable and more employable.

The danger of learning one thing only is that obsolescence creeps up on you. There are not so many jobs these days for Fortran programmers - or buggy-whip makers :)

quickly_now
  • 14,822
  • 1
  • 35
  • 48
  • Good one quickly_now. :) – PradeepGB Nov 19 '10 at 07:51
  • 1
    +1 Nice post. I was about to write my own answer, but it was basically exactly what you said, so there's not much point now :). - Except that I've only been a professional programmer for a decade, and the list of obsolescence and technology evolution on my resume is already quite impressive. – Bobby Tables Nov 19 '10 at 07:54
  • 2
    When you choose a career in technology, you should expect yourself to never stop learning and to always be pushed towards the "new" technology. You can not be "static" in this field. Just look at some Job Requests. Rarely do you see a request for a .NET developer without some other requisite skills. – Josaph Nov 19 '10 at 12:04
16

“is knowing .NET development environment enough for a successful carrier in IT industry”.

No.

You probably can have a career knowing only .NET, but this attitude is the antithesis of the attitude every single good or successful developer I have ever met has had.

Good developers are curious, good developers are always hungry to learn new ways of doing things, new technologies, new techniques. The accumulation of knowledge and knowhow is catnip to good developers.

Bad developers don't want to learn new stuff, keep within their comfort zone, put a box around the limits of what they are prepared to learn.

So the answer, again is no. Not because there is anything wrong with .NET (the answer would be the same whichever technology was mentioned) but because of the attitude inherent in the question.

DanSingerman
  • 1,681
  • 3
  • 15
  • 14
  • 2
    I guess it depends on how you define "successful," doesn't it? Let's face it, not everyone is going to go out and learn Haskell for the "experience." The .NET framework is still evolving, and there's already enough in there to keep a curious developer busy for years. – Robert Harvey Nov 19 '10 at 20:30
  • 1
    +1 for recognizing that good developers are curious and look to new languages and frameworks as tools for solving new problems, or improved tools for dealing with existing ones. – Fil Nov 19 '10 at 21:42
  • There are exceptions. I work with a person doing development in Cobol for last 20 yrs and he/she is a fantastic developer and an asset to the company. A lot of her value is from the domain knowledge and knowledge of a core system that has organically grown in last 30 yrs. I have in the past worked with embedded systems (mobile phone) developers who have been developing in C for 15 yrs. The hardware has changed tremendously during this period but they still programmed in C and had enormous knowledge in marrying hardware to software. – softveda Nov 19 '10 at 22:36
  • I would also think that Linus Torvalds (and other Linux Kernel hackers) will continue to develop in C for foreseeable future and they are some of the best and most successful developers. So it would be wrong to say that knowing a single language is a bad attitude. – softveda Nov 19 '10 at 22:43
  • There will always be room for a FEW specialists. I for example do 90% of my work these days in C also. But that does not stop me from leaping in PHP, C++, (more damn) BASIC, and whatever else is specifically needed to solve the problem-of-the-day. – quickly_now Nov 20 '10 at 06:40
  • @pratik You think Linus Torvalds only knows C? Really? I'd bet he's played with pretty much every language out there. We know he has looked at VB for instance: http://www.codinghorror.com/blog/2006/07/linus-torvalds-visual-basic-fan.html – DanSingerman Nov 21 '10 at 09:21
5

A lot of these answers have focused on the question of programming languages. And I agree, there will be few successful programmers that only learn one language.

But the question seems to me more about programming worlds. And you can live successfully in within a world. If your goal is to do Microsoft programming, you really don't need to know Java and the related frameworks. But you might need to move from VB to C# to F#, etc.

Walter
  • 16,158
  • 8
  • 58
  • 95
Eric Wilson
  • 12,071
  • 9
  • 50
  • 77
  • 1
    +1 for being the only one to abstract out the language from the question. You could easily subsitute Java for .NET in the question and most of the other answers would fail because of the focus on the specific language. – Walter Nov 19 '10 at 12:56
4

Technology keeps evolving during the time. Setting the career goals based on only one development environment can be risky. I believe 10 to 15 years is too long time to envisage state of any technology.
We should be open to work on any development environment in our software development career. Of course, we may have our favorites and we may have more expertise over language than other but knowing other development environment will help. Let us say, If you become manager of the team which is developing software under different environments, at least you will be in position to guide and understand the internals of the ongoing project.

PradeepGB
  • 1,110
  • 1
  • 8
  • 14
3

There are two distinct sets of skills involved in being a developer:

  1. The Generic relating to how to analyse, design and construct decent applications
  2. The specific relating to the toolset you use to implement those applications

There are - or certainly have been - people who exist at a level of "coder" and whose skillset is limited to a single language but, I think, progressively less so as any programmer is (or at least should be) expected to be more rounded.

If you have the former and an ability to adapt to new variations or alternative toolsets then you shouldn't have a problem.

Right now I write .NET applications - have done for 8 years, will probably continue for a long time... but in doing so I've also needed to understand HTML, SQL, XML, XSLT, and JavaScript amongst other things. I'm learning the wonders of jQuery and also of XAML. I'm looking at F# (amongst other things) because I might usefully be able to apply it. Neither the .NET framework nor the languages you can use are standing still. And I mustn't forget PowerShell...

Prior to that was VB.OLD and some Turbo Pascal and prior to that a variety of stuff.

I've also, over the past 25 years, looked at and learnt about a variety of different industries and businesses as I endeavour to learn the domains as I develop solutions for them. I also have a moderately decent understanding (though not to a sysadmin standard) systems and networks and making things talk to each other - simply from the need to be able to have the platforms to develop on.

Right here, right now, .NET is a vast and capable platform with decent languages and tools and as good a place to be employed as anywhere - more important (I think) are the broader skills, unit-testing, agile methodologies, application of patterns (understanding of good principals like inversion of control) and good practice (use of VCS and build servers and the like) - these are portable skills that need to be kept up to date as things develop.

I could go on (in case you hadn't noticed) - but the simple answer is that so long as you grasp that you are a "developer working on the .NET platform" rather than a ".NET developer" (or worse a "C# developer") you'll be fine.

Murph
  • 7,813
  • 1
  • 28
  • 41
3

IMHO: Peter Norvig already answered this question much better than anyone else:

Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).

Mladen Jablanović
  • 1,267
  • 7
  • 10
  • 4
    And if we have lives to be getting on with? – Jon Hopkins Nov 19 '10 at 10:13
  • 4
    How exactly would learning a new programming language restrain your life?! 1) Learning new language can happen during worktime. 2) Learning language B should improve your efficiency in language A, so invested time will eventually pay off. 3) Learning new languages is fun, and we must have some fun in life as well, right? – Mladen Jablanović Nov 19 '10 at 10:31
  • 1
    I am surprised that someone gave a down vote to this answer :-( I was reading some where that learning a lot of languages(spoken) keeps the brain sharp I think the same should apply for programming languages as well :-) – Geek Nov 19 '10 at 10:37
  • 1
    @Mladen Jablanoić - My issue is not with learning something new, it's with the size of the curriculum Norvig sets out. There are many things that it would be useful to know but the reality is that it's entirely possible to be successful without knowing half of what is being discussed and I'd argue that it's probably not the best use of the persons time. – Jon Hopkins Nov 19 '10 at 11:43
  • @Jon Hopkins, learning the basics shouldn't really take more than a week of "leisure time" (although learning it to the point you're a productive professional is obviously a bit more, but taht's not, I believe, what Peter Norvig is saying). So, we're talking about "under two months" here. – Vatine Nov 19 '10 at 13:12
  • 2
    @Jon, @Vatine: Considering the title of the article, I think Norvig rather had in mind longer period of time. Learning 5-6 programming languages in course of 5-10 years doesn't seem that hard. Perhaps his example languages are not that attractive (anymore), but the point is there - for example F# or Clojure in part of Lisp or ML, let's say XSLT instead of Prolog etc. Doesn't seem to require any particular sacrifice. – Mladen Jablanović Nov 19 '10 at 13:28
  • Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Lisp), one that supports functional abstraction (like Lisp), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Lisp), one that supports coroutines (like Lisp), and one that supports parallelism (like Lisp). – Robert Harvey Nov 19 '10 at 20:38
2

First things - timescale. .NET isn't going to last you 40 years but you'll find that it will relatively naturally segway into something else as it dies so I'll assume you mean "is knowing .NET enough while .NET is around".

It depends how you define successful.

If you mean will you make plenty of money, get to do some interesting work and work at some OK companies with decent people then yes. MS technologies tend to "cluster" in that companies will often use a full MS platform so .NET alone will cover a massive chunk of their needs and you can make a career out of it and many people will. In addition whatever you may read about the decline of MS they're still very much alive and not going anywhere fast so there are going to be plenty of opportunities for the foreseeable future.

However you will probably find that you'd benefit as a programmer from seeing a bit more than just the way MS do things and that it might give you deeper understanding of what you're doing, even if you do decide to bring that experience back to working as a .NET developer.

So can you be successful - yes. Could you potentially be more successful and maybe happier if you saw what else was out there - again, yes.

Jon Hopkins
  • 22,734
  • 11
  • 90
  • 137
2

There's plenty of jobs for people doing COBOL, and .NET will stick around for similar reasons. Whether you want to be the equivalent of a COBOL programmer in 2025 is, I suppose, up to you.

To you, is a career just a method of making money throughout your life, or is it at least partly a journey of exploration and learning? Personally, I think life is short enough that I don't want to spend that much of it simply making money, and so I'm glad I'm in this business the way I am.

David Thornley
  • 20,238
  • 2
  • 55
  • 82
2

While knowing .Net can be a plus, I really doubt that one could stay just within just .Net and not end up getting into either a UI specific language like JavaScript or some database work, possibly T-SQL or PL/SQL to give a couple of examples. While these may be considered within a .Net development environment in a broad sense, they are other technical skills that can be useful in securing employment.

I'd also be careful of trying to get too specialized as the .Net platform could grow rather broadly to some extent. There may be times where a new version of the framework brings in some other big changes like how the 3.0 version added WPF and WCF to give a couple of examples. In other words, even within .Net there can be new things coming along that may change things in the next 10 years.

JB King
  • 16,795
  • 1
  • 40
  • 76
1

If you refuse to learn anything else then it might (and only might) not be enough.

Now if you expand the question to "Is knowing Microsoft and .Net based technologies enough..." then the answer is a resounding yes! Depending.

I am approaching 20 years only knowing Microsoft (VB then .Net) technologies. Make a very good living and enjoy my job immensely. Look forward each day going to work and know there are many jobs out there that would hire me doing .Net/Microsoft platform development.

I feel no desire to learn any new platforms.

Then again I have no desire to get a different job. I like staying in the same small company that delivers very targeted and custom solutions to a diverse population.

I am not saying I will not ever learn a platform. May have to if all goes to hell. And I read Java/C++/LanguageWhatever books all the time. Don't understand much about the platform the book is about but the actual good ideas come across just fine. Effective Enterprise Java is one I go back to time and again. There are others.

I find it funny that so many who say something to the effect of "pre-optimization is the root of all evil" will also say you must pre-optimize your career.

Within .Net you can do procedural, OOP, functional, set based (sql) etc. etc. Within .Net you can probably implement all the design patterns you could think of. Do P2P, Client Server, Web Whatever.0 etc. etc.

Would you be a better programmer if you learned a different platform/framework? Ehh, maybe but probably not. No research I know of says you will. So I am not going to waste my valuable time learning something I will probably never use and instead focus on learning what I need to make my customers and boss happy. That will probably be enough.

ElGringoGrande
  • 2,913
  • 22
  • 20
0

I agree with FarmBoy.

People that only know HTML/PHP can start a business and earn a fair amount of money.

I also agree with Quickly_now, although .NET is not something that will easily become old..

Choseal
  • 101
  • 4
0

Yes. I have no doubt.

But that's not necessarily any easier than going outside the MS shop. Since .NET started, we've had to keep learning. New languages are riding the framework. New technologies (LINQ, Silverlight, WF, etc) will continue to modify the technology. VB and C# are growing together but also just growing.

Does "knowing .NET" include SQL Server? It depends on your job, but yeah -- you should consider that it does. Does "knowing SQL Server" include knowing both DTS and SSIS? Yeah, today it does.

In fifteen years will there still be a bazillion well-paying jobs for people who know these things and have kept up with however the technology morphs? I have no doubt.

clweeks
  • 101
  • 2
0

A qualified "yes".

After reading other answers, I'll try for something more practical than somewhat "ideal" answers

You need to separate professional and hobby.

As much as learning half a dozen languages and ways of thinking makes you a better individual, you aren't paid to learn, say, Haskell if you're employed to pimp a corporate intranet site in an MS shop

Part of that bargain would be that the employer facilitates you in training in your speciality as well as in general development skills: next .net version, general OO techniques, become a Scrum Master, go to SQL Pass etc.

Feel free to learn Python, Perl, OpenGL, whatever on your own time for your own enjoyment and satisfactions. I know several folk that do this.

Summary: Yes you can, but don't give up on "outside interests"

gbn
  • 2,467
  • 1
  • 17
  • 14
0

William Hung parlayed his bad singing on American Idol into a career as a C-list celebrity. This doesn't mean that I would generally advise somebody to pursue bad singing as the foundation of a career in entertainment. Can you have a successful career as a developer only knowing .Net? Sure, thousands of people do. That doesn't mean it's a good career strategy.

I fear your question is perilously close to asking "What is the minimum I can do to be a successful developer?". The trouble is that the software job market is competitive, and becoming more so every day. Aiming to do the minimum is a recipe for a very vulnerable career.

A much more reasonable (and harder) question is how do you allocate your time between mastering your primary platform, and keeping up to date with important developments on other platforms. Obviously you can't know everything, and you'd be well justified in devoting most of your time to developing your .Net expertise. But simply adopting a rule that you ignore all other platforms is lazy. If you are going to have a robust career you've got to continually exercise your judgement and critical faculties to figure out what developments in which platforms are going to be significant to the industry.

Charles E. Grant
  • 16,612
  • 1
  • 46
  • 73
0

No.

To stay on the edge in the constantly moving IT world you constantly have to learn new technologies. If you only focus on the .NET platform this will limit you.