I have to chime in here.  I went to college for programming (Computer Science at Northwest Missouri State Univ).  I already knew the fundamentals of programming before I went, so I wasn't starting from scratch.   Our learning language was called Modula-2, which is a very close relative to Pascal.  All the data structures classes were in it.  We also had many other languages we learned, and I got a good, broad base of languages.  So, I feel that knowing the concepts are most important, and each language's syntax is almost secondary.  I was able to get some good real-world experience doing Y2k updates in COBOL for an insurance company.  I had never done COBOL before, and they were shocked when they found out that I hadn't ever touched it before, because I had absolutely no problems picking it up on-the-fly, and fixing stuff with very little hand-holding.  <br>
<br>I firmly believe that the syntax of each language is not so important, but understanding the concepts of the different language families is.<br><br>Now, let me tell you one huge regret I have from my college days, and that was not taking the (elective) class on Object Oriented programming.  I think it was Java, but this was 1994, so I don't remember which language it was.  Consequently, my brain only thinks in procedural programming methodologies, and I'm too set in my ways now to learn to think in an object-oriented way.  <br>
<br>So, my suggestion is this.  Learn C (or a C based language).  Learning C is like learning Latin.  Many other (and popular) languages are based on that.   Also, maybe at the same time, but at least right after learning C - is to learn a pure object oriented language, like Java for example.   Most programming jobs are in OO languages.  Once you have a good, fundamental understanding, try and get some real-world experience in any way you can.  volunteer, offer to work for minimum wage, whatever you can do to get some real work on your resume.  Then try and step-up from there.  I have found that its easier to climb the wage-ladder by finding a completely new job at a different company, but that's just me.  I've done pretty well for not completing that degree, but it sure would have been easier if I had taken that OO class, and completed the degree.<br>
<br clear="all">Tim Champion<br><a href="mailto:timchampion@gmail.com">timchampion@gmail.com</a><br>
<br><br><div class="gmail_quote">On Tue, Apr 12, 2011 at 11:04 AM, Josh More <span dir="ltr"><<a href="mailto:MoreJ@alliancetechnologies.net">MoreJ@alliancetechnologies.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">





<div>
<div style="direction: ltr; font-family: Verdana; color: rgb(0, 0, 0); font-size: 13px;">
<div>My advice is pretty simple:<br>
<br>
1) Learn one language.<br>
2) Learn it well.<br>
3) Avoid learning any other language until #1 and #2 are handled.*<br>
<br>
My one-language-to-rule-them-all was Perl.  It informs everything I do because I learned it really really well.  It makes it easier to learn other languages because I have a firm grounding in Perl.  You can do the same with Python, Java, Ruby, etc.<br>

<br>
The hardest part is #3.  I can't tell you how many truly crappy programmers I've met that know over 20 languages, but don't know any of them very well at all.  Being able to code crap in any language will get you hired, but won't let you advance very far.<br>

<br>
>From an IDE perspective, I recommend just using a text editor for your first language.  IDEs are good for fast development, but they are good because they abstract away some of the fundamental aspects of how the language actually works.  Until you know a language
 well (#2), an IDE will hinder your learning, not help it.<br>
<br>
<br>
<br>
<br>
<br>
<div style="font-family: Tahoma; font-size: 13px;">
<div style="font-family: Tahoma; font-size: 13px;">
<div style="font-family: Tahoma; font-size: 13px;">
<div style="font-family: Tahoma; font-size: 13px;">
<div style="font-family: Verdana; font-size: 13px;">
<div style="font-size: 13px;">
<div style="font-size: 13px;">
<div style="font-size: 13px;">
<div style="font-size: 13px;"><font size="3"><span style="font-weight: bold;">Josh More</span></font> | Senior Security Consultant - CISSP, GIAC-GSLC Gold, GIAC-GCIH<br>
<span style="font-weight: bold;">Alliance Technologies</span> | <a href="http://www.AllianceTechnologies.net" style="color: rgb(255, 0, 0);" target="_blank">
www.AllianceTechnologies.net</a><br>
400 Locust St., Suite 840 | Des Moines, IA 50309<br>
<a href="tel:515.245.7701" value="+15152457701" target="_blank">515.245.7701</a> | <a href="tel:888.387.5670" value="+18883875670" target="_blank">888.387.5670</a> x7701<br>
<br>
Blog: Don't just blame the bad guys, it's your fault too<br>
<a href="http://www.alliancetechnologies.net/blogs/morej" style="color: rgb(255, 0, 0);" target="_blank">http://www.alliancetechnologies.net/blogs/morej</a><br>
<br>
How are we doing? Let us know here:<br>
<a href="http://www.alliancetechnologies.net/forms/alliance-technologies-feedback-survey" target="_blank">http://www.alliancetechnologies.net/forms/alliance-technologies-feedback-survey</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="font-family: Times New Roman; color: rgb(0, 0, 0); font-size: 16px;">
<hr>
<div style="direction: ltr;"><font face="Tahoma" size="2" color="#000000"><b>From:</b> <a href="mailto:cialug-bounces@cialug.org" target="_blank">cialug-bounces@cialug.org</a> [<a href="mailto:cialug-bounces@cialug.org" target="_blank">cialug-bounces@cialug.org</a>] on behalf of Matthew Nuzum [<a href="mailto:newz@bearfruit.org" target="_blank">newz@bearfruit.org</a>]<br>

<b>Sent:</b> Tuesday, April 12, 2011 09:48<br>
<b>To:</b> Central Iowa Linux Users Group<br>
<b>Subject:</b> Re: [Cialug] Hello and can I get some recommendations<br>
</font><br>
</div><div><div></div><div class="h5">
<div></div>
<div>
<div class="gmail_quote">On Mon, Apr 11, 2011 at 10:18 PM, Eric Junker <span dir="ltr">
<<a href="mailto:eric@eric.nu" target="_blank">eric@eric.nu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div>As much as I love Python, Ruby and PHP I would have to say that that vast majority of programming jobs are going to be in Java or .NET. So if your goal is to be able to easily find a job you may want to consider Java or .NET. I honestly haven't
 seen that many Python or Ruby open positions, especially in Iowa.</div>
<font color="#888888"><br>
</font></blockquote>
</div>
<div><br>
</div>
A problem with this argument for Java and .Net is that many of these jobs require someone with an undergraduate degree in computer science. The nice thing about the open source languages is that freelance work abounds. Please correct me if I'm wrong.
<div><br>
</div>
<div>C# is an awesome language. Not my first choice for Linux work, but a great language to develop in. Also, the Visual Studio Express environment is an excellent tool.</div>
<div><br>
</div>
<div>However, I think learning C# and Java have a higher barrier to entry than the other three mentioned. The reason is because you have to understand the data types and you also must use object oriented principals right off the bat. Both are good things to
 learn but I think the procedural style of programming is easier to grasp at first. Similarly, I wouldn't teach someone TDD on their first day writing a program, no matter how awesome it would be for a person to develop that as a habit early on. </div>

<div><br>
</div>
<div>I think people learn better when it's fun and producing working code and seeing your ideas come to shape is one of the most fun things about programming.</div>
<div><br>
</div>
<div>On that same note, to respond to j.bengtson, an IDE is one more thing to learn. The Python console, irb or <a href="http://tryruby.org/" target="_blank">http://tryruby.org/</a> and firebug are awesome tools to making writing code simpler. I've never seen
 a _simple_ ide and one of the chief principles of making software easier to use is to reduce the interface as much as possible. Eclipse is very likely one of the worst tools I've ever used in the context of "pleasant and inviting user interfaces."</div>

<div><br>
</div>
<div>And, to open one more can of flames, I don't suggest PHP any more because the amount of bad documentation on the web and in print is astounding. You will very likely have to unlearn bad habits in order to write code that is not trivially hacked. You can
 write good php apps but, like C, one of PHP's "features" is that it is happy to give programmers the ability to resoundingly shoot themselves in the foot and it takes careful effort to avoid doing so. It's just not as fun learning when there's warning labels
 attached to everything. The way to get around this is to start out with a PHP framework that has a good track record for taking security seriously. (I suggest Wordpress for that)</div>
<div><br>
-- <br>
<div>Matthew Nuzum<br>
newz2000 on freenode, skype, linkedin and twitter<br>
<br>
"My aim has always been to get to the truth rather than to support some
<div>position. And in criticizing others, I have always tried to understand what their</div>
<div>position was and not to misrepresent it. I have never been interested in cheap</div>
<div>victories." -Ronald Coase </div>
</div>
<br>
</div>
</div>
</div></div></div>
</div>
</div>

<br>_______________________________________________<br>
Cialug mailing list<br>
<a href="mailto:Cialug@cialug.org">Cialug@cialug.org</a><br>
<a href="http://cialug.org/mailman/listinfo/cialug" target="_blank">http://cialug.org/mailman/listinfo/cialug</a><br>
<br></blockquote></div><br>