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.

I'm an ASP.Net/C# programmer using SQL Server as a back end.

I am the Technical Director of the company, I'm extremely happy in everything I do and consider the languages and system we use to be perfect for what we do.

In the back of my mind though I know that over time programmers can become stale. I remember as a wee youngster that all those "old" developers were past it and couldn't keep up with the youngsters.

So considering I'm happy in everything I'm doing. What options are there for keeping up with everything and avoiding becoming stale.

One particular idea that I use is to let all the new developers use and showcase the things that they think are cool. If anything catches my eye then absolutely it will be something we all use going forward.

Thoughts?

share|improve this question

closed as not constructive by gnat, Jim G., Yannis Rizos Aug 8 '12 at 2:13

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.

    
You're the Technical Director and you want to learn a new programming language ?!? That's what you hire grunts like me for. Upwards and onwards, learn management accounting, head for CEO. –  High Performance Mark Sep 16 '10 at 9:38

8 Answers 8

Learning many languages gives you different insights - different tools - into problems.

I think it's very important to learn several very different languages. Maybe a functional language (Scheme, Haskell), a object-oriented one (Smalltalk, Ruby), a concurrency-oriented one (Erlang), a logic programming one (Prolog) and and and.

The important thing here is that the languages shouldn't be more of the same. If you know C#, learning Java isn't going to teach you that much. If you know C, learning Pascal isn't going to expand your intellectual horizons.

share|improve this answer
1  
Agreeing that learning more of the same kind will not expand the horizon, yet think that Pascal, especially Delphi, would help somebody with C knowledge. Yet this is not the question here. Delphi as a complement of C# would not bring much, as they are from the same mind (language designer) mostly. –  malach Sep 16 '10 at 8:28
    
I deliberately said "Pascal" and not "Delphi" because Delphi adds all the OO stuff. Often we conflate the two, but Object Pascal's a different, if related, language to Pascal. –  Frank Shearar Sep 16 '10 at 8:38

To add to @Frank's answer: it's worthwhile learning new languages even if you never intend to use them in your job. [*]

The important point is that learning a language you're not accustomed to (say, Haskell) makes you a better programmer in the one you use daily (C#). It helps you appreciate the difference between fundamental logic that applies to all programs versus idiosyncrasies in your day-to-day programming language that you've taken for granted.

([*] In fact, it's a bad idea to start checking in code in a language that you've only been using for a week.)

share|improve this answer

According to the Pragmatic programmers you should learn one new language every year. This does help you avoid becoming stale. There are so many different mindsets to programming, and each language encourages you to view problems from a different angle.

C# is a language that is rapidly evolving. It started as a simple OO language, then it developed a load of functional features (LINQ), and with C# 4 it has moved into the dynamic language realm. To fully embrace all these new ideas, it can really help to learn a language where that paradigm is the main focus of the language. This will give you the mental agiliy to fully utilise the relevant aspect of C# that will best solve your problem.

There are now loads of langauges that you can learn without leaving the .Net framework. Learn F# to take on functional programming, IronRuby or IronPython for some dynamic programming. Boo for (whatever Boo is good at)... As its all in .Net these languages can talk directly to eachother, so you may be able to use them directly in your work.

share|improve this answer
    
Boo for... scripting? (I have never used Boo.) –  Tim Robinson Sep 16 '10 at 8:32

I'm not a technical director, but if I became one, I would do this.

I'd arrange certain fraction of working hours for side-projects where developers should write something neat using languages and tools, which are different from those you usually utilize. I'm sure that you can find a program you need (but don't know that yet). Here are some ideas:

  • Ruby on Rails-based system that collects votes from team members for different pizza types, and automatically orders pizza according to the vote distribution. Very useful when making a corporative party.
  • If you start allocating your time between different projects, you surely may need a time tracking system that collects and analyzes how developers spend their working hours. Say, implemented in C++? (some our Perl programmers are actually doing this right now).
  • A patch to the web-based bug tracking system you use that reflects your very specific way of managing bugs? Oh, the system's implemented in Perl, but it's the whole point!
  • ...

If you dig you can find a lot of "useful" programs that help developers in office. Of course, you could just purchase them with full-time support, but you could as well use them as projects that prevent people from becoming stale.

share|improve this answer
    
+1 for practical ideas! –  Frank Shearar Sep 23 '10 at 8:07

Not only should you look into another language, but make plans to immerse yourself in it (Rosetta Stone software uses this approach.). You don't want to run the risk of, "I know how to do this in C#, so what's it called in Python?"

Take a look at what you've been doing and identify the problem areas. Then find a language that does it better. You may have to try out more than one, but once you find the best candidate, start a project using it.

Or use your same language, but develope on a different platform like smart phones.

share|improve this answer

The Pragmatic Bookshelf folks have a new book coming out, authored by Bruce A. Tate, entitled "Seven Languages in Seven Weeks". Its purpose is to cover seven very different languages with the intention of the reader gaining a meaningful understanding of each by the time they've finished.

http://www.pragprog.com/titles/btlang/seven-languages-in-seven-weeks

I think it's an excellent remedy to keep yourself fresh.

share|improve this answer
    
+1: It is a very good book to get an introduction to some interesting programming languages. Interestingly, most of the languages presented in the book are functional (Clojure, Haskell), or at have an extensive support for functional programming (Scala, Erlang, Ruby). So functional programming could be a good topic for you to learn if you want to keep up with the latest developments. –  Giorgio Aug 7 '12 at 19:56

It can be interesting to do as a hobby and you can gain some good insights. You might even decide that you like the "new way" of doing things better than the old way. However, from personal experience I would caution against taking a job change to work on a new language. Not to say that it won't work for everyone, but it certainly didn't for me.

I've been working in Objective-C on NeXT/Mac/iOS for countless aeons, and aside from a little dabbling - in numerous languages but mainly Python and Java - that's been my bread and butter. I decided it would be worth diving into Java more fully to see how it differed and maybe gain some knowledge I could use in ObjC, and got a job as a Java engineer. Fast-forward two months and I had already quit.

The thing is, it can be hard to find time (or I find it hard, anyway) to work on programming projects outside work, because that's supposed to be unwinding time. If you are self-employed or can agree it with your manager, setting aside some research time during your working hours can be the best way to go.

share|improve this answer

Learning a new language and/or framework will open new ideas and horizon to do your work more enjoyable. Not getting stale and learning some new bits every day keep software developer happy.

I do belief that - a real, passionate developer always look at learning new cutting edge technology and introducing/sharing that with colleagues.

My suggestion is too look at recent trends in ASP.NET web development and advancement in client side scripting. Relatively new trend with MVC and Web API frameworks are getting more and more popular with a community support behind.

For example: jQuery and KnockoutJs libraries can easily be applied on existing asp.net projects, by improving presentation in no time :)

However, there is a learning curve that we all go though.

share|improve this answer

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