[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::languages

Title:Languages
Notice:Speaking In Tongues
Moderator:TLE::TOKLAS::FELDMAN
Created:Sat Jan 25 1986
Last Modified:Wed May 21 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:394
Total number of notes:2683

306.0. "programming self-taught?" by SUOIS2::MGOLDWASSER (cool the engines...) Wed Apr 03 1991 11:10

   A friend of mine is interested in getting into programming. Since
   his personal situation prohibits going to school and getting a formal
   programming education, he is hoping that, by investing in a PC and some
   software, he can teach himself a marketable computer skill. To this
   end, he asked me ( a non-programmer ) if I could give him any "insider"
   information about the soundness of his plan. This conference is obviously
   populated with many, very professional and knowledgable programmers
   so I thought I'd turn here for a little help.

   I guess his crucial question is... do autodidactic programmers have
   a fighting chance in the real-world job market, or would he basically
   be wasting his time?

   What programming area could/(should) such a person concentrate on,
   considering he will be limited to using a IBM-AT...
      database programming ( Clipper, Foxbase, etc.)?
      OOP development ( Smalltalk, C++,etc )?
      Artificial Intelligence ( Prolog )?
      or mumble-mumble-mumble?

   From my reading, I get the impression OOP might be worth trying.
   ( It seems to be the hot topic in the software world. )
   Thanks in advance for any and all comments.
   Marc
T.RTitleUserPersonal
Name
DateLines
306.1TLE::BRETTWed Apr 03 1991 12:415
    Tell him to go to night school.
    
    Did you ever hear of a self-taught lawyer? doctor? CAR MECHANIC?
    
    /Bevin
306.2home for skill, school for creditULTRA::PROBINSONJust causing trouble...Wed Apr 03 1991 14:2634
>    Did you ever hear of a self-taught lawyer? doctor? CAR MECHANIC?

In high school, I knew more than one car freak who could (and did) 
take on anything from a simple lube job to a full engine rebuild.  
None of them were professional mechanics or had been to "mechanic 
school."  I find it hard to believe you would claim none of these 
people could ever get a job in a garage.  It wasn't so many years ago 
that the self-taught programmer was the rule, not the exception.

The point is not to become a principal-engineer level code jock
overnight, the point is to acquire a "marketable skill."  How much 
skill do you expect out of an entry-level programmer?  That much
can certainly be acquired at home.

Marketing that skill presents its own problems, however.  The 
_credibility_ that comes with a course in school is higher than home
study, for sure.  (That says nothing about the _actual_ skill 
acquired, however!)  And in today's Boston-area market, at least, you
are competing with a LOT of laid-off programmer types. 

My brother did more or less what .0 proposes, also because of his
personal situation.  I donated my Robin to him, to provide him with a 
computing platform.  He avoided taking courses because, being a
free-lance carpenter, the cost of a course was a major hit to his
income.  What he did do was try to get course credit by just passing
the final, which BU MET college is willing to do (at least for the
low-level stuff).  This let him put BU course credits on his resume,
for maybe a fifth the cost of taking courses (and without the time 
commitment either).  After a few of those, he got himself hired by a
contract temp agency, and within a year he had a regular fulltime
programming job. 

So it can, and has, been done.  The Programming Police will not keep 
you out of a job for lack of schooling, despite what .1 says.
306.3BLOCKP::nethCraig NethWed Apr 03 1991 17:0018
   Actually, the CAR MECHANIC analogy is pretty close to accurate.
   I think you will find that to work on today's cars, some sort of 
   formal training is a requirement.   There aren't as many mechanic
   jobs anymore either.  When I was a kid, every corner had 3 gas stations
   and they all had mechanics.  Most of those people probably learned all
   they knew about cars in their back yards.  Now, there are a lot less gas 
   stations, and the ones that are still around sell milk and eggs in the bays
   where the mechanics used to work.   Most mechanic jobs are with car
   dealers or in chain 'garages' that have training requirements.   I think
   programming is going the same direction.

   I think .2 is right, you can probably obtain a marketable skill at
   home playing with a PC.  It'll be tough to get a job around here, 
   because the competition is fierce, but you probably could (lots
   of companies need a few PC hackers around to keep things running).
   But the chances would be much greater to get an initial job, and
   to keep it, if some formal training could be acquired at some point.
306.4ULTRA::PROBINSONJust causing trouble...Wed Apr 03 1991 19:0457
re .3, two things:

While car dealers may require their mechanics to go through the 
manufacturer's particular training courses, this is not necessarily 
the case with independents (and there are still plenty of 
independents, fortunately).  There, the "requirement" is more from the 
market than from any sort of license-granting entity.  (There may be 
specific exceptions, but I think this is true in general.)  People
tend to feel better if their mechanic's wall is covered with diplomas
and certificates, particularly from well-known institutions or from 
professional associations whose reputations can be verified.

Also, the "requirement" is for _certification_ not _training_.  I 
don't think anyone should care how you learned what you know, so long 
as you can demonstrate that you do know it.

Again, this is what my brother did.  He trained himself, obtained 
certification from a well-known local institution (BU, in this case) 
and got work in the field based on that certification.  BU vouches for 
his knowledge, not how he gained it.  For someone who is sufficiently 
motivated, and for whatever reason doesn't want to commit to the 
expense or time structure of a course, this is a perfectly valid way
to get into programming. 


re .0, in an attempt to answer more of your question:

I see two broad areas where programmers are typically in demand:

	- COBOL and RPG, for business applications programming;
	- C/Unix and C/MSDOS, for pretty much everything else.

Most people I know have an almost instinctive "No, you don't want to 
do that" reaction to the first area.  Nevertheless, there is a LOT of 
COBOL and RPG out there, and not that much formal training going on.  
The downside is that it's not so easy to latch onto a PC COBOL 
compiler, although they do exist, and the debugging environment may 
not be as sophisticated as that for C.  Also tutorials and books are 
harder to find.  Forget getting "certification" from a university for 
this one, too (although it's possible that one of the technical 
schools, e.g. Sylvania or ITT, would go for it).  These last are all,
in a way, _good_ reasons to go this route; the competition is less. 
(But you'll probably have to wear a tie to work.)

C, either on Unix or MSDOS, is "where it's at" for someone more 
inclined toward the technical/engineering end of things.  (For someone 
interested in systems programming, "Unix internals" are magic words 
whose power is awesome to behold; you're not likely to pick that up at 
home on your PC, however.)

Yes, OOP is a "hot topic" these days, and some significant fraction of 
the help-wanted ads say C++ rather than C these days.  Since 80% of 
programming is maintaining old code, and 80% of old code is not in 
C++, I find it hard to recommend to someone starting out, however.

Hope this helps.  Others are likely to disagree with me; that's fine 
too!
306.5BLOCKP::nethCraig NethThu Apr 04 1991 10:3311
  One other idea:  Electronic Data Systems (EDS) *prefers* to hire 
  non-CS graduates for their entry-level programming jobs.  They have
  extensive training programs, and they would rather teach you all
  the concepts their way rather than have you 'un-learn' habits
  you picked up in school.   Don't know if they have much presence here
  on the East coast - they are *very* big in the Midwest and Southwest.
  What I don't know is if they have a general College Degree requirement.

  
  
306.6engineering = responsibility, not formalityLENO::GRIERmjg's holistic computing agencyThu Apr 04 1991 15:2441
    
       I don't necessarily see value in formal training - I've met a lot of
    people with MSes in C.S. and it didn't mean squat towards being a good
    engineer.
    
       For doing research, formal training is advisable and/or necessary. 
    For engineering (which combines both the science of computing and
    the art of good design, as all engineering disciplines do,) it can be
    useful but does not in and of itself make for a good engineer.
    
       Understanding the current technology and ideas and being able to
    skillfully apply them in responsible ways makes for an engineer. 
    Consider a civil engineer building a bridge.  They're personally
    responsible for their work and if people are harmed due to bad design
    on their part.  While its doubtful that it'll become commonplace for
    engineers to be brought to legal trial for misdesigns (but I believe it
    has happened,) to be an engineer means assuming some personal direct
    responsibility for the work you do.
    
       This is true of the car mechanic also.  If they don't reconnect some
    vital hose and your car blows up maiming you, they're liable for their
    actions.  This is why it's becoming more important for mechanics to be
    properly trained and licensed, not because of some artificial needs,
    but because of the liability and responsibility upon them.
    
       I learned to program long before I had any formal training. 
    However, the formal training I've had has helped fill out my technical
    knowledge of the science, and force me into some areas where the
    breadth was valuable and I probably wouldn't have ventured without the
    needs.
    
       I guess I don't have a "yes, teach yourself programming!" or "no,
    you have to learn it formally" answer, but rather just some advice to
    realize the responsibility you take on yourself by writing programs
    which people depend upon for their livelihood.  Some of those
    self-taught backyard mechanics probably were the best damned mechanics
    we'll ever see, far better than someone who goes through the rote and
    gets a piece of paper saying their qualified.  BUT they had the ability
    and took on the responsibility themselves.
    
    						-mjg
306.7my two centsSMAUG::ABBASISun Apr 07 1991 05:1936
    ref .0
    the equation is really simple:
    you can learn coding at home, no doubt about it, but one still need
    a nice looking peice of paper to say that they 'Really' can programm.
    
    I knew a brilliant software engineer, Who can design/develop software
    better than 10 Phd in computer science with compiler thesis , and
    he only has a high school. 
    
    application Software is not a 'Hard' science, in the sense of 
    Math, Physics, EE, ME , Med, etc (Ok, now someone will screem at me), what I
    mean is this, if you have a talent for application programming,
    you can become a good programmer without much formal training. 
    
    but in say MATH, or Physics, or 'Hard' Engineering degrees,you really need 
    formall training, since the concepts are harder to aquire and theories
    are more advanced, and you'll learn faster if it were explained to you,
    plus you need access to equipemnts etc. in programming , the only LAB
    one needs to learn it, is a terminal, printer, and a manual (and a good
    debugger!)
    
    even with more advanced programming concepts such as Objects, Threads,
    inheretance, exceptions , strong-typing, etc.. I really believe one could
    learn all that by oneself without too much difficulty. in programming
    practice is best teacher.
    
    offcourse a programming language is just a tool, one still needs to 
    learn the algorithms itself, and that where the 'real' science comes
    into the field computer science.
    
    in the end , you still need some kind of certificate, so that to
    convince employer that you know the stuff, but by all means go and
    learn programming at home.
    
    /naser
    
306.8TLE::BRETTSun Apr 07 1991 13:4115
    Its these brilliant home-taught types who right superbly tuned
    bubble-sorts, rather than just finding a quicksort somewhere
    and calling it.
    
    The computer programming of the 90's is going to be based on "reliable
    and swiftly implemented (which implies use of lots of prewritten stuff)
    -or- your company dies" and companies are going to be looking for
    people with understanding and experience in s/w engineering, not
    writing bubble sorts.
    
    The former is going to require either an unusual knack for
    finding the right books, or lots of luck - the later is the
    much more likely consequence of a home-grown education.
    
    /Bevin               
306.9PASTIS::MONAHANhumanity is a trojan horseMon Apr 08 1991 10:2919
    	Software engineering has gone the same way as most engineering
    disciplines (and the word "discipline" should give you a clue).
    
    	There were the days when you could take a car engine, string and
    sheets of plywood, and make a plane. Now, for most plane designers,
    there are detailed regulations in 30 countries with which they must
    comply. There are the few exceptions who get told things like 
    "We need something to do 'x' in such-and-such a military
    situation, and we don't care if you call it an aircraft", and even
    fewer who invent something like the hovercraft and make it a commercial
    success. Is he a hovercraft inventor, smart bomb designer, or does he
    want to organise seating placement in a 747 (bearing in mind the
    smoking regulations)?
    
    	I don't want to sound pessimistic, but to be a success he either
    has to absorb a *lot* of standard knowlege - most of which is knowing
    where to get information when you need it, or he needs an original
    idea. A company employing him will expect some evidence of one or the
    other.
306.10ULTRA::PROBINSONJust causing trouble...Mon Apr 08 1991 12:4044
I wasn't going to say anything more, but after reading .8, ...

>    Its these brilliant home-taught types who right superbly tuned
>    bubble-sorts, rather than just finding a quicksort somewhere
>    and calling it.

I don't know where you got your low opinion of "brilliant home-taught 
types" but anyone with half a brain and a decent data structures text 
will pick an appropriate sort algorithm from the half-dozen or so in 
the book and implement it.  "Finding a quicksort somewhere" may work 
for you, on your large system surrounded by huge software libraries, 
but you should realize that you live a privileged life.  Huge
libraries are rare in the PC world, where most programming happens. 
There, people who quickly write superbly tuned code are valued, not 
denigrated.
    
>    companies are going to be looking for
>    people with understanding and experience in s/w engineering, not
>    writing bubble sorts.
>    
>    The former is going to require either an unusual knack for
>    finding the right books, or lots of luck - the later is the
>    much more likely consequence of a home-grown education.

No "unusual knack" is required.  Try cruising a university bookstore 
at the beginning of a semester; you will find a set of texts to choose 
from, pre-selected by the professors who supposedly know what they're 
teaching (automata/compilers, discrete math, architecture, whatever).

It is a rare undergraduate program indeed which even *claims* to teach
"software engineering"; if companies look only for graduates with 
"understanding and experience" then they will be sorely disappointed.


Let me try to return to the *point* here.  The question is, how to 
acquire sufficient training to get a programming job?  An
*entry-level* job, I should add, although that ought to be blatantly
obvious.  The question is *not* how to acquire vast expertise in
software engineering without formal education or work experience. 
If you expect an entry-level programmer to have that kind of 
background, you will never be able to hire one; anyone meeting your 
expectations will be over-qualified for the actual job.

--paulr
306.11Go For It!WHOS01::BOWERSDave Bowers @WHOFri Apr 26 1991 15:4110
    Software engineering may be turning into a serious formal discipline,
    but...  There's this guy I know...  High school education; self-taught
    DOS hacker.  He re-sells Epson clones along with a small business
    package written in Clipper that he customizes for each customer.  Also
    sells Novell LAN stuff.  Works out of his garage.  Drives a new
    Mercedes. Takes 3-week vacations in Europe, the Orient, etc...
    
    Nuff said?
    
    -dave
306.12If money's the point, there's bigger fish than softwareLENO::GRIERmjg's holistic computing agencyFri May 03 1991 14:218
    Re: .11:
    
       You can sell drugs on the street corner with a similar amount of
    education.  Does that make it any more professional?  And you make even
    more money and can take better vacations.
    
    					-mjg
    
306.13Well, excuuuuuse me!WHOS01::BOWERSDave Bowers @WHOMon May 06 1991 10:542
    I thought the reason the guy wanted to get into programming was to earn
    a living.
306.14Sorry! No offense intended!LENO::GRIERmjg's holistic computing agencyWed May 08 1991 21:1716
    Re: .13:
    
       Sorry, I was feeling a bit short-winded when I wrote that, but my
    point still stands.  If you're just interested in hacking about, that's
    great!  If you're just interested in making money, there's probably many
    better ways to earn your living which reap better benefits.
    
       If you're interested in being a good programmer and/or engineer,
    there's a lot to learn.  While it's still in its adolescence, the
    science is mature enough to deserve some more serious study than
    reading through the Turbo Pascal or Turbo C++ books and hacking away.
    
       Want to go visit a self-taught doctor?  I thought not...
    
    					-mjg
    
306.15ULTRA::PROBINSONJust causing trouble...Thu May 09 1991 12:2751
re .14,

>    If you're just interested in making money, there's probably many
>    better ways to earn your living which reap better benefits.

Few people are "just" interested in making money.  Most people would 
prefer to make money doing something that interests them.  Furthermore,
I think programming would be appealing as a career because you can (if 
you need to/want to) get into it with comparatively little training; 
with experience (and maybe more training) it is not hard to turn that
into a decent middle-class income. After a mere ten years in the
business, I make 90% of what my father (a chemical engineer) did
before he retired a few years ago. 
    
>    While it's still in its adolescence, the
>    science is mature enough to deserve some more serious study than
>    reading through the Turbo Pascal or Turbo C++ books and hacking away.

Surely I agree with you, and surely I suggested "more serious study" 
than that in earlier replies to this note.  Please be more careful how 
you characterize what other people have said.
    
>       Want to go visit a self-taught doctor?  I thought not...

Does every engineer in your group have a Ph.D.?  I thought not...

While correctly predicting my gut reaction to a self-taught doctor, I 
fail to see the connection with programming.  No program I am likely 
to work on will kill someone, or even make them seriously ill.  It is 
far easier to patch a program (which patch can be tested before it is
put into use) than to patch up a human who has been in an accident 
(for which the doctor gets approximately one chance, with no testing).
Any "bug" in the doctor's work is generally considered actionable, 
anywhere from a malpractice suit to de-licensing to criminal 
proceedings.  Programmers are _never_ held to that high a standard.*

It takes a time investment roughly equivalent to a math or CS Ph.D. to 
become a doctor in private practice (says the husband of a medical 
student).  I dare say there are very few engineers with that amount of
formal training.  Programming (or even engineering) and doctoring are
just not comparable in this way. 


* Granted there are programs which *must* be bug-free, because errors 
in them could kill people.  In Richard Feynman's autobiography, he
describes his part in the Challenger investigation, including a
description  of what changes to the software in the Space Shuttle go
through before they're ever used.  Not very many software projects 
will invest that degree of time and energy to insure the correctness 
of a modification, and it is unlikely that any individual programmer 
would be sued or convicted if a bug made it through and killed someone.
306.16TLE::BRETTThu May 09 1991 14:2633
    >  No program I am likely
    >  to work on will kill someone, or even make them seriously ill.
    
    
    Okay, so you don't work on
    
    	operating systems
    	security systems
    	compilers
    	linkers
    	spread sheets
    	runtime libraries
    	editors			[ accidently delete a line of code ]
    
    
    I fully expect major law suits some time in the next decade or so,
    based around
    	"your operating system corrupted a data base/
    	      security system let terrorists modify my data base/
    	      compiler generated incorrect code/
    	      linker did a bad fixup/
              spread sheet incorrectly added up my numbers/
    	      runtime library SIN routine got the wrong answer/
    	      editor incorrectly deleted a line of code...
     	so my BOEING 747 crashed into downtown New York City,
    	killing 2,000 people".
    
    And I, for one, don't fancy being asked "and did you use the best known
    s/w engineering technology" by a prosecution lawyer.
    
    
    /Bevin
    
306.17TOKLAS::feldmanLarix decidua, var. decifyThu May 09 1991 19:337
re: .15

I suggest reading the Risks column in Software Engineering Notes.  You'd be
surprised how the code you write every day could have serious, far reaching
effects.

   Gary
306.18ULTRA::PROBINSONJust causing trouble...Fri May 10 1991 11:5333
re .16,.17:

Note that I did not say that software I wrote COULD NOT kill anyone; I 
said it was NOT LIKELY to.  I have indeed worked on compilers, 
editors, operating systems, and security systems; nobody I know of has
died yet.  I don't expect anyone ever will; but I may be surprised one
day.  (And while I don't follow Risks assiduously, I do look it over
every now and then.  I view the political and civil rights problems as
more important than the odd damage-causing bug, but that's not to the
point here.) 

There's a legal distinction between "forseeable consequential damage"
and "unforseeable consequential damage."  While I don't doubt that
someone will TRY to pin liability for some accident on the producer of
a general-purpose compiler, linker, or operating system, I doubt they
will be able to succeed; technically, sure, legally, no.  (Again,
pursuing my reasons for doubting that is a rathole which strays a bit
too far from the topic at hand.)

Now, then:  is what I am saying about the prerequisites for an
ENTRY-LEVEL PROGRAMMER so hard to understand, or so at variance with 
reality?  I believe that it is perfectly reasonable for someone to 
teach themselves a set of skills more or less equivalent to those 
which could be obtained from many college (or other formal) programs. 
I don't expect (and nobody should expect) such a person to be capable
of running a safety-critical project as their first job.  Such a
person should be expected to take a designated, specific coding task,
and execute it well with some (hopefully but not necessarily small)
degree of supervision.  Check out the official job descriptions for
SE-I and SE-II sometime; it doesn't take much.  (If you disagree with
the descriptions, that's one thing; we can debate that elsewhere, and
I will be far less obstinate.  The point here, however, is what does
it take to fill the job description _as it stands_.) 
306.19what..an educated idiot...TRLIAN::GORDONFri Jun 07 1991 15:1910
    for some it's hard to understand but...
    
    
    	competence is not granted with the formal education process that
    	one takes to obtain a degree......
    
    	and incompetence is not granted to only those who do not follow
    	a formal education process........