FacebookTwitter
Hatrack River Forum   
my profile login | search | faq | forum home

  next oldest topic   next newest topic
» Hatrack River Forum » Active Forums » Books, Films, Food and Culture » Philosopher Considering Career in Computers - Advice Needed

   
Author Topic: Philosopher Considering Career in Computers - Advice Needed
Shanna
Member
Member # 7900

 - posted      Profile for Shanna   Email Shanna         Edit/Delete Post 
Assuming I finish my thesis on the evolution of Satan anytime soon, I will be graduating in December with a BA in Liberal Arts (Humanities) with a minor in Philosophy. What follows is a bit of a story but I think its important to set up the motivations for what could be a really big decision.

Anyway to start, I was supposed to have graduated in May but procrastinated partly because I had no idea what to do next. Pursuing a Masters or PhD in Philosophy only slightly interested me and I wisely decided that a "passing" interest would not get me through several more years of rigorous study. And careers in publishing or journalism or any other jobs in the humanities didn't feel right either.

A few months ago on a whim while wandering Barnes and Noble and successfully ignoring my unfinished thesis at home, I stumbled across a C++ Programming book highly discounted on a clearance table. I paid for it in loose change and brought it home. Sadly, it got buried underneath laundry and research notes before I could do more than flip through it.

A few weeks ago, I fell into a random conversation with a guy who was dating a girl who was friends with a guy who was crashing on my boyfriend's roommate's couch. The girlfriend had introduced the guy as her "techno-inspired man" to which my boyfriend replied, "my girlfriend is a bit of a techy nerd too." And this is funny because I'm really not. I love to play with computers which is true and I'm the one my friends and family run to with computer problems. But the problems are usually easy to figure out with alittle tinkering or at most, some research online. Anyway, so we're talking about the differences between "hacking" and "cracking" and he becomes completely convinced that I have the right kind of mind for "hacking" and programming. Just starts going on about all this undiscovered potential. I don't think much off it except to be happy that a stanger would think so kindly of me.

But this all came to a head when I took some career tests online last week. I was just hoping for some job inspiration now that I've finally committed to finishing my thesis and getting my diploma in December. The results were interesting and while I agree with them to an extent and my boyfriend thinks they are completely on the nose, I was still really surprised. Key ideas were: creative and methodical, uses details to get to the more interesting big picture, shows an aptitude for machinery and equipment, and applies math and experimentation well.

The last part is funny because I do NOT enjoy science and my experiences with math have been shaky. I did well with most algebra, but was a disaster in geometry because I can not think in a third dimension (which I rediscovered last weekend when repeatedly failed horribly to master a Rubiks Cube even after multiple instruction.) But I'm still the person everyone asks when they need a quick math answer and a calculator isn't around. I wasn't too interested in the actual math though I found I liked its methods and challenge when I took a year of physics in college. I even taught myself basic Trignometry that year when the teacher let me into the class without any of the math pre-requisites.

It hit me pretty hard a few days ago that I'm a puzzle person. Used to spend hours locked in my room as a kid doing jigsaw puzzles and I play sudoku on break at work. I like the trial and error, I like the repeated experimentation, I like the feeling of finding the solution. I think its probably a big part of why I latched onto philosophy in college. The debates were just like big puzzles to me and only became worse with the courses in Logic and learning religious proofs. It was all that I loved about math but with more interesting solutions and fewer numbers.

So last night I plugged "methodical" and "creative" into a google search and came up a link to a book of "Careers for Puzzle-Solvers" and other websites which list computer programmers, program testers, and game designers.

The light in my head went off and it all fell together. I could do this. This could be my job.

It just feels right. But at the same time, I'm thinking, "I don't know squat about computer programming." I took a Web Design class back in high school and did okay, though I was much better at correcting code and adding details than I was from designing a website from the ground up (I'm just not a visual-artsy person.) But give me a hand-drawn design and I could figure it out. But that was years ago and I didn't go to college for computers. I read Shakespeare instead.

It seems like every kid younger than me knows more about computers. I don't know if I can catch up. I want to start learning in my spare time and the hacker guy gave me a good guide with link to different programming language tutorials, but its just SO MUCH INFO! Its overwhelming.

So this finally brings me to my questions. I think I'd do better in a classroom to get me started, so would it be worth it to consider going back to school for computer programming? Or is it too late? (its probably a mark of my youth that at 22 years old, I feel like its too late.) What courses should I look for? What should I look for in a good computer science department? I'm not looking to move across the country but there are a few schools to choose from here and I don't want to pick one if its not going to be worth it.

For those in these kind of career fields, what specific careers should I look into? I feel so ignorant because I just don't know what's out there and I don't know what would be good for me. From what you read, do you think I could cut it?

Part of me feels a real calling to do this but I feel like an infant surrounded by Olympic marathon runners and I'm not even crawling yet!

I'm open to any advice, guidance, encouragement or discouragement.

Posts: 1733 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
MightyCow
Member
Member # 9253

 - posted      Profile for MightyCow           Edit/Delete Post 
As someone who has worked in both the graphic/web design aspects and the more coding heavy areas, the programmers always seemed to make more than the artists where I've worked. If income is important, get into coding.

School can be somewhat helpful, but knowing your stuff is more important than where you learned it. I've got friends who have Computer Science degrees, and others who are entirely self taught both in the same levels of work. If you can write the code, nobody cares where you learned it.

I've been out of the business for a while now, so I can't tell you which languages are the most important to learn now. One trick is that a hot language 6 years ago might be hard to find work in now. In a general sense, the more you know the better, and the better a programmer you are in general, regardless of language, the better.

Find out what is needed in your area, and work on learning one of those languages. Practice a lot, read a lot of tutorials, get some good books - The "In a Nutshell" books by O'Reilly are usually considered very good in any category. Although you may be able to find more specialized books within each language, they're a great place to get started.

Spend a lot of time working on a modern, well-used language and see if you actually enjoy programming. Then get yourself into a job and get some hands on experience so you actually see how it works in production.

Posts: 3950 | Registered: Mar 2006  |  IP: Logged | Report this post to a Moderator
Bekenn
Member
Member # 6602

 - posted      Profile for Bekenn   Email Bekenn         Edit/Delete Post 
I guess I'll crawl out of the woodwork to take a stab at this one.

I'll start by stating my credentials (hopefully, that'll give you the illusion that I know what I'm talking about): I've been working professionally as a games programmer in southern California for the past three or four years (depending on how you count the contracts). I have a bachelor's degree in computer science, as well as a fair amount of pre-college programming experience.

You're looking for someone here to tell you that you'd be good at this, or that you'd be average or terrible at this. That you'd love it. That you'd hate it. I don't really think anyone here can do that for you. But there's a way to find out for yourself.

quote:
Originally posted by Shanna:
I love to play with computers which is true and I'm the one my friends and family run to with computer problems. But the problems are usually easy to figure out with a little tinkering or at most, some research online.

I find that the willingness to tinker is what separates the computer-literate from the computer-illiterate. Solving these problems is easy for you because you don't get scared at the prospect of changing something.

They do. Somewhere, deep down, they believe that computers are powered by elves, and they don't want to risk making the elves unhappy.

quote:
Originally posted by Shanna:
I do NOT enjoy science and my experiences with math have been shaky.

quote:
Originally posted by Shanna:
I wasn't too interested in the actual math though I found I liked its methods and challenge when I took a year of physics in college. I even taught myself basic Trigonometry that year when the teacher let me into the class without any of the math prerequisites.

quote:
Originally posted by Shanna:
Used to spend hours locked in my room as a kid doing jigsaw puzzles and I play sudoku on break at work. I like the trial and error, I like the repeated experimentation, I like the feeling of finding the solution.

I think you just contradicted yourself there. If you like trial and error and repeated experimentation, and you like finding solutions -- well, you like science. If you like the methods and challenges of mathematics, then you like mathematics. It's just that school kept you from realizing it before now.

quote:
Originally posted by Shanna:
It just feels right. But at the same time, I'm thinking, "I don't know squat about computer programming."

quote:
Originally posted by Shanna:
I want to start learning in my spare time and the hacker guy gave me a good guide with link to different programming language tutorials, but its just SO MUCH INFO! Its overwhelming.

This is where I think I might be able to help.

First, it's encouraging that this "feels right" to you. Learning to program is much like learning any other skill: It requires a certain amount of dedication (enthusiasm and patience are very helpful here). If you feel like this is something you might want to do, so much the better.

Second, you're absolutely right. There's a lot of info out there, and it is overwhelming. Daunting, even, to look at it. So don't look at it. Look at part of it. Nobody expects anyone to be an expert in all fields. I know next to nothing about AI development or database programming, and the list of languages I don't know is far longer than the list of languages I do know, but I still get a paycheck.

The very best thing you can do right now is to simply start coding.

The first step is get a development environment. There's some debate over which languages are best suited for beginners, but you have a C++ book, so let's go with that. Microsoft's Visual Studio is actually very good, and there's a free version of Visual C++ available here. (Ignore Visual Studio 2008; it's still in beta.) Be sure to grab the service pack (and, if you're running Vista, the update for Vista). Ignore the Platform SDK for now; you can install it if you like, but you're probably not going to be using it for some time. (Trust me on this one -- nothing will scare you away from programming faster than trying to do native Windows programming right off the bat.)

(Alternatively, if you're using a Mac, grab XCode off the OS X install CD, which will enable you to do C++ development. I have almost no experience with XCode, so this is the last I'll mention it.)

Once you have your development environment set up, go grab your book and type in the inevitable "Hello, World" app in chapter 2. If it comes with a CD full of source code, ignore the CD; you'll find that the concepts stick better when you have to type it.

Once you have "Hello, World" working, try tinkering with it a little. At this point, you won't be able to do much more than change the text, but at least it's a start.

quote:
Originally posted by Shanna:
I think I'd do better in a classroom to get me started, so would it be worth it to consider going back to school for computer programming? Or is it too late?

quote:
Originally posted by Shanna:
It seems like every kid younger than me knows more about computers. I don't know if I can catch up.

I know it feels like you have a long, long way to go. That's because you do, in fact, have a long, long way to go. But think back on your philosophy degree: you didn't start with your senior thesis.

I would recommend holding off on the decision to go back to school for this until such time as you know that this is what you want to do. Until then, spend your time tinkering. Read through your C++ book. Go through some online tutorials. Once you have the syntax of the language down, just play around with it.

One resource that I think you'll find particularly useful is Marshall Cline's C++ FAQ-Lite. In particular, take a look now at sections 6.7 and 28.

quote:
Originally posted by Shanna:
What courses should I look for? What should I look for in a good computer science department?

A good computer science department is made of people with industry experience. People who have never shipped product do not make good teachers. If the department is staffed by the right people, then you will have no need to worry about the specifics of the course offerings.

quote:
Originally posted by Shanna:
For those in these kind of career fields, what specific careers should I look into?

I don't think I can answer that one for you. For me, it's game development; that's what drew me to the field in the first place. For you, who knows? There is a world of possibilities out there.

Lastly:

The most important advice I can give is: Don't let programming scare you. Don't let it intimidate you. When you run into problems you can't figure out, always remember that others have walked the same road, and nobody does it without help. Chances are, a Google search will solve your problem. If not, ask questions. There are many places online where coders gather to help each other. You'll even find the occasional thread here.

If you keep it up, you'll come to understand more and more of how this stuff works. If you take pleasure in the moment of revelation, if you enjoy seeing the stuff you build work, then this is the right area for you.

The elves are actually pretty nice, once you get to know them.

Posts: 293 | Registered: Jun 2004  |  IP: Logged | Report this post to a Moderator
Teshi
Member
Member # 5024

 - posted      Profile for Teshi   Email Teshi         Edit/Delete Post 
quote:
They do. Somewhere, deep down, they believe that computers are powered by elves, and they don't want to risk making the elves unhappy.
This is the truest thing ever. People are so clueless about computers because they are unwilling to investigate or try to solve problems because the elves are just so complicated and mysterious.
Posts: 8473 | Registered: Apr 2003  |  IP: Logged | Report this post to a Moderator
Xavier
Member
Member # 405

 - posted      Profile for Xavier   Email Xavier         Edit/Delete Post 
I would suggest Java as the language to learn on. I don't want to start a big old debate, but for both ease of learning and career potential, I think Java will suit you way better.

Niki (Valentine014) has a brother who is considering changing his major to computer science (or at least was last I'd heard) and my advice to him was to do some programming. If you find yourself programming for fun, then perhaps it would be a good career choice. I personally used to do a lot of programming for fun, although working as a software engineer has put an end to that. I still enjoy programming, but I don't want to go home and do it after doing it all day at work.

Posts: 5656 | Registered: Oct 1999  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Java is a very employable, relatively straightforward (in comparison to C++, which has more gotchas) language.

Personally, I would suggest Python (or even Ruby) as an excellent language to start out programming in, and then learn Java as a second language (you'll want to learn several anyways). If you're willing to move, there's a lot of hiring going on in Python right now, and probably will be for at least the next couple years. There's more hiring going on in Java, but a lot of that hiring comes with an 'employee beware' sign (not all, by any means).

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Bekenn
Member
Member # 6602

 - posted      Profile for Bekenn   Email Bekenn         Edit/Delete Post 
quote:
Originally posted by Xavier:
I would suggest Java as the language to learn on.

quote:
Originally posted by fugu13:
Personally, I would suggest Python (or even Ruby) as an excellent language to start out programming in, and then learn Java as a second language (you'll want to learn several anyways).

Whoa, hold on there, guys. Let's not overload on language suggestions just yet; I think this is exactly the conversation that's going to induce the most fear in a potential new coder.

Think about how these suggestions look. Right now, all we've presented is a list of languages, without any information at all on what makes them different or why they should be considered. If we're going to present a list of languages, let's at least talk about the qualities each language presents. What is it about the language that makes it a good language for beginning developers?

Consider not just the language itself, but also the language's ecosystem. For instance, let's talk about what free development environments exist for the language, as well as good free online resources for help when you get stuck.

Posts: 293 | Registered: Jun 2004  |  IP: Logged | Report this post to a Moderator
MattP
Member
Member # 10495

 - posted      Profile for MattP   Email MattP         Edit/Delete Post 
If you're going to take classes, you may not have much choice about what language you start with.

If you are going to teach yourself, check out what people are hiring for in your area. Chances are Java will be the most in demand, but there's a fair amount of work around C++ as well. There's also work in Microsoft-only shops with C# or VB.NET. I haven't seen a lot of jobs where the primary aptitude is Python or Ruby, but there are some out there.

Posts: 3275 | Registered: May 2007  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
All of the languages suggested have been fairly major languages with good free IDEs available (at the very least as good Eclipse plugins). All have strong development communities with excellent online resources. Its not like I'm recommending she start with APL [Wink] .

I agree we should talk more about what the different languages are like, but I don't see anything wrong with throwing out suggestions, either. After all, you didn't spend any time explaining anything about C++ before saying that's how she should get started, so it made sense for us to point out that's not the only route out there [Smile] .

In particular, her interests might well not even make learning C++ (at least for a while) sensible, as is increasingly true for many areas programming is applied.

Shanna:

There are programming jobs doing almost anything you can imagine with computers. Some of the more major 'categories' include 'web programming' (which includes a lot more than just stuff that shows up on websites; all sorts of applications that use the internet to exchange data are commonly grouped here), 'client application programming' (the normal sorts of computer programming), 'game programming', and 'data processing/scientific computing/high performance computing', but there are many more out there.

What sorts of things about computers and programming particularly interest you?

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Shanna
Member
Member # 7900

 - posted      Profile for Shanna   Email Shanna         Edit/Delete Post 
Thank you so much, everyone! All the suggestions and comments have been great. Keep them coming! (And I've never understood the fear of elves. I'm printed out directions for other people with computer problems and they are just completely shocked to think that they can do anything as simple as "change ___ setting" or do some fiddling with their modem. Its not like the tech police will come busting down their door for messing with the Holy Program Settings.)

As for languages, my hacker buddy's guide recommended Python for beginners. But Java is perhaps the language I've heard most about. And with C++, I bought the book on a cheap whim so I'm not devoted to learning it right this second.

What really is the difference between all the languages? Are they used for different functions or type of programming? I was kind of curious why one hadn't evolved to be the industry standard.

EDIT: To comment on fugu's post...I would probably eliminate game programming because while I like the creative aspect of it, I'm not really a gamer so I probably wouldn't bring much to the table there. I think I'd be most interested in applications and software as that's what I spend most of my time playing with on my computer. Plus, I like the idea of running a website for a company. Being the person who translates everything into an online medium.

[ September 10, 2007, 05:52 PM: Message edited by: Shanna ]

Posts: 1733 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
While all these languages can theoretically accomplish the same things (all being Turing complete), they are expressively different (and that's before we get into performance considerations and the like).

To make an analogy, it can be proved (and is important!) that the various fields of mathematics are equivalent. Yet, mathematicians still work in all the different fields, because what is easy and sensible changes by how you approach the problem. The same is true, and will always be true, for programming.

There are several 'families' of programming languages/programming styles.

Most common is imperative. An imperative program is a series of specific instructions -- do this, then do this, then do this, and usually involves repeatedly changing variables. Chunks of functionality in imperative programs can have all sorts of 'side effects', such that with the same input they can have different effects (and even different output). This tends to line up well with how people think, especially with larger program structure.

The second most common is functional. In a functional program, it is not the order of operations that is specified, but which functions need to applied to the results of which other functions and the like. 'Variables' are typically constant, just symbols that represent chunks of data, not entities in their own right. Chunks of functionality in functional programs are generally true functions -- given the same input, the same output is received. This lines up well with certain sorts of processes (particularly mathematical ones), but has a number of cognitive mismatches with how people generally think.

Logical programming involves declaring what the result should look like (in a formal, sufficiently specific manner), and then the computer is responsible for coming up with the method to figure out what it is.

There are more, but those are the three biggest, and only the first two usually come up at all.

Most programming languages do not fit cleanly into one of these categories. Modern best practices tend to favor an overall imperative style, but with many functional elements where that is a sensible approach.

Also, languages fall into different 'levels'. All the languages we have mentioned are high level languages -- they're nothing like assembly code (which directs the computer fairly exactly in how to manipulate its internals). Some are higher level than others, though. C++ is lower level than Java is lower level than Python and Ruby.

C++ and Java are languages that are compiled, then run, while Python and Ruby typically are compiled and run in one go (earning them the name 'scripting language', though that's no longer very accurate).

C++ requires the programmer to perform memory management (or use a garbage collection library, though that can be a little cumbersome) -- this means that the programmer must delete the things he has created when it is time. Doing so incorrectly is the most common cause of security holes in programs.

Java, Python, and Ruby use garbage collectors, which automatically collect things that will no longer be used, periodically.

All four of the languages mentioned are strongly typed (you can't play fast and loose with what data you're looking at), but C++ and Java are statically typed, while Python and Ruby are dynamically typed. Statically typed languages do a lot of checking when they are compiled, but typically require the programmer to specify more about the types (except in strongly functional languages, which can infer the types), and dynamically typed languages

You are going to want to learn more than one language. My favorite 'pair' of languages for new programmers is Python and Java, starting with Python. I feel the expressiveness of Python (Ruby and Python are very expressive languages; Java and C++ are not, though C++ can be made fairly expressive given a good library for the domain in question )is a good way of starting, and the straightforwardness and static typing of Java is a good compliment, particularly given the excellent Jython version of Python that can be used to interact with Java from Python. It is also a pair of languages commonly associated in industry (Google's big three languages are Java, Python, and C++).

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
MattP
Member
Member # 10495

 - posted      Profile for MattP   Email MattP         Edit/Delete Post 
Those are the big three where I work too. C++ for most legacy stuff, Java for most new stuff, and Python for the "lightweight" stuff and public APIs.

If you think web programming is where you'd like to go, PHP might be useful too. I wouldn't suggest it as the best language for learning general programming skills, but there are a lot of web developer jobs where PHP knowledge is a must.

Posts: 3275 | Registered: May 2007  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Yeah. Bleh. My opinion is that if your're getting into programming, avoid PHP and the PHP jobs. They tend to attract the worst sort of "we can get it done cheaper" thinking, and PHP's not so nice a language.

I forgot one (somewhat important) categorization of programming language.

Object Oriented Programming is a way of organizing code (typically, but not exclusively, in imperative languages) into 'objects' where the data to be operated on is associated with common chunks of functionality to use on that data, and furthermore 'encapsulates' that data so that access to it is done through the object's code, not directly. This is most commonly done using 'classes' that describe how a type of object works, which are then 'instantiated' into object.

All of the languages mentioned above have built in support for Object Oriented Programming (OOP). C++ pioneered modern OOP, Java made strict object orientation big, Python brought complete, flexible object orientation to 'scripting languages', and Ruby . . . well, Ruby likes to think it does OOP better than anyone else [Wink] (I disagree).

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
MattP
Member
Member # 10495

 - posted      Profile for MattP   Email MattP         Edit/Delete Post 
quote:
Yeah. Bleh. My opinion is that if your're getting into programming, avoid PHP and the PHP jobs. They tend to attract the worst sort of "we can get it done cheaper" thinking, and PHP's not so nice a language.
Well sure, but I'd rather do PHP than flip burgers. [Smile]
Posts: 3275 | Registered: May 2007  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
True enough.

Btw, while I've kept mentioning Ruby because I brought it up, and it has a good user community and high usage at a few companies, Ruby's job market penetration is not even near the level of Python's, which is the lowest of the other three.

If you get into Python, you should attend PyCon 2008 (in late February or early March, I forget which) in Chicago. Its a community-run conference (very cheap, with discounts for students, and monetary assistance for those who can't afford to come otherwise and can make a decent case for going -- being new to the language and wanting to get more involved in the community is an excellent case), with lots of geeky, fun people (including more than a few with philosophy backgrounds) from around the world.

Many major companies using Python sponsor and attend, including Google and Microsoft, and there's always a lot of hiring (even if you aren't looking for a job at that point, its a great way to make connections). Every but one company who sponsored the conference this year was looking to hire a lot of Python programmers (not just one or two).

Plus, its just a lot of fun. There's always been a board game night, some showings of Monty Python (the language is named after the group, after all), and presentations on things like solving a Rubik's cube behind your back. There are tutorials the day before the talks start, and one of the tutorials is always python for beginners. Many of the talks are fine for beginners, and might have some topics of interest ("Python used for Computational Neuroscience", "Python for students of the modern world", "Weaving together Women and IT", and lots of other stuff in addition to the more standard programming fare).

The One Laptop Per Child project was a big presence last year (the thing runs mostly on Python, after all), and probably will be again this year.

Whatever language you go with, I strongly suggest getting involved in the open source community related to it. Work on open source projects is a good way to gain experience, have fun, and gain a leg up in the application process.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
TomDavidson
Member
Member # 124

 - posted      Profile for TomDavidson   Email TomDavidson         Edit/Delete Post 
As a .NET programmer, I'm always so amused by these conversations. [Smile]
Posts: 37449 | Registered: May 1999  |  IP: Logged | Report this post to a Moderator
MattP
Member
Member # 10495

 - posted      Profile for MattP   Email MattP         Edit/Delete Post 
How so?
Posts: 3275 | Registered: May 2007  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Given the great similarities of C# to Java (I think the C# language is slightly superior overall, the built in libraries are sometimes better and sometimes worse, and the available libraries are, unsurprisingly due to length of time, considerably worse), and that Python, Ruby, and even C++ (bleh, managed C++) can be run on .NET, this discussion mostly works whether or not she was going to work on .NET.

Though I don't know why she'd focus as much on that, when the job market is much weaker than either Java or C++, and not much stronger than that for Python (which I tend to agree isn't enough of a language for a new programmer to go job hunting with, which is why I recommend also Java, but when a single language has the same order of jobshare as an entire platform . . .)

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Bekenn
Member
Member # 6602

 - posted      Profile for Bekenn   Email Bekenn         Edit/Delete Post 
I'm gonna second pretty much everything fugu's said here, including the language recommendations. Nice run-down, fugu!

I do have some questions, though.

Which IDE would you recommend for Python? IDLE's not really a development environment, though it can be used with varying amounts of pain. Wing's good, but it costs money, and I'd like to avoid making Shanna pay anything until she's got a decently good idea that this thing's gonna stick. When I worked in Python on a semi-recent project, I used notepad++, but that's just a fancy text editor with some syntax highlighting; not really ideal. I don't think I ever got around to trying Eclipse; that might be the way to go.

What about Java development? I haven't tried NetBeans recently, mainly because it was quite bad the last time I did try it. These days, I just edit my code in Visual Studio and compile from the command line, but that's not really newcomer-friendly.

I really do think that the tools may be the biggest barrier-to-entry. Maybe the best way to go would be C#, since Visual C# really is an extremely good development environment (and free, with the Express Edition).

Posts: 293 | Registered: Jun 2004  |  IP: Logged | Report this post to a Moderator
MattP
Member
Member # 10495

 - posted      Profile for MattP   Email MattP         Edit/Delete Post 
There's a decent plugin for Eclipse, but to be honest I've used Notepad++ mostly.

For Java stuff I've used Eclipse almost exclusively, but I've heard really good things about IntelliJ Idea. The guys that I know who have used both think IntelliJ Idea is superior to Eclipse.

Posts: 3275 | Registered: May 2007  |  IP: Logged | Report this post to a Moderator
rivka
Member
Member # 4859

 - posted      Profile for rivka   Email rivka         Edit/Delete Post 
quote:
Originally posted by Shanna:
And I've never understood the fear of elves. I'm printed out directions for other people with computer problems and they are just completely shocked to think that they can do anything as simple as "change ___ setting" or do some fiddling with their modem. Its not like the tech police will come busting down their door for messing with the Holy Program Settings.

I can totally relate. [Big Grin]
Posts: 32919 | Registered: Mar 2003  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
There are good paid IDEs for Python, and I'm a fan of Wingware's (though I don't use it) because they give away developer licenses to everyone who sprints (on any sprint) at Pycon. Its a great contribution to the dev community.

For free stuff, though, Pydev and the Pydev extensions for Eclipse are fine. The Pydev extensions are nagware, but not very annoying nagware, but if that annoys you, Pydev provides all the essentials (code completion, syntax highlighting, syntax analysis, refactoring, debugging, code folding, pylint, et cetera), so you can just leave out the extensions.

I use Pydev when I'm working on code integrated with our java framework for scientific algorithms, but a lot of the Python I write is small scripts, so I tend to use subethaedit or textwrangler (nice, free text editors for OS X).

Eclipse++ for Java. Some of the other IDEs have a few legs up here and there, but Eclipse has a far larger advantage: the wealth of plugins (and none of the other IDEs totally trounces Eclipse).

Eclipse (especially with appropriate extensions) >> Visual Studio, especially Visual Studio Express Edition (which cannot load what plugins there are for VS). And while tools matter, if the objective is to learn and to make money, the tools available should not be the overriding characteristic. Of course, I think even when considering tools Eclipse would come out on top, due to how powerful it gets when enhanced by plugins.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
theCrowsWife
Member
Member # 8302

 - posted      Profile for theCrowsWife   Email theCrowsWife         Edit/Delete Post 
Would someone mind enumerating the advantages of using a development environment instead of just a regular text editor? In college I always used vi or gvim (depending on which computer I was using) and the command line. What makes an IDE so much better?

--Mel

Posts: 1269 | Registered: Jun 2005  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Refactoring support and better debugging support. I can perform many types of large refactorings perfectly by selecting some code, making a few choices, and clicking a button. Even just the ability to univerally rename a variable (and only that variable, not anything else with the same string as part of it, or even different variables with the same name) is huge, and the refactoring support goes far beyond that.

edit: that's the code-specific part. Integration with version control systems, graphical tools, organizational plugins, and other capabilities are all very useful, too.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
TomDavidson
Member
Member # 124

 - posted      Profile for TomDavidson   Email TomDavidson         Edit/Delete Post 
Another huge advantage for the novice: it helps expose functionality, especially in an environment with lots of prebuilt methods and classes.

GUI dev tools, while a crutch, can also be a godsend. Binding a table to a datagrid in a Windows application using Visual Studio is literally as simple as dragging the table from the "Server Explorer" pane to the working window.

Posts: 37449 | Registered: May 1999  |  IP: Logged | Report this post to a Moderator
Farmgirl
Member
Member # 5567

 - posted      Profile for Farmgirl   Email Farmgirl         Edit/Delete Post 
quote:
so would it be worth it to consider going back to school for computer programming? Or is it too late? (its probably a mark of my youth that at 22 years old, I feel like its too late.)
Never too late!

*says the woman who changed to a career in computer in her mid-30's and got her degree in such right at age 40*

I'll never be as computer literate as TomD or Fugu, but I make a much more comfortable living than I did in my previous career.

There are many directions you can go, even within the programming only realm of computers.

Posts: 9538 | Registered: Aug 2003  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
A recent article on oreilly highlights some interesting issues: http://www.oreillynet.com/pub/a/womenintech/2007/09/11/charming-pythonistas.html

I heard a related talk by the author at PyCon this year, and had some good conversations with her and a few others interested in Python in education issues over dinner one evening.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Shanna
Member
Member # 7900

 - posted      Profile for Shanna   Email Shanna         Edit/Delete Post 
Farmgirl, are you in programming or some other kind of computer career?

That is an interesting article. On a slightly random note, I liked the idea of introducing programming in middle and high schools. There was one programming class at my high school but it was certainly a "male teen geeks only" club. It kind ties in with my general problem of having college freshman pick a major when there are just innumberable degrees and fields available that they've never even been exposed to.

I'm certainly getting more interested in Python and PyCon sounds like a great idea. I actually have alot of friends who have moved to Chicago in the last year and offered up their couches to my boyfriend and I, so I will certainly check into that more.

As for schooling, I'm thinking about alot more. UNO lets people take classes for the heck of it and then keep their credits if they decide to apply for a degree later. Maybe one basic programming class in the evenings might help me get more a feel for things. And I work at a bank now so I get tons of rate discounts if I decide to take out an education loan. Its just something I'm considering.

Posts: 1733 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
Bekenn
Member
Member # 6602

 - posted      Profile for Bekenn   Email Bekenn         Edit/Delete Post 
Sounds like a good plan to me; I say go for it.
Posts: 293 | Registered: Jun 2004  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
*cackles maniacally*

I mean, sounds like you're taking a pretty sensible approach.

The one caveat to that is, quality of programming courses is highly variable. The UNO classes might be a great help, or they might be a hindrance. Looking over their course listings, I strongly suggest taking the starter course they recommend for CS majors (CSCI 1583) out of the selection they have.

They're vague, but I'm guessing that course is in Java or C++. If you can find the time, you might try working through the problems in Python as well. Being able to think about solving a problem generally as opposed to thinking about solving a problem 'in Python' or solving a problem 'in C++' will be a huge boon, and is worth some extra effort. A lot of beginning programmers get stuck using a particular language and have a hard time breaking out of that rut, which impacts their ability to program even in the language they 'know'.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
NotMe
Member
Member # 10470

 - posted      Profile for NotMe   Email NotMe         Edit/Delete Post 
Be sure to check out this guy's blog. He's written a lot of stuff about CS and software design that can give you a good feel for the field. In particular, this article and this one should clue you in to how the choice of programming languages matter.

Also, spend a few minutes looking at The Structure and Interpretation of Computer Programs, MIT's introductory programming book. If it doesn't make your head spin in a bad way, and seems at least a bit interesting, you're probably destined to be a programmer. If you do end up completely confused, don't worry - it means you're at least somewhat normal, but you can still become a programmer.

Posts: 145 | Registered: Apr 2007  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Joel's very smart, but some of his ideas are very controversial. Don't take anything he says as gospel, or even a strong indicator of software development best practices.
Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
   

   Close Topic   Feature Topic   Move Topic   Delete Topic next oldest topic   next newest topic
 - Printer-friendly view of this topic
Hop To:


Contact Us | Hatrack River Home Page

Copyright © 2008 Hatrack River Enterprises Inc. All rights reserved.
Reproduction in whole or in part without permission is prohibited.


Powered by Infopop Corporation
UBB.classic™ 6.7.2