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.