Christopher Howard | 8 Dec 23:26 2012

education or experience?

I'm at something of a crossroads, and I'm hoping to get a bit of free
career advice. I really enjoy programming with Haskell (and a few other
exotic languages), and was hoping I could eventually make a living in
that sort of field. Not rich and famous, necessarily, just enough to get
by comfortably. I'm trying to decide, however; should I go back to
school, finish my B.S. and pursue a Masters in CompSci? Or would the
time (and money) be better spent aggressively pursuing volunteer work
for companies, hoping to eventually get the experience and contacts that
lead to a paying job?

To be honest, I don't really want to go back to school, because I learn
a lot faster (and more economically) on my own. However, I'm not sure
which path is the fastest, and safest, approach to an actual paycheck.

(Also, I'm something of a die-hard FOSS purist, if that affects the
discussion at all.)

--

-- 
frigidcode.com

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Roman Cheplyaka | 8 Dec 23:51 2012

Re: education or experience?

* Christopher Howard <christopher.howard <at> frigidcode.com> [2012-12-08 13:26:58-0900]
> I'm at something of a crossroads, and I'm hoping to get a bit of free
> career advice. I really enjoy programming with Haskell (and a few other
> exotic languages), and was hoping I could eventually make a living in
> that sort of field. Not rich and famous, necessarily, just enough to get
> by comfortably. I'm trying to decide, however; should I go back to
> school, finish my B.S. and pursue a Masters in CompSci? Or would the
> time (and money) be better spent aggressively pursuing volunteer work
> for companies, hoping to eventually get the experience and contacts that
> lead to a paying job?
> 
> To be honest, I don't really want to go back to school, because I learn
> a lot faster (and more economically) on my own. However, I'm not sure
> which path is the fastest, and safest, approach to an actual paycheck.
> 
> (Also, I'm something of a die-hard FOSS purist, if that affects the
> discussion at all.)

If you have some money to cover your expenses, consider learning by
contributing to open source software.

Compared to an academic career, you'll have a more "real" goal of making
good software (instead of publishing papers). Also, this experience will
be much more relevant for your future job.

Compared to work for companies, you can choose more challenging,
interesting and innovative tasks that most companies can offer.
And the code quality will often be higher in open source than in
companies.

(Continue reading)

Jerzy Karczmarczuk | 9 Dec 02:34 2012
Picon

Re: education or experience?

Roman Cheplyaka comments a post by Christopher Howard:
>> I'm trying to decide, however; should I go back to
>> school, finish my B.S. and pursue a Masters in CompSci? Or would the
>> time (and money) be better spent aggressively pursuing volunteer work
>> for companies, hoping to eventually get the experience and contacts that
>> lead to a paying job?
>>
>> To be honest, I don't really want to go back to school, because I learn
>> a lot faster (and more economically) on my own. However, I'm not sure
>> which path is the fastest, and safest, approach to an actual paycheck.
> If you have some money to cover your expenses, consider learning by
> contributing to open source software.
>
> Compared to an academic career, you'll have a more "real" goal of making
> good software (instead of publishing papers). Also, this experience will
> be much more relevant for your future job.
>
> Compared to work for companies, you can choose more challenging,
> interesting and innovative tasks that most companies can offer.
> And the code quality will often be higher in open source than in
> companies.
>
> Roman
For me, opposing experience and education is simply silly.

Probably more than 70% of all people would learn much faster on their 
own than at school. But, learn WHAT? :

1. Probably less than 1% would guess correctly what they SHOULD learn, and
2. in general they will not be able to assess their own knowledge...
(Continue reading)

Rustom Mody | 9 Dec 03:38 2012
Picon

Re: education or experience?

On Sun, Dec 9, 2012 at 7:04 AM, Jerzy Karczmarczuk <jerzy.karczmarczuk <at> unicaen.fr> wrote:
For me, opposing experience and education is simply silly.

Probably more than 70% of all people would learn much faster on their own than at school. But, learn WHAT? :

1. Probably less than 1% would guess correctly what they SHOULD learn, and
2. in general they will not be able to assess their own knowledge...


Very good points

Haskell kneads the avant garde type-hackery stuff with classical (Hindley-Milner) functional programming very seamlessly.  For the programing-pro this is a joy and a thrill.  The beginner however can get completely unnerved that misplacing a bracket or forgetting an argument gives error messages involving type classes, suggestions turning on/off arcane compiler options etc etc.

FWIW I have a list of points/items trying to address this issue:

http://blog.languager.org/2012/10/functional-programming-lost-booty.html

Please note this is work-in-progress: additions/modifications are appreciated.

On Sun, Dec 9, 2012 at 4:21 AM, Roman Cheplyaka <roma <at> ro-che.info> wrote:

Compared to an academic career, you'll have a more "real" goal of making
good software (instead of publishing papers). Also, this experience will
be much more relevant for your future job.

Yes... CS academics delivers less than it could/should;
and whatever this delivery is, its asymptotically sub-linear.
Some of it is to do with the not-quick-enough takeup of FP in academia, though there are obviously many other factors as well.

http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
and sequel is about this: how we are not getting over the quirks of the past history of CS in present day teaching. Here too suggestions for modifications/ change of emphasis are appreciated.

Rusi
--
http://www.the-magus.in
http://blog.languager.org


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Heinrich Apfelmus | 9 Dec 15:54 2012
Picon

Re: education or experience?

Christopher Howard wrote:
> I'm at something of a crossroads, and I'm hoping to get a bit of free
> career advice. I really enjoy programming with Haskell (and a few other
> exotic languages), and was hoping I could eventually make a living in
> that sort of field. Not rich and famous, necessarily, just enough to get
> by comfortably. I'm trying to decide, however; should I go back to
> school, finish my B.S. and pursue a Masters in CompSci? Or would the
> time (and money) be better spent aggressively pursuing volunteer work
> for companies, hoping to eventually get the experience and contacts that
> lead to a paying job?
> 
> To be honest, I don't really want to go back to school, because I learn
> a lot faster (and more economically) on my own. However, I'm not sure
> which path is the fastest, and safest, approach to an actual paycheck.

Concerning a university education, there are two approaches:

1. I want to learn as much as possible
2. I want to learn just enough to get a high-paying job

University is great at serving the first approach, not only because you 
have the freedom to skip lectures that you already know, but also 
because professors have a lot of interesting things to teach if you let 
them, and because some of your classmates will be equally interested and 
interesting. In other words, if you want to learn everything, then 
university is the right environment.

On the other hand, approaching university from the second point of view 
usually does not justify the cost for the little benefit you obtain this 
way. Unfortunately, it seems to me that the tuition costs in the U.S. 
strongly suggest the second approach. To avoid this, I recommend to 
either go abroad or become very good and acquire a scholarship.

Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com
Mike Meyer | 9 Dec 23:44 2012

Re: education or experience?


Heinrich Apfelmus <apfelmus <at> quantentunnel.de> wrote:
>Christopher Howard wrote:
>Concerning a university education, there are two approaches>
>1. I want to learn as much as possible
>2. I want to learn just enough to get a high-paying job

There's actually a third approach ( and probably more):

3. I want to learn to do this job as well as possible.

>On the other hand, approaching university from the second point of view
>
>usually does not justify the cost for the little benefit you obtain
>this 
>way. Unfortunately, it seems to me that the tuition costs in the U.S. 
>strongly suggest the second approach. To avoid this, I recommend to 
>either go abroad or become very good and acquire a scholarship.

That really depends on the job at in question. When I was looking for entry level programming jobs, not
having a degree meant you never got past the hr department. Getting a degree (pretty much any degree) was
required to get the high-paying job. I'm willing to believe that's no longer the case for programmers,
because academia has consistently failed to deliver sufficient quality programmers to meet industry
needs. On the other hand (watching my sons deal with the job market), the litmus test for "you've got what it
takes to survive in the system" is now a masters, not a bachelors, so maybe you're wrong about that.

The other thing to consider is what your long-term goals are. Do you want to be a code monkey all your life? Or
do you aspire to more? What are the requirements for that "more"? Getting a degree now may well avoid doing
it later.

Finally, with approach #3, you really need a mentor who can tell you whether or not you're doing a competent
job. You're much more likely to find that in a university environment than trying to learn things  by
yourself. Joining an open source project might get it for you.
--

-- 
Sent from my Android tablet with K-9 Mail. Please excuse my swyping.
Doug McIlroy | 9 Dec 17:31 2012

Re: education or experience?

> Yes... CS academics delivers less than it could/should;
> and whatever this delivery is, its asymptotically sub-linear.
> Some of it is to do with the not-quick-enough takeup of FP in academia,
> though there are obviously many other factors as well.

> http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
> and sequel is about this: how we are not getting over the quirks of the
> past history of CS in present day teaching. Here too suggestions for
> modifications/ change of emphasis are appreciated.

Rusi's cogent blog post includes a list of techniques/concepts that
the "unconverted" could profitably pick up from the FP community.
In fact the FP community came late to some of these, just as 
programming languages at large came late to garbage collection.

Lazy evaluation--at the heart of spreadsheets since the beginning.
Pattern matching--native to string processing (e.g. COMIT, SNOBOL).
  Appeared nearly in its present form in COGENT (1965).
Booleans as first class*--surely this is a joke. Algol 60 had them.
  Matlab exploits them heavily (though represented as doubles).
Data orientation--COBOL fostered this outlook; see Michael Jackson.
  As long as Lisp ruled, FP lagged on data types.

FP also deserves credit for infinite data structures (though the special
case of stream processing dates way back).

Doug McIlroy

* It's amusing to note that "real" Booleans--the ones that Boole 
used--were integers. For Boole, or(a,b) = a + b - a*b.
Rustom Mody | 9 Dec 18:21 2012
Picon

Re: education or experience?

Thanks Doug for reminding me of points that I had forgotten (and which are new)
I will insert them into the blog
My comments inline

On Sun, Dec 9, 2012 at 10:01 PM, Doug McIlroy <doug <at> cs.dartmouth.edu> wrote:
> Yes... CS academics delivers less than it could/should;
> and whatever this delivery is, its asymptotically sub-linear.
> Some of it is to do with the not-quick-enough takeup of FP in academia,
> though there are obviously many other factors as well.

> http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
> and sequel is about this: how we are not getting over the quirks of the
> past history of CS in present day teaching. Here too suggestions for
> modifications/ change of emphasis are appreciated.

Rusi's cogent blog post includes a list of techniques/concepts that
the "unconverted" could profitably pick up from the FP community.
In fact the FP community came late to some of these, just as
programming languages at large came late to garbage collection.

Lazy evaluation--at the heart of spreadsheets since the beginning.

Never thought of that  -- nice!
 
Pattern matching--native to string processing (e.g. COMIT, SNOBOL).

Snobol -- yes, comit Ive heard of but dont know

  Appeared nearly in its present form in COGENT (1965).

Hmm google gives me different cogents/  I guess you are referring to the Reynolds one?

Booleans as first class*--surely this is a joke. Algol 60 had them.

Not sure what you are saying (unless its about the footnote that Boole treated bools as ints! This is new to me)  I was referring to the fact that C programmers have great difficulty thinking of bools as first class for similar reasons to why lists as first class is hard. [And python programmers also for that matter, whose language does not have a proper first class bool type]
 
  Matlab exploits them heavily (though represented as doubles).

Not sure what you are referring to

Data orientation--COBOL fostered this outlook; see Michael Jackson.

Interesting! I wonder though whether you and I use 'data-orientation' in the same way?
See below.
 
  As long as Lisp ruled, FP lagged on data types.

A tendentious point: A lisper would say that since Lisp from the beginning had a universal data-type, it need never bother to restrict types. [Note I recollect first hearing the term data orientation from SICP]
 

FP also deserves credit for infinite data structures (though the special
case of stream processing dates way back).

Doug McIlroy

* It's amusing to note that "real" Booleans--the ones that Boole
used--were integers. For Boole, or(a,b) = a + b - a*b.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



--
http://www.the-magus.in
http://blog.languager.org


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Malcolm Wallace | 9 Dec 18:34 2012

Re: education or experience?


On 9 Dec 2012, at 16:31, Doug McIlroy wrote:

> In fact the FP community came late to some of these, just as 
> programming languages at large came late to garbage collection.
> 
> Lazy evaluation--at the heart of spreadsheets since the beginning.

Lazy evaluation for the lambda calculus - 1971 (Wadsworth)
Lazy evaluation in a programming language - 1976 (Henderson&Morris, Friedman&Wise)

I wouldn't call those dates late, especially since VisiCalc, the first widely-used electronic
spreadsheet entered the market in 1978.

Regards,
    Malcolm
Rustom Mody | 9 Dec 18:43 2012
Picon

Re: education or experience?



On Sun, Dec 9, 2012 at 11:04 PM, Malcolm Wallace <malcolm.wallace <at> me.com> wrote:

On 9 Dec 2012, at 16:31, Doug McIlroy wrote:

> In fact the FP community came late to some of these, just as
> programming languages at large came late to garbage collection.
>
> Lazy evaluation--at the heart of spreadsheets since the beginning.

Lazy evaluation for the lambda calculus - 1971 (Wadsworth)
Lazy evaluation in a programming language - 1976 (Henderson&Morris, Friedman&Wise)

I wouldn't call those dates late, especially since VisiCalc, the first widely-used electronic spreadsheet entered the market in 1978.

Regards,
    Malcolm

You are reading an associativity/parse to Doug's post that he probably did not intend.
"FP came late" was meant to apply to the data orientation (I think) thanks to the long domination of Lisp
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Richard O'Keefe | 10 Dec 01:16 2012
Picon

Re: education or experience?


On 10/12/2012, at 6:34 AM, Malcolm Wallace wrote:

> 
> On 9 Dec 2012, at 16:31, Doug McIlroy wrote:
> 
>> In fact the FP community came late to some of these, just as 
>> programming languages at large came late to garbage collection.
>> 
>> Lazy evaluation--at the heart of spreadsheets since the beginning.
> 
> Lazy evaluation for the lambda calculus - 1971 (Wadsworth)
> Lazy evaluation in a programming language - 1976 (Henderson&Morris, Friedman&Wise)

Pop-2 had lazily evaluated streams about 1970.  In fact that's
how it did input:  a 'character producer' was nothing other than
a lazily evaluated list of characters.  The book about it appeared
in 1971.
Doug McIlroy | 10 Dec 01:03 2012

Re: education or experience?

> > Lazy evaluation--at the heart of spreadsheets since the beginning.

> Never thought of that  -- nice!

Unfortunately it's not literally true, because spreadsheets push
recalculated values to all the variables that depend on them,
rather than waiting until the dependent values are needed.  But
the idea that sequencing is by dependency rather than by
algorithmic specification is the same.  I remember playing around
(before spreadsheets) with the idea for Fortran-like code and 
concluding that the benefit of not having to specify sequence 
wasn't worth the effort. What a lack of imagination!

> > Pattern matching--native to string processing (e.g. COMIT, SNOBOL).
> >   Appeared nearly in its present form in COGENT (1965).

> Hmm google gives me different cogents/  I guess you are referring to the
> Reynolds one?

Yes.

> > Booleans as first class*--surely this is a joke. Algol 60 had them.

> Not sure what you are saying (unless its about the footnote that Boole
> treated bools as ints! This is new to me)  I was referring to the fact that
> C programmers have great difficulty thinking of bools as first class

Your observation is interesting. Booleans and their utility were well
known when C was designed. But since the language level was
deliberately very close to real machine architecture, which rarely
had native support for 1-bit quantities, the data type was deemed
superfluous. (If C had begun on the IBM 7030 it probably would have
have had Booleans.) I don't remember anybody predicting that the choice
risked banishing Booleans from mind.  The one deviation from real
architecture that C did embrace was to define a representation for 
the result of comparison.  That had another unpredicted consequence:
computer architects imitated the language in hardware! (C's largely
ignored bitfield capability came later and, if anything, demoted
Booleans to an artifact of structs.)

The joke I saw was that there was no way that Boolean values
had ever been denied first-class citizenship as Strachey defined
it--even if they didn't have a special syntactic identity.

> >   Matlab exploits them heavily (though represented as doubles).

> Not sure what you are referring to

I had in mind Matlab's frequent use of a Boolean array as
a characteristic function describing some property of the
elements of another array.  Such arrays are used to control
other array operations. In this usage, the characteristic
array may be optimized out of existense, but it fosters
higher-level thinking and concise code.

In reply to your second note, Malcolm Wallace is right. I did
intend to say that FP was late with lazy evaluation.  My mistake
was to think VisiCalc had appeared before 1970. Similarly,
I believed that call by need came into our vocabulary
soon after Algol 60 brought call be name and call by value to
our attention as somewhat better-behaved models than Fortran's
call by reference. Now I suspect that belief is wrong, too.

Doug
Rustom Mody | 10 Dec 07:01 2012
Picon

Re: education or experience?

On Mon, Dec 10, 2012 at 5:33 AM, Doug McIlroy <doug <at> cs.dartmouth.edu> wrote:
> >   Matlab exploits them heavily (though represented as doubles).

> Not sure what you are referring to

I had in mind Matlab's frequent use of a Boolean array as
a characteristic function describing some property of the
elements of another array.  Such arrays are used to control
other array operations. In this usage, the characteristic
array may be optimized out of existense, but it fosters
higher-level thinking and concise code.

In which case it goes back to APL's compress operator ie 1960.
http://www.aplusdev.org/APlusRefV2_8.html#HEADING179

Heres a session that demonstrates

     A+
     Copyright (c) 1990-2008 Morgan Stanley.  All rights reserved.
     This version is Release 4.22
     a ← 1 2 3 4 5
     b ← 1 0 1 1 0
     b/a
 1 3 4
     b ← 1 0 2 1 0
     b/a
 1 3 3 4



--
http://www.the-magus.in
http://blog.languager.org


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Gmane