My friends and I who majored in CS have *far more* opportunities than our colleagues, at higher salaries. The bit of advice I have for you is that there's a lot to learn, and a general CS major won't prepare you adequately. You have to learn a lot on your own also to get into the field. You have to take a lot of classes, and also learn things on your own (PHP web development, database development, Ruby on Rails). And, it takes a couple of years to "get up to speed" enough to do innovative work.
But, if you have the ability to become a software developer, yours is the world and all that's in it.
Visual Basic was my first programming language, and it's a powerful language and Microsoft is a powerful platform.
The problem is that to do anything in the Microsoft family requires continual financial investment. Visual Studio itself (standard edition) is $299. As you learn to program, you'll probably want to program what's called "Client / Server" applications. You'll probably want to buy SQL Server ($6000 for the Standard Edition), Windows Server ($1000-ish). As you develop, you'll always find that you need other products that you don't have, and you'll always be trying to decide is it worth buying the product to learn how to do things.
Alternatively, you can learn how to program in the open-source environment. You'll find wonderful, free development tools. You'll find a community of people eager to help you learn (rather than paid support options). And, once you learn how to program this way, you'll be able to deploy real applications, without paying high licensing fees.
I remember, when I started my first company, we were a Microsoft shop, and I wanted to give away some of the technology I had written to non-profits, but I couldn't because they could not afford the licensing fees.
If you want to program a web-based application, I would install linux and apache-ssl and learn PHP. If you want to program an application to run on a client-computer, I would learn python. Both are very elegant languages that are easy to learn and have huge developer communities that are very helpful. These environments are very good investments of your time, easy to learn, and will prepare you to not have to change courses later on.
You can be a good programmer without majoring in computer science, but becoming a good programmer requires a tremendous amount of time, more than is probably obvious to someone just starting out. Majoring in computer science is a good excuse to spend time in college programming in a wide variety of settings.
Here's why. To be a senior-level programmer anywhere, you have to understand the following:
"Computer Science fundamentals":
algorithms (so your software can perform)
database theory (so you can design well and optimize your software)
More general modeling theory (so you can write specifications and participate in large-scale projects)
Language theory (so you can write concise, intuitive software)
Operating System theory (something difficult, but possible, to become exposed to outside of a formal curriculum)
Honestly, most of the time I've wasted as a programmer has been due to not being previously exposed to the more "formal and academic" concepts that underlie what I do.
Good software development methodologies (regression testing, version control like CVS and SVN)
Experience with a wide variety of different languages
A few reasons here:
Much of "enterprise software development" involves integrating systems that are written in different languages
good software developers can embrace and extend what's out there, and that often involves taking components written in one language and using them in another
you want to be able to choose the best platform for a given project, rather than being limited by only being able to use certain languages]
Experience with a wide variety of different platforms
You should have a good sense of what sorts of platforms are out there and what it takes to launch a product on different ones.
Understanding different paradigms (ASP / client-server / pure client, microsoft / open-source)
I would major in computer science, try to do as many projects as you can, build (and finish) as many products as you can, get exposure to web-programming, do a lot of database programming, if you can find an internship or a job doing general ledger programming, I would check that out.
Just, don't think you can become a successful programmer without a lot of work. It's a long, intense process to be able to program well, but well worth the effort.
I think it's an equally interesting question whether Microsoft is infringing on Linux...
My friends and I who majored in CS have *far more* opportunities than our colleagues, at higher salaries. The bit of advice I have for you is that there's a lot to learn, and a general CS major won't prepare you adequately. You have to learn a lot on your own also to get into the field. You have to take a lot of classes, and also learn things on your own (PHP web development, database development, Ruby on Rails). And, it takes a couple of years to "get up to speed" enough to do innovative work.
But, if you have the ability to become a software developer, yours is the world and all that's in it.
Visual Basic was my first programming language, and it's a powerful language and Microsoft is a powerful platform.
The problem is that to do anything in the Microsoft family requires continual financial investment. Visual Studio itself (standard edition) is $299. As you learn to program, you'll probably want to program what's called "Client / Server" applications. You'll probably want to buy SQL Server ($6000 for the Standard Edition), Windows Server ($1000-ish). As you develop, you'll always find that you need other products that you don't have, and you'll always be trying to decide is it worth buying the product to learn how to do things.
Alternatively, you can learn how to program in the open-source environment. You'll find wonderful, free development tools. You'll find a community of people eager to help you learn (rather than paid support options). And, once you learn how to program this way, you'll be able to deploy real applications, without paying high licensing fees.
I remember, when I started my first company, we were a Microsoft shop, and I wanted to give away some of the technology I had written to non-profits, but I couldn't because they could not afford the licensing fees.
If you want to program a web-based application, I would install linux and apache-ssl and learn PHP. If you want to program an application to run on a client-computer, I would learn python. Both are very elegant languages that are easy to learn and have huge developer communities that are very helpful. These environments are very good investments of your time, easy to learn, and will prepare you to not have to change courses later on.
Here's why. To be a senior-level programmer anywhere, you have to understand the following:
- "Computer Science fundamentals":
- algorithms (so your software can perform)
- database theory (so you can design well and optimize your software)
- More general modeling theory (so you can write specifications and participate in large-scale projects)
- Language theory (so you can write concise, intuitive software)
- Operating System theory (something difficult, but possible, to become exposed to outside of a formal curriculum)
- Good software development methodologies (regression testing, version control like CVS and SVN)
- Experience with a wide variety of different languages
- Much of "enterprise software development" involves integrating systems that are written in different languages
- good software developers can embrace and extend what's out there, and that often involves taking components written in one language and using them in another
- you want to be able to choose the best platform for a given project, rather than being limited by only being able to use certain languages]
- Experience with a wide variety of different platforms
- Understanding different paradigms (ASP / client-server / pure client, microsoft / open-source)
I would major in computer science, try to do as many projects as you can, build (and finish) as many products as you can, get exposure to web-programming, do a lot of database programming, if you can find an internship or a job doing general ledger programming, I would check that out.Honestly, most of the time I've wasted as a programmer has been due to not being previously exposed to the more "formal and academic" concepts that underlie what I do.
A few reasons here:
You should have a good sense of what sorts of platforms are out there and what it takes to launch a product on different ones.
Just, don't think you can become a successful programmer without a lot of work. It's a long, intense process to be able to program well, but well worth the effort.