Subject: Re: Newbie - 2 MORE Small problems?
From: Erik Naggum <erik@naggum.net>
Date: Wed, 13 Mar 2002 16:31:23 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3225025893260549@naggum.net>

* Jon Allen Boone
| 1.  Is the supply of Lisp jobs sufficient to maintain employment for
|     existing "masters" of Common Lisp?

  I think it is impossible to determine this.  There are two obvious
  problems, even though there are employment opportunities with Common
  Lisp: (1) they usually require a host of additional skills, some of which
  are more important to the employer than Common Lisp; (2) you may not wish
  to take advantage of them because there are more impotant things to those
  seeking to use Common Lisp than Common Lisp, such as geographic location
  (particularly if they have a family), the intellectual challenges that
  come with the job, the working environment, etc.  I think few of those
  who master Common Lisp have any serious problems finding challenging
  jobs, but I think they go for challenging before Common Lisp.  An
  employer of smart people would naturally want to offer an intellectually
  stimulating environment and would therefore be amenable to requests to
  use Common Lisp, but it is hard enough to do this that an employer would
  not necessarily want to make Common Lisp a job requirements, lets he miss
  out on other smart people who are able to fulfill his requirements.

| Will having more people mastering Common Lisp help increase the job
| supply by making it appear less risky to use Common Lisp?

  I believe there is nothing to fear at all in more people mastering Common
  Lisp.  The demand for solutions to hard problems that make Common Lisp
  able to supply such a solution is on the increase, and the more problems
  are actually solved, the more programming languages that are able to
  build upon past solutions will prosper.  Why is this not C++ or Java,
  with their extensive libraries and third-party vendors?  Because, they
  offer mostly alternative solutions to already solved problems which work
  in incompatible ways, and the rare novel solution is so entangled in the
  language that using it becomes harder and harder, the more it deviates
  from the assupmptions made by the language.  What Common Lisp does so
  uniquely, is to offer all those who would have created their very own
  language a means to create their own without having to return to square
  one and build the entire development environment.  Common Lisp makes it
  so easy to capitalize on the existing resources of the system developers
  that the little languages that you need to talk about your problems is a
  non-issue.  There are a number of books out there on designing little
  languages and building parsers and such, and tools like lex and yacc were
  written to accomodate those needs.  That the "ya" stands for Yet Another
  is no accident: There was a lot of interest in these things at the time
  it was written.  Common Lisp is able to accomodate these needs without as
  much work and hassle.

| 2.  Will lowering the barrier to entry for newbies do more economic
|     harm than good?

  I think yes.  Newbies are not good -- if they remain newbies and go no
  further, which is what hapens when it is easy to start and hard to get
  further.  However, making it easier for people to become masters is
  clearly a good thing.  I therefore think it is a good thing to make the
  entry level reasonably high, but make it easier to go on once you have
  made the entry.  Common Lisp can, in my view, not afford to be depleted
  by a large number of incompetents, frauds, and liars, although C++ and
  Java have won big by this scheme.  Being incompetent at Common Lisp hurts
  the language, for whatever reason, but incompetence at C++ or Java is not
  a problem for either language or programmer.  I guess it simply is one of
  the consequences of being and not being mainstream.

| I assume that it *is* possible to learn Common Lisp from the available
| on-line sources.

  I do not think a dedicated student would stop at on-line sources.  I also
  do not believe education should be free.  The willingness to spend a few
  hundred, even a few thousand, dollars to learn something does two things:
  It filters out those who would expend little effort of their own, and it
  rewards those who take the time to write pedagogical works financially.
  There is a limit to how long you can give things away before you want
  something in return, so somebody has to fund it.  People who want to
  learn a new a new programming language without paying for it do not
  strike me as the future of a living language.  Hell, I have not yet made
  a nickel on my Java skills, yet I have acquired the entire Java library
  from Sun and spent countless hours reading and playing with Java, but I
  do not consider myself capable of charging for my time at my regular
  rate, yet.  The same is true for SQL and cryptography.  I also have a lot
  of experience with SGML and XML, yet I do not _want_ to work with it, nor
  do I want to use my Perl skills to write code for pay -- but I do debug
  other people's disgusting Perl hacks and replace it with real software.
  Many other peeple can make things work.  What I do is not make it fail.
  I believe it is possible to learn to make things _work_ nearly without
  effort, just like you do not need any particular training to build a
  house that stands, but you do need lots of experience, practice, study,
  and expenditure of effort to make things that do not fail, just like you
  need serious amounts of planning, adherence to standards and regulations,
  and lots and lots of people who cost a lot of money to "rent".  I see no
  reason why programming should be different.  However, most programmers
  still build tree houses with free resources and argue that it would take
  all the fun out of building tree houses if you had to build real houses.
  Perhaps this is true -- I know of no carpenter who builds tree houses for
  himself.  Hm, I digress.

| Do we newbies really need any more assistance?

  I think proof of effort should be rewarded liberally, and effort very
  strongly encouraged.  Likewise, people should know that without doing
  anything on their own, they will not be rewarded with help.  It is also
  important to make people realize when to ask questions and that making
  their assumptions clear and be up front about them.  I believe this is
  what makes people who are dedicated and willing to work hard to be able
  to succeed, but when you start off with something, you first of all need
  to study and obtain knowledge, not to question and doubt before you know.
  This is difficult for people who have mastered a programming language
  before they try a new one.  I believe it is unfruitful to expect Common
  Lisp to be the first programming language someone learns.  Therefore, the
  clue should be to attract intelligent people who already (think they)
  know how to program and are not interested in spending a lot of time up
  front on trivial things, but instead on counter-information to their
  current beliefs, i.e., what they believe is true for their previous
  languages which is likely to be false for Common Lisp as well as they do
  not believe could be true, but which is indeed true for Common Lisp.

  I personally think interaction with experienced programmers is the way to
  go, but it is important to ask intelligent questions and to stay focused
  on the purpose of learning something.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.