Hi all,<br>
<br>
I've received a number of good replies to this thread. I want to say thanks to all who've responded and for all the information you've shared. Rather than replying to each individual message, I'm going to make a composite reply to a number of them here, and quote some of them. Whether I quote your message or not, please know that I do appreciate the info and have read them all.<br>
<br>
Let me share a bit about my experience and goals. I've been unemployed for some time due to two prior layoffs, and my goal is to be employable, as a programmer, within a year. Without going into all the details, all my prior jobs were maintenance and support oriented, and I very much want to get into a position to use my creative skills before I die. (Hopefully, that's not anytime soon.) Without going back to school and getting a whole other engineering degree, relearning programming should let me be able to do something creative in a fairly short time.<br>
<br>
At the risk of documenting myself as an old fart, back in the last century, in 1986, I got a Bachelor of Science in Electronics Engineering Technology from DeVry. While there, I learned several programming languages, including Basic, Pascal, and Assembly Language using the standard classroom / textbook / lab scenario.<br>
<br>
In the 1991 timeframe, I was working for Delta Air Lines. I was handed a box of the Clipper database development environment and told to rebuild their existing simulator maintenance tracking system which was running dbase on an old Cromemco mini computer. Oh, and by the way, make the new system multi user, multi computer, and multi building capable. I had never learned Clipper before, and this was quite a challenge. Rather than trying to port the old dbase code, I decided to just recreate the system in Clipper from scratch. I spent weeks interviewing technicians and managers to determine what they needed the new application to do. Then, I went and built it. I knew about structured programming. I knew about problem solving. I knew about flowcharting. But, I didn't know any of the sytax for Clipper. Nor did I know the intricacies of how the database engine worked, nor how to deal with things like file and record locking and race conditions, etc. Starting with nothing but a reference manual, and later finding a local Clipper programming group, I began to make progress. It probably took me 6 months to really be productive with the language, to the point that I could envision almost any algorithm and code it without hours of research. At this time, neither Windows nor Object Oriented Programming had come into vogue yet. The internet resources we know of today didn't exist at that time.<br>
<br>
In 1997, I returned to DeVry as a teacher. In the process of doing that job, I learned just a bit of Delphi and Labview. <br>
<br>
So, I have learned at least 6 languages in my life. Right now, today, I'm not fluent or productive in any of them. If you don't use it, you lose it, as they say.<br>
<br>
I have told people before, and I don't think I'm being arrogant, that, given some time and resources, I can make any computer do anything it's capable of in any language. The algorithm is the key. However, if you throw me in the fire and hand me a language I've never seen before, like Clipper, the process may not necessarily be fast, easy, or cheap. I will say that I learned more in depth programming knowledge on the Delta project than I ever did in school. It WAS somewhat painful though.<br>
<br>
My primary goal now is to get employed in the programming arena. I am concerned about 4 things:<br>
<br>
A) Learning a potentially profitable language<br>
B) Networking with the right people<br>
C) Proving I know what I need to know<br>
D) Getting a job<br>
<br>
Doug hall said in his reply to the thread, "why do you think you need to go to a class?" The short answer is, It's all I've ever known, other than DIY textbooks.<br>
<br>
Now, I'm certainly willing to consider alternatives, if they are affordable and effective. I won't lose any sleep over NOT giving Gwinnett Tech a couple of thousand dollars. The lack of networking with other people is somewhat of a concern. For example, the IT program advisor there suggested I join the student chapter of the Association of Information Technology Professionals, which I did. At this point, I'm approved for the Computer Programming program but have not registered for any classes. However, if I feel there is a better way to do things, I don't have to pursue that avenue.<br>
<br>
Being self motivated to work on the project every day is a concern to my wife, but I think I can get over that and force myself to do the work. It is true that I don't like typing thousands of cryptic commands for hundreds of hours, per se. What I like about programming is the problem solving, and the creativity, and the sense of accomplishment when you complete something.<br>
<br>
To all those who suggested various languages, I appreciate it. >From an intellectual point of view, I would like to learn Java for Android, C++, Ruby, Scala, Spin (used in the multi core Propeller chip from Parallax), and others you guys have mentioned. But, I have to start with SOMETHING, and get reasonably good at it. I already acknowledged that I was focused on Java, and I flipflopped. But, now, I'm pretty focused on C++ for a few reasons:<br>
<br>
A) Positive employment potential<br>
B) If I wanted to go to class, this topic is a readily available course<br>
C) The ability to make stand alone executable programs<br>
D) Pretty good source code portability across various platforms<br>
E) The potential uses related to robotics and embedded systems<br>
<br>
I want to respond to some quotes from the people to replied to the thread. Hopefully, I'm getting all the quotes correct.<br>
<br>
----------------------<br>
<br>
Ed Cashin wrote:<br>
<br>
(lots of good javascript info)<br>
- Ron: I really appreciate this, although I don't think that's the direction I'm going in right now.<br>
<br>
"There's an amazing resource in code academy. ... It's free ..."<br>
- Ron: Sounds pretty cool. Is it available for C++?<br>
<br>
"<a href="http://coderetreat.org/"">http://coderetreat.org/"</a>;<br>
- Ron: Also cool, is that relevant to C++?<br>
<br>
"If you do learn C++, I recommend doing it by reading Stroustrup's _The C++ Progamming Language_."<br>
- Ron: Good idea. I have Stroustrup's Programming Principles and Practice Using C++, which looks like a really good resource. One problem is that none of the Stroustrup books have been updated for the C++11 standard, as far as I know.<br>
<br>
"<a href="http://golang.org/"">http://golang.org/"</a>;<br>
- Ron: I'll have to look into this in the future.<br>
<br>
-------------------------<br>
<br>
Byron Jeff wrote:<br>
<br>
"1. Do you know how to solve problems."<br>
- Ron: I can do that.<br>
<br>
"2. Can you describe in a programming language (non specific) how to tell a computer to solve that same problem."<br>
- Ron: I can do that.<br>
<br>
"3. When given a program and a specified system, can you make an appropriate choice of tool to solve the problem."<br>
- Ron: I can learn to do that.<br>
<br>
"As you can see from the signature below, I'm firmly implanted in the formal educational system you ascribe to participate in for this process. Trust me, from you description below, doing that will most likely frustrate you because you'll be in a classroom full of students who don't have the slightest idea of what they are doing. Since that class will be starting at ground zero, the projects will be small and simplistic. As you've already figured out, all the resources you need to support what you want to do are already available to you online."<br>
- Ron: As mentioned above, I'm willing to consider more effective methods.<br>
<br>
"If you want to be a programmer, then go program..."<br>
- Ron: Subtle point. I want to be an employed programmer.<br>
<br>
--------------------------<br>
<br>
Charles Shapiro wrote:<br>
<br>
"+1 for Byron."<br>
<br>
"Real-world projects and books like Kernighan & Pike's _The_Practice_of_Programming_ are far more useful than classes in specific technologies for starting out."<br>
- Ron: I'll check that out.<br>
<br>
"So, for example, knowing the ins and outs of SubVersion and Git will help a lot more in a real-world environment"<br>
- Ron: I've got to learn Git, SubVersion, C++, AND OOP !! AARG! But, thanks for the tip.<br>
<br>
-------------------------<br>
<br>
Jeff Hubbs wrote:<br>
<br>
"I settled on Python; it appealed to my old-school sensibilities while also giving me new ways to operate."<br>
<br>
Stephen Haywood wrote:<br>
<br>
"I have to second Python. Ruby is nice too ..."<br>
<br>
- Ron: Both also being added to my languages to learn list. <br>
<br>
--------------------------<br>
<br>
Leam Hall wrote:<br>
<br>
"Yeah, what Byron said. With some additional thoughts."<br>
<br>
"1. Check out some of the on-line or IRC communities. Find a good fit. #python excels at this, ##php is hit or miss."<br>
<br>
- Ron: Know any good ones for C++? Also, any local physical groups? I've never used IRC. I've used web chat, news servers long ago, and mailing lists (like this one, of course).<br>
<br>
"3. Once you find a language then work with people to have fun at it, not just code."<br>
- Ron: Agree. That's why a local group would be cool.<br>
<br>
---------------------------<br>
<br>
Byron Jeff wrote:<br>
<br>
"So let me give you some homework, then you tell me what you think when you get it done. Pick three projects that you would personally like to have. Three projects that would be useful for you. Write them. Use a different programming language and development environment for each. Trust me, when you are done, you will have relearned programming, and understand what choices of tools must be made to accomplish the task. And you'll have a portfolio of projects that you can passionately describe to anyone who wants to know about your experience."<br>
<br>
Leam Hall wrote:<br>
<br>
"2. Maybe work through "7 languages in 7 weeks" and see if any of them are fun."<br>
<br>
Doug Hall wrote:<br>
<br>
"You're not getting married, here. Learn MULTIPLE languages. At least enough to know what they're good at doing. Different languages will excel at different problem areas. So, at least a little exposure to several languages will do you a world of good. I recommend going through something like this:<br>
<br>
<<a href="http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X>">http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X></a>;;.<br>
<br>
Over time, you'll probably gravitate toward one or two favorite languages, but stay somewhat open to new languages. "<br>
<br>
- Ron: OK, I get what you all are saying about the benefits of learning multiple languages. As I mentioned above, I've learned (and forgotten) at least 6 in my life. And, I get what Byron is saying about the benefits of doing several projects. However, I'm not convinced that trying to learn 7 languages RIGHT NOW at this very moment in time, with employment in mind, is the best thing to do. I think that would be terribly confusing. Say I try to learn a bit about Java, C++, Ruby, Scala, Python, Go, and PHP (just pulling those out of the air). So, down the road, I get in front of a recruiter and tell him / her that I know a bit about these things. He tells me to prove it and give him the code to calculate his age in minutes and seconds in Scala. Even if I get the algorithm right, I might be quoting syntax from different languages or just pseudocode that isn't any language. (I can do the latter right now.) It seems that it would be more valuable and practical for me to get an in depth understanding of one language (to start) and to be able to tell the recruiter that I can do real world work in it.<br>
<br>
---------------------------<br>
<br>
Doug Hall wrote:<br>
<br>
Oh by the way, why do you think you need to go to a class? The online programs like Code Academy are the best bang for your buck. Also, Github is the new résumé. If you're contributing to some open source projects, there's no better way to show prospective employees your worth.<br>
<br>
- Ron: As mentioned above, it's all I've ever known, but am willing to consider alternatives.<br>
<br>
--------------------------<br>
<br>
So, what you guys seem to be saying is:<br>
<br>
The college courses are not the most effective or affordable route to get to where I need to be.<br>
<br>
and I should:<br>
<br>
1) Do some structured activity like code academy possibly combined with a teach yourself textbook to learn the basics of a language.<br>
2) Build one or more projects of my own to do some actual purpose.<br>
3) Join some online and or local communities.<br>
4) Help out with, and document my activity, regarding some open source projects.<br>
5) Then talk to the recruiters about getting paid to do this stuff.<br>
<br>
As always, thanks for the help.<br>
<br>
Sincerely,<br>
<br>
Ron<br>
<br>
<br>
<br>
--<br>
<br>
Sent from my Android Acer A500 tablet with bluetooth keyboard and K-9 Mail.<br>
Please excuse my potential brevity.<br>
<br>
(To whom it may concern. My email address has changed. Replying to former<br>
messages prior to 03/31/12 with my personal address will go to the wrong<br>
address. Please send all personal correspondence to the new address.)<br>
<br>
(PS - If you email me and don't get a quick response, you might want to<br>
call on the phone. I get about 300 emails per day from alternate energy<br>
mailing lists and such. I don't always see new email messages very quickly.)<br>
<br>
Ron Frazier<br>
770-205-9422 (O) Leave a message.<br>
linuxdude AT <a href="http://techstarship.com">techstarship.com</a><br>