views:

845

answers:

15

We are grown. We are educated. We do programming. We create new stuffs or fix stuffs every day. We spend more time on system. We say that we are always learning.

Many times we blame others not understanding stuffs we have written.

At life, we know what tool to use when. If we see 24 hours a day, more time is spend on job than personnel life.

We also know that NOT all the languages are same. Many languages would simplify the work in some other way. In my previous project, my friend has written C++ code to generate some more code in 3 months time. One Perler did the same thing in 2 days in Perl.

Why Software Engineers are not understanding this? Why do they hesitant to learn new stuffs?

I know this community is wise & matured.

Tell me why do you like to learn new language? or Why do you hate learning new language?

+2  A: 

i would disagree. everyone i work with loves learning new languages and new technologies. and i would tend to say that often people are more likely to jump on bandwagons too quickly.

re: not using the right language/tool for the job, i would say that is a trait held by less experienced* people.

*they might be very experienced in a narrow field, but they havent learned / may not even know about some other technology which could do the job better.

Love learning a new language: its challenging, it teaches you new approaches which you can apply in your 'strong' languages.

Hate learning a new language: its challenging :), it can lead to wasting time, and getting too absorbed in hype, and you can start to lose objectivness about the quality of the language

gcrain
A: 

I just finished re-reading Steve Yegge's essay, "Being the Averagest" and logged in to SO to find your question. I would recommend Steve's essay for this answer.

Shivasubramanian A
+4  A: 

Learning a new language is driven by the person's ability to handle change, to focus on his imperfections, to explore and to experiment. Some people are content enough to learn VB or how to script an Excel Spreadsheet. Some want to tear down a language and master one thing. Others want to play around and treat each programming language in existence as a new gadget or toy to play with.

It depends on the person's personality.

For most programmers, a new language is simply new syntax. All programming languages work on computers, logical devices that require instruction.

But, there are others who would rather not "play" with something new. They tend to use the logic of "Why be the jack of all trades and a master of none?"

I see nothing wrong with choosing a learning style that fits the person. Obviously a master of COBOL will not be in as much demand as someone who can program C++, Java, C#, Python, Ruby and PHP.

However, that Master of COBOL is probably the person who can answer any COBOL question thrown at them; being one of the most valuable resources a dev-shop could ever have.

Jeremiah
+11  A: 

The bottom line is there are two types of people: people who hate change, and people who love variety. If you're someone who hates change and new things, you'll avoid new languages and anything that challenges the status quo. Generally this is someone who is very comfortable just punching in and punching out, and receiving a paycheck every week. They are not usually the type to work on open source software or side projects just to scratch an itch or learn something new. In fact, I'd say they're most likely to be involved in totally non-computer related hobbies.

On the other hand, many people are drawn to computers because they can be so varied and are ever-evolving. Those types of people are constantly learning and driven to work with new technologies. They see new challenges as interesting and the status quo as boring. For this type of person, solved problems are boring, and only the new and unknown is interesting. Therefore they're very likely to embrace new languages and new ways of doing something both for pragmatic reasons (e.g. it's faster, easier or more efficient) and because they enjoy learning for its own sake.

Jay
A: 

yea, i agree with Jay. it's basically split down into two, those who are passionate about what they do and the other is what commonly known in japan as salariman (salary man)- steal this from four hour workweek. hehe.

9-5 zombies that be there, just to be there & get paid each month. because i believe whatever that you do, as long as you're passionate you probably want to learn more so you can do more and grow.

programming language are more like tools in your toolbox, you can't expect to knock down a wall and paint a wall with a hammer now do you? you can't but i won't want to do that.

just my 2cents.

melaos
+9  A: 

Well this is 'subjective and argumentative' People are different... the day is shrinkin, change isn't easy.

  • Time : Some people have the time.. a few make the time and most people don't. Asking people to learn something new when they already are overworked.. is a recipe for being ignored. Also people have families, other responsibilities, tons of stuff that need to get done... that gets priority over 'learning a new language'. The payoff isn't big enough for them to invest time in.
  • Programming isn't one of their primary sources of joy : Some people are quite content with their tools as long as it gets their job done. They'd rather get it done by hammering it in (by spending more time than necessary) and go home and do something that they consider fun... like watch the telly.
  • Change : some of the better languages require you to change your perspective on how to go about solving a problem. e.g. Pascal - C++ - Ruby - Lisp. It isn't easy to make this mental shift for some people.. especially if they've spent a lot of time upholding them as sacred.
Gishu
A: 

Learning new languages takes effort. Some people would rather stick to what they are comfortable with.

EndangeredMassa
A: 

If a s/w engineer hates to learn new language then acc to me he is not an engineer itself....

Love for languages is the foremost thing present in software engineers.. Even to hate some language you gotta learn about it...

How can you evaluate or be judgmental about any language without even knowing about that language???

Samiksha
A: 

Every community is made up of a collection of different people with like-minded goals. The developer community is no different. Developers can't be split into two categories - there are many types of developers. These developers are all developing for different reasons, whether it be to enjoy the thrill of creating software, to follow their passion for problem solving, because they love a specific language, or because they want to know them all.

Learning programming languages can be paralleled to learning new spoken languages as well - it would be very useful to know them all, but some people only want to learn, say.. French, because they think the language is beautiful.

I like to learn new languages because it presents a challenge and excitement - the education and advancement of my knowledge is secondary to these reasons.

A: 

This Software Engineer is understanding this but realizes that it is impossible to expect me to know every programming language or tool that I could use to do my job. Part of my job is learning how some things work so that when something breaks, I can understand what is the expected behavior and why that is expected. How should I know where some scripting language could save me lots of time and where I need to go and discover a different tool for handling a particular type of file?

I like to learn new languages usually when I can use what I learn right away and apply it in my normal day to day duties. I also recognize that to truly get into the heart of a language takes a great deal of time and isn't trivial.

I don't like to learn something by stumbling around in the dark, trying to figure something out by trial and error where each trial takes days to try and days to figure out what to do. Granted I do do this in my job from time to time, but that doesn't mean I always like to do it.

JB King
+1  A: 

Almost every language does at least one, and often more than one, thing amazingly good. For me my goals in learning a new language usually fall into ...

  1. Getting a good understanding of the syntax
  2. Getting a good understanding of how the language is meant to be coded
  3. Learning those items that the language does amazingly good

What really is the winner for me is learning how to apply #3 into the languages I work with on a daily basis.

For instantance, I've been playing around with F# a lot recently. It's really good at functions as values, continuations and an overall functional paradigm. It caused me to create a whole library of immutable data structures, tuples and options. Recently I gave a mini presentation to my group at work on the value of having non-null returning API's and how to use an option like structure to achieve this goal. It was very well recieved and has now entered our main coding tree.

All because I decided to learn F#.

JaredPar
A: 

If you want to learn new things you need a strategy. I have chosen a wrong strategy the last 8 months.

I studied a little bit of ASP.NET, a little bit of CSS, a little bit of JavaScript, a little bit of Ruby, a little bit of XSLT, a little bit of the Semantic Web, a little bit of Text Mining, a little bit of WCF and even a little bit of F#.

Now I'm tired, I need to rest and after that I need to focus more on one subject to understand it more deeply. But I have learned LINQ and that's great.

Theo
A: 

I can tell you what happens with me.

Unlike many people I know, I do like what I do for a living and try to get insight on new things every time I can.

However, in my personal case, to learn a new language ( and learn it well ) I have to use it in a work project.

Otherwise, I play with it a little, learn some basic stuff and drop it.

Is not that I don't like learn new stuff. Actually from my colleges I'm the only one who gets into programming forums, and read technical articles and watch google tech talks, just for pleasure.

I know there's a bunch of good stuff out there. But until I have to touch them for a customer it seems like I won't get them.

  1. I like: being able to think in a different way. I can appreciate more each style an way of doing things each time I learn a new language.

  2. I hate: To re-learn basic stuff I already master in one. For instance how to manipulate arrays, or strings. It is so basic, that there are very few resources on line.

BTW I started this python challenge and get stuck on problem 6. Zip?

-- Oscar

OscarRyz
A: 

I love to learn new stuff, but lately it's been difficult for me.

I have 3 kids, full time job (actually a bit more than full time), wife, sailboat. I've given up computer gaming and watching TV which used to consume so much time. Time is scarce, but that's not the whole explanation.

There is so much activity in our field, so many new things to learn all the time. It's hard to know which things to prioritize. So many people are creating good stuff that I could know about. But I prefer working on my own things instead of just watching other people working on their things.

I'm very happy and productive using C# 2.0. I don't feel that if I just learned one more thing, my problems would be gone. I'm curious about new things, but I don't have a strangled feeling of limitations. It was worse in before C#. For every project I had to decide between ASP, Java, VB6, C++. C# seems to give me what I need for all my current activities. So my motivation for learning is just a fear of being blindsided, and one day becoming obsolete by isolating myself.

So my backlog of things to look at get longer and longer. Here is some things I'd like to look at, off the top of my head:

  • Hibernate
  • Lambda expressions
  • LINQ
  • WPF
  • Workflow
  • New features of SQL 2008
  • Oslo (new stuff from Microsoft, not my home town)
  • Functional languages like ML or Haskell
  • PHP to be able to make stuff for my WordPress sites
  • Patterns, my current knowledge is too superficial, when people tell me they have created an abstract command factory watcher I don't know what they're talking about. But when I get it explained I realize I've done something similar many years ago.

To sum it up: I like learning when I know that it may solve my current problems. But I prefer working on my own things to learning about other people's things.

Guge
A: 

because learning a new language has a considerable cognitive cost.

alvin

related questions