I am a C# developer.

My observation of the IT industry as a C# developer is that the technology keeps changing or being updated by Microsoft like LINQ, WCF, and WPF etc.

OOP has been the fundamental for all kinds of developments that we see today in any language.

My question is,

  1. Is it good if I am a decent programmer in OOPS but not mastering any specific technology?

  2. As a WinForms developer, is it necessary to know C++ with C# for better job perspective?

  • 7
    OOPS as in ... I did it again? Nov 9, 2011 at 9:03
  • 1
    No worries, I understood what it stood for, I've just never seen it with the 's' attached and am wondering what it stands for. :) Nov 9, 2011 at 9:26
  • 3
    This is a bit of a silly question. You are not a "C# developer", "a WinForms developer" etc etc, you are a software engineer. Like any good engineer, you must have mastery of the tools which enable you to create solutions.
    – MattDavey
    Nov 9, 2011 at 9:42
  • 1
    @MattDavey Thankyou for your feedback. As per your guidance, I shall have positive approach towards learning different tools. Looking forward to your support. Nov 9, 2011 at 10:02
  • 1
    @MattDavey a specialist shouldn't feel they need to have the same broad knowledge base that a 'generalist' would have. A great specialist is going to spend his time focusing on his speciality rather than improving his grasp of big generalist problems. Nov 16, 2011 at 20:49

4 Answers 4


Object Oriented programming is a paradigm, not a technology. Different technologies follow this paradigm, like C#. There exist dozens of different paradigms, which basically are different approaches to solving problems.

LINQ inherits concepts of functional programming to make your life easier where pure OOP falls short. Learning this technology is a must if you are a C# developer.

WCF and WPF are part of the .NET framework to solve particular common scenarios. WCF can be used for networking, while WPF can be used to create visual applications. Obviously, if you aren't creating an application which does any form of communication with external applications, there is no need to learn/use WCF. Likewise for WPF, there is no use to learn it if you don't need any visuals. Alternatives exist for both WCF and WPF, but given they are frameworks supported by Microsoft they are often a good choice.

Even experimental alternatives to LINQ start to pop up, e.g. Push LINQ. These are far away from completion, and you are probably better off sticking to ordinary LINQ for the time being.

  • 1
    Thanks a lot Steven Jeuris. Your knowledge sharing was most helpful. I shall start learning LINQ as my current focus is only on OOP. Nov 9, 2011 at 9:45
  • To get you started on LINQ, see these samples :) code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
    – Fingolfin
    Nov 9, 2011 at 10:29
  • @AdelCKod Thanks for helping budding developers like me. The link was very helpful. Nov 9, 2011 at 11:10
  • 1
    I fell that way too (hopefully I understood you correctly): WCF is for networking and there will be other ways of doing it developed. WPF is for GUI and there will be other ways of doing it developed. LINQ, however, runs deeper, and it has to do with Monads, and is applicable to other languages, say Python. Even though stuff like PushLinQ tries to address so of the LINQ's shortcomings, mathematically-inclined coders could contract and compare both of these to stream processing, etc. that existed in LISP and ideas from lambda calculus. GUI and networking are much more transient than that.
    – Job
    Nov 10, 2011 at 3:47

As usual "it depends". Really it mainly depends on whether you need these tools to get your particular jobs done. However you should know what these particular technologies allow you to achieve otherwise you could end up reinventing the wheel to get a particular job done or creating non-standard parts to get the job done.

For example, if you don't know LINQ you could achieve the same result by using loops to query a dataset etc. but this would probably not have as good performance and take 10 lines of code where as LINQ would take 2.

I don't know every .net related tech going, e.g. I don't know WWF (Workflow) at all because its never been needed, but I do know what it is used for!

TL;DR you should know what tools are used for even if you don't know how to use that tool.

  • I completely agree with you. If we know what are the uses of a particular technology, then when the situation arises we will be well equipped to be able to explore that technology to get the job done. Thanks. Looking forward to your posts. Nov 9, 2011 at 11:16

Resharper is the best tool Ive found to learn LINQ. I've so far not had the need to learn more than the refactorings suggested by Resharper.

As for WCF I'd recommed learning when/if you need to. Study webservices, SOAP and remoting instead. If you grasp the concept you can very quickly learn WCF when you need to.

  • In my earlier company, I started to learn WCF which is an year ago but after my shift, I did not get the opportunity to work with WCF. Thanks to you I feel better. Nov 9, 2011 at 9:49
  • ReSharper is a great first step towards learning LINQ, but it far from learns you every way in which you can use it to compact/and even optimize your code. You can only identify this 'need' once you understand how you could use LINQ instead, so your argument is flawed. Nov 9, 2011 at 13:34
  • @StevenJeuris I would like to clarify my understanding. So to begin with I can try LINQ with the tutorial specified above and when I am good with the basics, I can proceed to use Resharper to enhance my skills? Please correct me if I am wrong. Nov 9, 2011 at 14:14
  • 1
    @KarthikSreenivasan: When you have ReSharper installed it from time to time suggests you how to write code you have written using LINQ instead. So it is a great way to learn to do similar things as you are already doing in a more concise way. However, it can't teach you everything, which is the point I was making to Filip. Nov 9, 2011 at 14:30

LINQ is far from necessary, but once you start using it you'll never want to go back.

Even if you've never done any functional programming, the functional aspects of LINQ will lead you into a new way of reasoning about problems and an expressive new way to represent your ideas in code.

Even if you've never used databases to store data, the fact that you can use LINQ on any data structure which implements IQueryable, means that you can learn to use LINQ with standard Collections now and when you later need to add XML, ADO or SQL, you know much of what you need already.

For me, LINQ to Objects was an elegant addition to C# and I'd love to find something equivalent for Java.

  • I think when projects are migrated from C# 2.0 to C# 3.5 or 4, we can observe the transition to new ways of implementation. Nov 10, 2011 at 2:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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