Author Topic: The leapfrogging rule  (Read 342 times)

Peter Gibbons

  • Guest
The leapfrogging rule
« on: August 28, 2011, 08:25:18 am »
unix mentioned that he started to learn Java and then decided that Perl is a better choice.
Yes - Perl is a much better choice for system administration but the real question is why not Python or Ruby?
Perl was really hot in 1995!


If I had to start learning a new scripting language today I will never chose Perl.
I will chose Python.

Python has MUCH higher mindshare in the startup world, it's used in finance and bioinformatics.
It's also one of the three official languages at Google. Along with C++ and Java.

If I had to learn systems programming language today - I would not learn Java.

I will learn Scala. Why?
There are millions of Java developers with 10 years experience but there very few people that know Scala.
Scala is used successfully at Twitter and Foursquare. There will be more adopters in the coming years.
Scala works on both the JVM and the CLR.
( The .NET version was kind of lagging but this is going to change - Martin Odersky started a company and got venture capital. )

I have a friend who is trying to get into the Software Development field by learning Java in his spare time.
He will be competing with thousands of people that already have years of experience with the language.

I already told him to be more forward looking and just jump into Scala with both feet.
He insist he wants to first learn Java very well and them move to a more advanced language.
This is a mistake -  Java is not a simple language and has a lot of idiosyncrasies.
He will have a lot of things to unlearn moving from Java to Scala.


Speaking from experience - I missed the C++ / MFC train. I was unemployable as developer and had to get a tech support job.
I looked around and Java had just been introduced as first public beta.
Jumped on the bandwagon very early and a year later got contract with "6 months" experience.


So if you missed the train ... get on the plane.


P.S. Of course being aware of micro trends like languages and frameworks is nowhere nearly as important as seeing the big picture and major trends like web, mobile, social, etc. And this is an area I haven't done very well in the past.



ilconsiglliere

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 805
    • View Profile
Re: The leapfrogging rule
« Reply #1 on: August 28, 2011, 11:03:01 am »
The key today if you want to continue to do development is to find a niche that is not saturated by H1Bs. If you cant find that niche you are screwed. Examples of niches that are no longer juicy include SAP, Peoplesoft, Oracle, C++ and Java.

I have a friend that has been working in nothing but a 4GL his entire career. That being said he always has work. The language is obscure enough that he gets top $ and no H1B competition.

Languages just like everything else go through an early-adoption/growth/plateau/downhill curve. Java is still in the maturity curve as it is very popular still. It has a way to go yet before it hits its plateau. Because its so popular you are competing with hoards and hoards of people for work. No thanks.

Find a niche or specialization because otherwise you will be unemployed.

The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14170
  • Gornix user
    • View Profile
Re: The leapfrogging rule
« Reply #2 on: August 28, 2011, 12:05:26 pm »
unix mentioned that he started to learn Java and then decided that Perl is a better choice.
Yes - Perl is a much better choice for system administration but the real question is why not Python or Ruby?
Perl was really hot in 1995!

Because Python and Ruby are hardly used anywhere in system administration circles. I mean, think about it. Unix would be the only administrator candidate with Ruby. Unless I am oblivious to something obvious.

The object orientation of either tool (useful for big componentized projects) would be wasted in system administration (where you have simple dedicated tasks being automated.)

As I said in another thread, what makes sense for developers doesn't make sense for administrators.

If I had to start learning a new scripting language today I will never chose Perl.
I will chose Python.

Python has MUCH higher mindshare in the startup world, it's used in finance and bioinformatics.
It's also one of the three official languages at Google. Along with C++ and Java.

But you are a developer, and as a developer you ought to have different types of tools in your tool box. I heart Python - I used it to migrate this board from Yuku. Every developer should know a quick and dirty tool - too many developers are stuck in a mindset of needing to build or compile something or "waterfall" the development.

I mean specifically that a C++ developer who won't use and doesn't understand regular expressions (say) but has strings to process is a knucklehead.

I have a friend who is trying to get into the Software Development field by learning Java in his spare time.
He will be competing with thousands of people that already have years of experience with the language.

I already told him to be more forward looking and just jump into Scala with both feet.
...
So if you missed the train ... get on the plane.

I don't know about your advice to your friend, there. So he and you are concerned about competition. Exactly who uses Scala? How many indeed.com jobs or Dice.com are posted for Scala? It does not help to know something with zero competition if nobody needs it.

Quote
P.S. Of course being aware of micro trends like languages and frameworks is nowhere nearly as important as seeing the big picture and major trends like web, mobile, social, etc. And this is an area I haven't done very well in the past.


Which are the primary drivers of new language adoption. You are now describing macro trends that are useful to attempt to understand and harness.

What macro trend is driving Scala?
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


Peter Gibbons

  • Guest
Re: The leapfrogging rule
« Reply #3 on: August 28, 2011, 12:38:00 pm »
Quote
I don't know about your advice to your friend, there. So he and you are concerned about competition. Exactly who uses Scala? How many indeed.com jobs or Dice.com are posted for Scala? It does not help to know something with zero competition if nobody needs it.

There are 109 jobs that mention Scala on Dice. One of them is from Amazon. I already mentioned Twitter and Foursquare.
I am positive that there are a lot more companies out there experimenting with the language.

I don't think Java had that many ads a year after it was introduced.
A lot of the "Java jobs" back then were really HTML / Javascript jobs since the recruiters didn't really know the difference between Java and Javascript.

To make my point more clear:
Is it better today to write a new book about Java or a new book about Scala?

Which one makes more economical sense?


About Python vs Perl. Both can be used for system administration.
I am pretty sure that all the system administration at Canonical is done using Python.
Google for sure must be using a lot more Python than Perl for system administration.
It's a cultural thing. Younger, hipper companies use Python.

Python allows many other options outside system administration that Perl does not.
We are talking about flexibility here.


Peter Gibbons

  • Guest
Re: The leapfrogging rule
« Reply #4 on: August 28, 2011, 12:45:19 pm »
"What macro trend is driving Scala?"

Concurrent programming?

How to harness the power of 8 CPU cores, 16 CPU core and soon maybe 64 CPU cores?

The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14170
  • Gornix user
    • View Profile
Re: The leapfrogging rule
« Reply #5 on: August 28, 2011, 12:48:51 pm »
There are 109 jobs that mention Scala on Dice. One of them is from Amazon. I already mentioned Twitter and Fousquare.
I am positive that there are a lot more companies out there experimenting with the language.

Then it becomes a marketing challenge - finding companies that want to use Scala and opening a dialog. Since it's little used and fringe, Scala has its own problem of solution in search of a problem. ("I do Scala, who wants to hire me? Anyone?")

But if you can market effectively, then why stop at marketing Scala? Someone that was prepared to pick up the phone and bat for themselves could probably prospect for any reasonable skill.

I don't think Java had that many ads a year after it was introduced.
A lot of the "Java jobs" back then were really HTML / Javascript jobs since the recruiters didn't really know the difference between Java and Javascript.

I definitely wouldn't embrace any language one year after it was introduced unless it encapsulated a trend or technology that I really needed to be in on.

Every successful language seems to have had a "knee of the curve" time where adoption was shooting upward at an accelerating rate. For Java that was '98-2000 and that would have been a prime time to get attached to Java. C++ was introduced in the mid 80s but by 1992 or so it was apparent that it was going to dominate Windows development so that was a good time for me to learn it.

Scala is too young right now. It could just be a waste of time. Wait to see if it takes off. Meanwhile, what are the "knee of the curve" maturity level languages now? Objective C?
« Last Edit: August 28, 2011, 02:12:34 pm by The Gorn »
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


pxsant

  • Global Moderator
  • Wise Sage
  • *****
  • Posts: 1122
    • View Profile
Scala Age
« Reply #6 on: August 28, 2011, 12:59:35 pm »
Scala is a lot older than 1 year.  I'm pretty sure it has been around for 7 - 8 years at least.  Still not widely used though.

The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14170
  • Gornix user
    • View Profile
Re: The leapfrogging rule
« Reply #7 on: August 28, 2011, 01:02:16 pm »
Then I wonder what it's waiting for. What are the applications that will drive multiprocessor applications? Maybe some research here is called for.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


Peter Gibbons

  • Guest
Why use Scala?
« Reply #8 on: August 28, 2011, 04:58:37 pm »
Quote
Scala is a lot older than 1 year.  I'm pretty sure it has been around for 7 - 8 years at least.  Still not widely used though.

Scala was introduced in 2003 according to Wikipedia.
Before Scala Odersky worked on a language called Pizza. Some of it's ideas were later incorporated into Java.

I know the language was created long ago. I mentioned one year because this is how long it took me to get Java contract after Java was first introduced.
So I think Scala today is a lot less risky than Java was back then.

Who is Martin Odersky by the way? Here a couple of quotes:
Quote
In the process he (Martin Odersky) has personally written more lines of Java and Scala code than almost any other individual in the world. He wrote javac, the compiler used by the majority of today’s Java programmers, and scalac, the compiler used by the fast-growing Scala community. He authored "Programming in Scala," the best-selling book on Scala.  Previously he has held positions at IBM Research, Yale University, University of Karlsruhe and University of South Australia, after having obtained his doctorate in 1989 from ETH Zürich as a student of Niklaus Wirth, the creator of Pascal.


Quote
You can trust in Scala for the same reasons you you trust your Java platform. It uses the same highly reliable JVM. The Scala compiler is reliable and robust being written by Martin Odersky, the person who wrote the reference javac compiler you use for Java programs. Scala applications integrate seamlessly with your Java applications and operational deployment is identical. Most of all you get much more productive development, faster project turn arounds and lower maintenance costs. And it has the full commercial support from Typesafe.

I have seen him speak (some videos on the web) and he looks like a very nice guy.


There are a lot of technical reasons to use Scala but the more important ones are marketing reasons.

If you wrote a SaaS or Android App with Scala you could go to many forums and pitch your stuff.
People will be interested to take a look and if you have good app you will get a lot of free publicity.
You could also write about your experience. Tell other developers how you got your app done with 1/2 of the lines of code compared to Java and so on ...

Contrast this with "Hey guys - I just finished my SaaS application using Java and J2EE!"
Most likely will be met with complete indifference and on some forums with ridicule.

Think about Twitter - they started with Ruby on Rails and got quite a bit of marketing buzz because of it.
Then they rewrote a major part in Scala and got even more buzz.

Even in the contracting / consulting area Scala will look good on any developer's resume.

I D Shukhov

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 3359
    • View Profile
Re: The leapfrogging rule
« Reply #9 on: August 30, 2011, 08:19:45 am »
Why the focus on languages?  The only market there could be is for someone who needs a programmer (same as "developer" or "software engineer").  We all know that's a commodity profession with worldwide competition that is offshored and messed with by the government with immigration policies to appease industry's insatiable demand for low cost labor.

I'd much prefer something like:  "Language X is great for solving domain Z problems because......  And here's why domain Z is worth considering."

I think it's far more important to have a domain skill.  If one wants to stay in IT, then it could be any of the types of administration (database, network, system), or security, or architectural design.  And if it's architecture, then one better well know a framework.

The reason ilconsiglliere can write:  "I have a friend that has been working in nothing but a 4GL his entire career. That being said he always has work." is because whatever they were doing with that 4GL was probably close to some business domain --  E.g.  PeopleSoft for the HR domain.

I'm spending time learning Java, because I think I may create an app that needs to be cross-platform, and in particular needs to run on a mobile device, which will use Android.  So that's my business case for learning Java: Android and cross-platform support.

I also like the fact that Java was designed with OO support from the ground up.  Since my target domain is mental health care I think OO modeling and design patterns will be useful.   The Strategy Pattern for selecting coping strategies and the Observer Pattern to model arousal come to mind.   Java has been around long enough so there should be lots of online tutorials for learning how patterns are cleanly implemented.
Anything that won't sell, I don't want to invent.  Its sale is proof of utility, and utility is success. – Edison

codger

  • Guest
Re: The leapfrogging rule
« Reply #10 on: August 30, 2011, 10:08:31 am »
I D Shukhov wrote, "I think it's far more important to have a domain skill.  If one wants to stay in IT, then it could be any of the types of administration (database, network, system), or security, or architectural design.  And if it's architecture, then one better well know a framework."

I agree, I D, and this is the way things were when I began my career in IT.

Then it was the era of mainframe dominance. In general business you used COBOL and some Assembler. In banking/finance/insurance it was  COBOL, PL/1 and maybe some FORTRAN. Scientific/engineering was FORTRAN. CICS provided most of the online capability and databases were IMS or IDMS.

Banking used a lot of Burroughs equip. IBM dominated the vast majority of shops. There was a smattering of Honeywell around too.

Consultants, in that time, were positioned to where they would sometimes specify which languages and utilities would be used for a project. Most of the consultants I dealt with had a lot of domain knowledge - far more than I see today. It seems that we've pushed domain experience aside and have replaced it with tool sets. The consultants today are often positioned in such a way that their work is subject to the approval of the in-house lead tech, who often is intimidated by their very presence. Rather than being generally guided by management, they are shot at, ankle bitten and back-stabbed every inch of the way by those on client staff who have a vested interest in protecting their turf.


The domains were practically welded to the specific programming languages.
« Last Edit: August 30, 2011, 10:38:15 am by codger »

Peter Gibbons

  • Guest
Re: The leapfrogging rule
« Reply #11 on: August 30, 2011, 05:57:49 pm »
"Why the focus on languages?"

In the past I have mentioned databases and frameworks but my ideas were still shot down :)

So the question is really: "Why focus on technology?"

Because I am interested in it and because in the past I got contracts mainly because of knowledge about current technology - not because of being a domain expert. Sure domain knowledge also helped - but since I have worked in quite a few industries - I don't have deep knowledge in any of one of them.

For me picking up a new language is mostly about the fun of learning something new a possibly better.

I always think about my personal projects first. If I happen to get a contract in the future - that will be a bonus.

Peter Gibbons

  • Guest
Scala vs Java
« Reply #12 on: August 30, 2011, 06:30:37 pm »
A few comments:

Java is not a pure Object Oriented language like Smalltalk- it has primitive data types.

In Scala everything is an object.

If you write:

5.+(6)

5 is an object
+ is the method name
The value (also an object) we add to 5 is in between the parenthesis.

Of course Scala allows you to abbreviate this to just:

5 + 6

This has quite a few implications.

Scala runs on the JVM and can use all Java libraries.

I am not going to argue which one is better.

Here is my thinking:

Martin Odersky has been working with Java for 15 years, he did a lot of research that went into improving Java. He actually wrote the reference Java compiler that everybody is using.

Based on this experience he decided to create a new language that doesn't have any of the Java old baggage but at the same time can takes advantage of all of the libraries of the Java ecosystem.

If I didn't know Java already why would I spent a lot of time trying to master a language that even the people that helped create (shape) it - are abandoning and moving to bigger and better things?

There are at least 6 or 7 projects that are trying to come up with a successor to Java. The issues with the language are well known.

Now - don't get me wrong: You could get your work done with it - it works.

However it's too verbose and inflexible for me - so I am looking for replacement.

ilconsiglliere

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 805
    • View Profile
Re: The leapfrogging rule
« Reply #13 on: August 30, 2011, 10:20:07 pm »
From my reading Scala is part of a family of "functional programming" languages. I hate to use this word but functional programming is a paradigm shift in terms of how you think. Others include F#, Erlang, Haskell, Scala and Clojure from my reading.

http://programmingzen.com/2008/11/08/the-rise-of-the-functional-paradigm/

I have a tiny touch of knowledge of this stuff as I used to work with guys that worked on artificial intelligence back in the day.

That being said its best to jump on a technology bandwagon early on when its in its incubation up ramp phase. Than you can become the expert.

The problem I see with this as with most of things like this as its a solution in search of a problem. It costs big, big $$ to convert a system from one language to another in an existing company. I have done it so I know. That being said I would wish it on anyone.

Today outside of tech start ups, IT is widely regarded as a cost center as opposed to an innovation or profit center. 99% of businesses want to spend as little as possible on IT. This is what is driving the commoditizing of our field. They just dont want to pay, end of story.

If you want to learn a new language now is the time to do it before it gets too popular, than the H1Bs will pour in and you will be the same place we are now with Java.

As for the mentioning of domain knowledge I have come to the realization that can be a person's niche. Look at me as an example - I have 25 years of IT experience with 19 of them in telecom, 1 year in pharma and the rest in financial services (1 year banking, 4 years life insurance). NOBODY outside of telecom is bending over backwards to hire me despite the fact that I know all the technology.

Every single one of them as said, you dont have enough XYZ industry experience. Despite the fact that you can pick it up like anything else, people feel why bother. We can just hire someone with THAT experience. BTW, telecom is doing that too! They regularly post job ads, most have telecom industry experience.... ;).

So it looks like I am going to end up back there AGAIN...

ilconsiglliere

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 805
    • View Profile
Re: The leapfrogging rule
« Reply #14 on: August 30, 2011, 10:24:12 pm »
Just as a side note, when I worked at B*ll Labs the favored scripting language above all others was Korn shell. It might have had something to do with the fact that Dr. Korn worked there and invented it. As a matter of fact he used to teach the Korn shell class for jollies occasionally ;).

When I was a strapping young computer buck, they sent us off to class. The first day the instructor introduced himself - Dr. Korn. Somebody says, hey are you related to the Korn language and he very modestly said I INVENTED the Korn shell. Well alrighty than...

Frankly Perk, Korn, Python are just tools to get the job done. I am not a fan of Perl as I think its very hard to read but hey, whatever floats your boat.


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf