questionscan one semi-adequately teach oneself computer…

vote-for48vote-against +48 -0

by idiotwind13
asked 4 months ago

vote-for8vote-against

In my reasonably educated opinion, no, you can't really. That said, there are plenty of people out there writing code that are self-taught. Logic skills are not so important as math skills, if you're talking about serious work.

I'd recommend some books to start with, if you're serious about this. I'd recommend Deitel in either C++ or Java, which will give you a foundation of programming and data structures at the same time.

Solid spatial reasoning is the most important thing behind a truly great programmer.

While I still worked, I wrote upwards of 200 various programming languages, of which the most notable were various assemblers (including the ever elegant Macro-11, and COMPASS), LISP, C, C++, Java, and (hold your nose) PL/1. I also wrote Pascal, and CORAL, and any number of amazingly obscure languages, including CMS-2. I've even written COBOL and RPG (long, long, long ago).

There's also the scripting languages, like PERL, and the various shell scripts.

vote-for6vote-against

I just entertained myself. The rich number of books available from Deitel and Deitel (per et fils) is enormous.

http://www.amazon.com/s/ref=nb_sb_ss_i_5_6?url=search-alias%3Daps&field-keywords=deitel+and+deitel&sprefix=deitel%2Caps%2C411

They even have a couple on writing Android Apps. I may have to have that. Dang, this was an expensive question to answer.

@caffeine_dude: Free form or fixed format what? I'm wayyy confused.

@durkzilla implies that I am not normal. This is correct.

vote-for7vote-against

I understand your concern - most of the software developers I've worked with over the years could not be described as "normal" people.

Seriously - the answer is yes, it can be done. The real question is whether you have the correct aptitude for coding and a strong enough desire to learn.

There's a vast landscape of programming languages out there, some specifically designed for teaching the fundamentals of programming to novices.

Give it a try!

vote-for5vote-against

@shrdlu: I developed a program for ppc2003 using visual studio and to be fair I did not use any of my "computer language skills" I dragged a bunch of stuff around added some command lines behind a few buttons. Setting up the environment took longer then getting the program to work.
RPG silly... omg you are not talking RPG I program cycle? AHHHHHH!!!!

vote-for5vote-against

@durkzilla: I love me some AHK for repetitive tasks.

; Sample AHK
Sleep, 1000
Loop, 3
{
Send, {F5}
Sleep, 1000
}
; end sample
; @shrdlu: How long has it been since your coded a bit of RPG?

vote-for5vote-against

That's the only way to learn..

vote-for5vote-against

@caffeine_dude: Is that your secret to landing BOCs?

vote-for5vote-against

@caffeine_dude: Crap I HATE lightboxes!

Okay, here it goes again, for the second time.

I shall provide you with either enlightenment, or the stuff of nightmares.

http://en.wikipedia.org/wiki/IBM_RPG

I disagree with the description "RPG is a high-level programming language (HLL) for business applications." Report Program Generator is high-level in the same way as I am tall. Still, it had its day, and was useful for what it did. I used it very little, and merely as a pro forma exercise. I was never an actual business programmer. Please remember that I actually date from the days of "programming by wire" (where commands were input one at a time, by flipping toggle switches to the correct position, and then entering the word.

http://stackoverflow.com/questions/4772768/how-was-the-first-computer-program-created (third question down)

That references the Altair, but it should still give you a vague idea.

vote-for4vote-against

Any monkey can read a book and learn the syntax of a programming language, but that does not make one a "Programmer".

Learning how to apply the programming language to solve a problem -- now that's the tricky part.

vote-for6vote-against

@caffeine_dude: Crap I HATE lightboxes!

Okay, here it goes again, for the second time.

I shall provide you with either enlightenment, or the stuff of nightmares.

http://en.wikipedia.org/wiki/IBM_RPG

I disagree with the description "RPG is a high-level programming language (HLL) for business applications." Report Program Generator is high-level in the same way as I am tall. Still, it had its day, and was useful for what it did. I used it very little, and merely as a pro forma exercise. I was never an actual business programmer. Please remember that I actually date from the days of "programming by wire" (where commands were input one at a time, by flipping toggle switches to the correct position, and then entering the word.

http://stackoverflow.com/questions/4772768/how-was-the-first-computer-program-created (third question down)

That references the Altair, but it should still give you a vague idea.

vote-for7vote-against

@caffeine_dude: You were not alive when I wrote RPG. I am nearly sure of this.

vote-for7vote-against

@shrdlu: RPG IV is grown up now. Free format think C.
We can call commands, use SQL is is no longer "report program generator". It is still being used on as/400s. I leaned enough by using a collage text book.
I started free form. Was told the shop does not use free form so I learned fixed. Then they made me learn the RPG cycle...it was evil!

vote-for7vote-against

Can you teach yourself programming? If you're good with self-motivation and dig into it, yes you probably can.

Can you get a job that way? Probably not. All job markets are competitive and employers can pick the cream of the crop. Without a degree and/or experience (via an internship), you're gonna have a heck of a time getting a job.

My ex was a degreed programmer and for various reasons didn't work for about 7 years or so. He was unable to get a programming job again because his knowledge and toolset were outdated even though he self-trained on the current technologies. He ended up in field service and had to move up from there once he proved himself.

vote-for6vote-against

@caffeine_dude: Oh, sure, I understand that it moved on. It was a diversion when I toyed with it. It was fascinating to see how many lines of code (including setup) it took to add two numbers and print them out.

I loved CMS-2 because it was (at least for me) more than half assembler. Then again, machine code always made me happy, too. You could drop into machine code on the CDC machines with a simple command, and then every line of numbers was a command. I may still have an old program from the early days written in CMS-2. I'll have to see if I can find it.

Actually, I found it, but have thought better of posting it.

vote-for6vote-against

@shrdlu: I know of the Altair, I saw the Pirates of Silicone Valley (not a porn).
: )

vote-for6vote-against

@caffeine_dude: Oh dear. I had friends who contributed to that documentary. The CMS-2 code I mentioned was written in 1982. I was amazed to look at it and instantly understand what was going on. Then again, CMS-2 was (probably still is) a very straightforward programming language. Structured, as COBOL or Pascal, and very narrow in the command syntax. I wrote a doubly linked list using a single 8-bit word to store the pointers (half the word for forward, and half the word for the other end). It was elegant. The code was about forty lines, and the comments to explain how it worked ran for nearly 120 lines.

I miss having so many different kinds of mainframes, and other kinds of computers. Sometimes it seems rather boring and prosaic.

[Edit: Good old Wikipedia. http://en.wikipedia.org/wiki/CMS-2_%28programming_language%29]

[Edit again: Also http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=CMS-2]

vote-for5vote-against

First, thanks for all the getting started pointers, second, edit to original question:
1)When I said I was somewhat of a tech nerd, I was talking about relative to humanity in general. Here on Woot, I am probably middle of that pack.
2)I am not looking for a career as a programmer. Like I mentioned, I am a law student so ideally I would like a career in the law. I would like to perhaps be able to put some type of understanding of computer languages on my resume as a way to differentiate myself from the endless flood of other law students, which are roughly as abundant as milkweed pollen. Mainly I would like to be able to build websites, web based applications, and tablet/ phone based apps and get them to interface with one another.
3)I may have been overly modest, I am pretty damn smart and about as likely to give up as an attack dog when I really put my mind to something.
Thanks in advance for any further advice.

vote-for6vote-against

@idiotwind13: Putting up web sites is not actually programming. Making the code behind them is, but it doesn't sound like that's really what you meant. Understanding of computer languages on your resume will backfire if you run into someone for whom those languages have meaning. I have a friend who recently graduated Law School (with honors, natch), and who was ALREADY employed in the computer world. He's the type of person you might end up with (although he's a very kind and generous human being, unlike myself).

Get a book on survey of languages... Hmmm, wonder if they still make those. The world of programming is more complex than you may be expecting. Look at it this way.

There's corporate law, and constitutional law, and criminal law, and any number of complex subjects within those, all of which a person might specialize in. You wouldn't normally expect someone whose expertise is in one to be an expert in the others (although they may be).

Out of chars. Back later, maybe.

vote-for4vote-against

@shrdlu: I get what you are saying, and I realize that technically the languages that build most websites (HTML, CSS etc.) aren't really programming, though this certainly part of what I would like to get a handle on. I also realize that I am not going to fool anybody at Google or Oracle into believing that I actually know what the hell I am talking about, I just feel like the ability to write and understand some of this stuff might differentiate me to say, a small firm that could use some site maintenance etc. As I mentioned before, there are, to put it mildly, a crap ton of people who are going to law school and substantially less than a crap ton of decent jobs in the legal field right now. I am a part time law student, so I still have a good 2.5 years until I will be on the job market, so this is more of a longer term goal, a skill I can maybe hone while working 50 hours a week and reading a bunch of really boring stuff at night. Also it appeals to the problem solver in me.

vote-for6vote-against

@idiotwind13: Then learn php. That will be useful to you.

You might also take the point of view that you will be successful as a lawyer, and not need the secondary skills. After all, you went into law because that's what you wanted to do, right?

vote-for4vote-against

@shrdlu: Yes, but the whole secondary skill thing is really more of an ancillary benefit. I have every confidence in my abilities as a lawyer, for better or worse I am pretty much wired that way, people have been telling me I would make a good lawyer since I was in elementary school (what that says about me as a person I leave for another conversation). However, I also have some friends who have recently graduated high in their classes from law school, are fairly well connected, and have struggled to find gainful employment to the level one would hope after one has incurred a second mortgage payment worth of additional student debt. Any edge I can get I will exploit, and my schedule being as it it there are not a lot of options to gain such an edge. Soon I will have a job which allows me to attend some of the schmoozy, networking type of events, but until such time... also as I mentioned, it's more my own curiosity and desire to better understand the electronic world than the edge.

vote-for8vote-against

@caffeine_dude: Just recently finished up a major project using RPG. Believe it or not, there are still some large corporations using it. The AS/400 is known as the iSeries and can still process large amounts of data very efficiently.

How about those matching record and level break indicators, don't you miss them? :-)

Back on topic.. check out the online programming courses at a community college. They're usually inexpensive and will give you a good foundation. I have worked with several self-taught programmers through all my years as an IT professional. If you have great logic and analytical skills, you're already one step ahead.

vote-for8vote-against

@idiotwind13: If you're really wanting to explore the world of web development, I would concentrate on ASP.NET, VB.NET, and C#. An SQL class would also be beneficial.

vote-for4vote-against

@durkzilla: Hey! What do you mean by "not normal people"!?? I resemble that comment!

I'm like @shrdlu, with a bunch of years at this, having first gotten access to a mainframe in the early 70s (High School years for me), self-taught FORTRAN programming on that system.

Since then, I've programmed in asssembler on lots of computer systems (IBM, DEC), C, C++, Java, COBOL (ew), and mostly Perl and PHP these days. I'm having fun learning Android development as well, but don't like the developer tools there.

Yes, you can self-teach. Some of the books mentioned are very good, and you can get development suites (Visual Studio) for free that used to cost a bundle.

For Web development, Expressions Studio (MS) seems highly regarded, but I don't use it personally. I do most of my web development using PHP and Drupal.

vote-for5vote-against

@missellienc: we still use the 400, IBM can change its name all it wants but it will always be the 400. (The thing is so small now it sits in our rack, well most of it the 2 expansion boxes are bigger then the entire rack)
@rhmurphy: the voices in my head told me to ignore @durkzilla: "not normal people". They told me he is the strange one, and I believe them.

@shrdlu: You are right about html, my 12 year old has a better website then I do.
I have a feeling I will be developing for Android.
Have you written anything in a visual studio? My silliest hurdle was getting over the fact I did not need to write that much code.

@idiotwind13: AHK while a nice little language, if you are looking for name recognition AHK is not it. AHK is like a macro with super powers. FYI I learned RPG, sat down to modify my first program, it was written in C, I had never seen C but it was not that hard to figure out. What I am saying is pick 1. It will be your toughest, then the others will be easier.

vote-for8vote-against

I'm a self-taught programmer, and am currently employed as a Senior Software Engineer despite having less than 10 hours of formal training in any aspect of programming.

If you've got good analytical and problem solving skills, learning to program isn't very difficult at all. It just takes time and practice, and it helps to pick an easy language to start with. For me that was BASIC, but that was in the early 80s. I'm not sure what the good beginner's languages are these days.

vote-for6vote-against

@caffeine_dude: I fully intend to provide an answer, in depth, to what you've just asked (about Visual Studio, and the death of programming, and all sorts of other deep and philosophical stuff).

I've been saying for fifteen minutes that I needed more coffee, but I've reached the point where I'm on the verge of death...

Back in a bit...

{Yes, I lied about the death thing. :-D}

vote-for5vote-against

Tried reading a few books on java but now I am finishing my third college course on just java and I am realizing how much I would have missed.

vote-for5vote-against

@shrdlu: Did you make it to the coffee? @shrdlu:? @shrdlu:?

vote-for4vote-against

@caffeine_dude: Hold yer horses, bub. Shrdlu /= Bueller. Just so you know. ;-}

I was waiting until this question was less visible, so as to be able to answer without random arguments from people I don't know about why I'm wrong. Yeah, I'm cynical. This'll probably be multipart, and since I'm exchanging phone calls with broker in SoCal, it may be interrupted. I'll point out that I'm through when I get there...

I've used MS Visual Studio to create code. I've used other, similar products on multiple platforms to do the same. As a proof of concept, I have done this side by side, timing the creation of a specific piece of code using a studio, and writing it from scratch on my own. In every single case, the code I wrote on my own was more efficient, had far better documentation inline (and as separate documents as well), and was less likely to break in ways expected, or unexpected.

[More]

vote-for5vote-against

@shrdlu: I have a different question for you check here back in a week. (good idea waiting for the question to get a older.
So far what I read is pretty much the same as writing a website from scratch vs wysiwyg. Got to get back 2 wrk.

vote-for4vote-against

@caffeine_dude: [Continued]
This has as much to do with my skill while I worked as it does with those tools, however. Programming, unlike many other skills, does not follow a nice bell curve on competency. There are plenty of good solid serviceable programmers, and there are (forgive the term) superstars. There isn't much between those. If you have someone who falls in that latter category, they can usually do at least the work of ten regular programmers.

Whoa, Nellie. What did I just say? It's true, but here's the caveat. Often, those very same top programmers can spell disaster for a project, because they tend to be uncontrolled, and may or may not have the discipline to document correctly, or test properly, and can significantly impact a schedule. When I worked, we called them cowboys (and yes, I understand that I am putting myself in that class).

[More]

vote-for4vote-against

@caffeine_dude: [Continued]
I always claimed that I could get more and better work by either fencing off the cowboys, or eliminating them entirely. I managed and led groups of programmers for a time, and I dumped more than one who was an outstanding programmer, but couldn't be brought around to the idea that everyone needs to test their code before it gets added in.

{My favorite story about myself from earlier days:}

I had been working on code for positioning satellites for about six weeks. I was the ONLY programmer. The person who was in charge came in early, and was startled to see me. I told him I had been there all night, and then he looked at what I was writing. He asked why I was working on a part he'd thought was finished, and I told him it was because I'd deleted it all, and started over. Yep. I deleted six weeks of work. Mind you, it was a lot easier to recreate than to originate, and I was done in two days. Still...

[More]

vote-for4vote-against

@caffeine_dude: [Continued]
Back on point. Visual programming tools have their place. I think that they allow you to use a large group of people with solid skills, as long as you have people who KNOW HOW THINGS SHOULD WORK checking on the output. I've seen every product on the market put out crap code. You have to have the skill to recognize crap code, and to understand why it's crap. If you have that ability, it's a lot easier to use those tools to do the drudge work, and devote your time to the interesting and hard parts.

I love the hard parts. Any time I've been handed something with an apology, as in, "I know there's not enough time or resources to do this right, but we're desperate," I'm in heaven. I know, that's crazy, but there it is.

Isolating the "cowboy" types: There are some problems that are very difficult, and if they can be carved out, it's nice to hand the impossible to someone who will make it an obsession.

[I'm done, for now anyway.]

vote-for5vote-against

@caffeine_dude: Mentioning me will catch my attention. Working is good. I miss it, now and then.

vote-for3vote-against

@csunwold: Nice link. I especially liked the coda of the online version, "Advice From An Old Programmer".

vote-for4vote-against

my current skill set is Java programmer and my job title is Application Developer, but my bachelors degree is in Criminal Justice. so yes it can be done... i started as a very low wage beginner at a large company with an aggressive beginners' recruiting initiative.
as to how i learned i'd describe it as immersion. mostly on the job training, long long nights of trial and error, a good IDE (Eclipse), but most importantly really helpful coworkers and supervisors in a nurturing environment who took the time to share everything i could pick from their brains
i don't have formal training in the form of a degree or certificate, but i snatch up any and all training provided by my workplace, ask tons of questions, and take good notes
can you get a high level of skill without formal training? IMO yes, if that's what you dedicate yourself to do. if you are living and breathing a programming language for years, your skills should be getting better as long as you keep challenging yourself

vote-for3vote-against

Do you have a punchers chance? well, you're a law student. and from what i understand, learning and practicing law takes a lot of research. that's time that hopefully you're dedicating to the job that will pay you money and be your career -law stuff. people have hobbies like gaming, fitness, etc. if you choose your hobby to be programming, that's a great extra skillset to have. i don't know where you would find the time to reach a high skill level and practice law and not go crazy, but i'm sure people do it
even if you just understand basics about programming, you're already steps ahead of anyone else who never bothered with it. and being computer savvy in life is a must nowadays

vote-for4vote-against

@w00tgurl: I was promoted from a non technical job. I took a test with spacial reasoning like @shrdlu: mentioned above. It has some vocab, and flow charts.
When I learned RPG it was not a friendly environment, I asked the same question asked here, 'what language should I learn'. No answers, I asked again and again, RPG. Ok so what books or learning material... no answer.
I searched for collages teaching RPG and the required book. (ONLY 1 RPG book in 5 schools, so I knew this was the one.) I was not allowed to buy the teacher's edition. (too bad it had the files and results of successful programs.)
With out direction, as I mentioned above, I learned a style that was not used in our shop. My first program was scrapped because it was written in free form. So I had to learn fix format and started over, kind of, the basics were there.

vote-for4vote-against

continued:
@idiotwind13:
Online communities are out there and support newbies for the more popular languages. I would like to caution if you get in good with a hacking group, the government will know. It creeped me out when they let me knew they knew. I quit that group that day, did not even say good bye to my teachers/friends.

vote-for2vote-against

@csunwold: Need a job?

Minimum of 2 years experience in application development in the LAMP (Linux-Apache-MySQL-Python) web environment
Strong experience programming in Python required
Experience with the Python Django framework a plus

vote-for2vote-against

I think it is possible to teach yourself programming.

But the best thing a self-teaching programmer can get for his/herself is a buddy who knows what they are doing who can critique your code. Having a good mentor means you don't have to know Big O notation to know that Quicksort is (almost always) better than Bubblesort; you don't have to know how use NAND gates to build a fast adder to know that division is a particularly inefficient operation; and you don't have to know which side of the EMACS/VI debate to side with to know about how a good IDE will be tremendously useful for debugging.

vote-for3vote-against

@fancyd33 Don't steal our @csunwold - we need him!

Also, I would strongly suggest using PostgreSQL if you are working with Django. The MySQL drivers for Python aren't great.

vote-for5vote-against

@caffeine_dude: Couple of things. First, it seems someone doesn't like much of what I've said (and that's okay with me). If you really want to talk more about this, take it to PM.

http://www.woot.com/forums/AddPost.aspx?ForumID=0&UserID=362224

Interesting bit on Slashdot.

http://yro.slashdot.org/story/12/02/09/1624232/ibm-seeks-patent-on-judging-programmers-by-commits

I haven't read it, but this is a handy dandy way to leave a bookmark to it for me, and it may be interesting to you as well.

vote-for3vote-against

@shrdlu: Thanks for posting the article, it was very entertaining.

One poster hit the nail on the head: "IBM employees get bonuses for submitting patents. Therefore there are always peeps at IBM cooking up some kind of crazy patent so they can get it past the patent board at IBM and get it submitted to USPTO and get their little bonus. The effectiveness of all this is all subjective and marginal. Why do you guys think IBM has the most number of patents."

And this: "If you think these methods of rating programmers are faulty then this patent is good. Nobody will be able to use these faulty metrics (except IBM) because they are patented ;-)"