Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I graduated with a Business degree. Two years later, I finally realized the power of programming - the power to "invent." I wish I realized this in high school. Nevertheless, I tried to self-teach C# but found it difficult. Then I pivoted to learn PHP two months ago and I have been able to build things I thought was beyond my abilities.

Has anyone had the same experience? Or self-taught programming? What lessons did you learn?

share|improve this question

migrated from stackoverflow.com Feb 11 '11 at 19:12

This question came from our site for professional and enthusiast programmers.

1  
This is a good question for programmers.stackexchange.com –  Ben Jakuben Feb 11 '11 at 19:09
1  
No, but I watched a lot of CS students flunk out and switch to being business majors. –  Crazy Eddie Feb 11 '11 at 19:45
add comment

5 Answers 5

up vote 7 down vote accepted

What lessons did you learn?

As a self-taught programmer who has gone through his share of blood, sweat and tears over the past ten years (and incidentally is currently in the process of quitting!), two six recommendations:

  • Working with PHP is fun, but do learn C# as well for the reasons I outlined here some time ago:

    when asked by programming novices about what language to learn first, I always recommend starting with, or at least also looking at, a strict, strongly typed language like Java, Delphi or C#. There's nothing wrong with PHP (I do almost all my programming in it nowadays and love it), it's just that it's very, very permissive, and forgives a lot of what is considered bad programming style. The tough discipline imposed by a compiler is excellent training to learn clean and structured programming.

    I learned programming with Pascal/Turbo Pascal/Delphi and I was always really grateful that I had, because it taught me a sense of clean programming and architecture that PHP doesn't always enforce.

  • Being active on Stack Overflow, both on the asking and answering front, can help overcome anything one may be lacking because of not having studied the subject. It will keep you up to date on good practices and patterns you don't necessarily learn "in the wild". SO is a tremendous, unique resource in terms of what you can ask and learn and learn while contributing. I can only recommend it.

  • You don't need to use one if you don't feel like it, but be aware of frameworks and what they can do for you from early on. Over time, it's good to have at least taken a look at a number of them. Make sure the Zend Framework is on that list because while there is a lot of valid criticism, it in many ways shows the best that the world of PHP has to offer.

  • It's not necessary to become a total TDD freak, but do take a look at Unit Testing from early on, and be sure you understand what it is. In the PHP world, that translates to PHPUnit.

  • Using Revision Control is a must. There is no way around it. If you don't know how to use it, pick a system start learning it right away.

  • Make backups.

share|improve this answer
1  
Backups are redundant. –  Crazy Eddie Feb 11 '11 at 21:06
    
Quitting programming? Say it ain't so! I can't quit you, Pekka! –  Andrew Heath Feb 12 '11 at 8:25
add comment

Following the same(ish) route now [and with the same wish that i had done something more vocational than my degree]:

economics degree => (Ruby) on rails

In terms of lessons - well I am around a 2 1/2 weeks into this and two things have really stuck out; these may not have been exactly what you are looking for:

1, i need to get a desk and chair - seriously my old posture for t'internet just does not cut it for using a computer as a programmer would.

2, computers are full of distractions and when you work on them it is so easy to end up… well here for exp. one of the best articles i have read to help my concentration is http://24ways.org/2010/put-yourself-in-a-corner

hope that this is useful to others

share|improve this answer
    
Looks like there is another person regretting their Econ degree! I'm in the same boat however, I learned C# instead of RoR :) editAlso, welcome to P.SE![/edit] –  Jetti Feb 11 '11 at 20:03
    
+1 for the article you linked to –  Ben Jakuben Feb 11 '11 at 20:07
    
@Jetti thanks! [What's with the 15 character minimum?] –  darren Feb 11 '11 at 20:12
add comment

Depending on how far you want to go with your learning, it will pay off to learn the object-oriented principles of a language like C# or Java sooner than later. Once you master those it becomes much easier to pick up other languages (like PHP). I did the minimum to get by in my intro to programming class only to come back and re-study all the material once I decided to go into computer science. I've heard from coworkers that the "Head First" series of books (like Head First Java) are very helpful for self-teaching.

Having said that, there's something to be said for the practical approach of tackling problems and areas of interest as they come with a dynamic language like PHP or Python (or plain ol' HTML and Javascript, for that matter). It's helpful to have projects that you care about where you can see immediate results to maintain your enthusiasm for learning.

But learning the concepts of computer science (algorithms, logic, internal workings of the network and hardware) will certainly help in the long run and will make you a much better programmer if you decide to stick with it. I don't have any specific resources for this, but maybe other posters will have some to share.

share|improve this answer
add comment

I don't think it is ever too late to be doing what you want.

There are some advantages to having a business background as a programmer. I have a special education degree and was able to apply Task Analysis to development. Support, training, and documentation came pretty easy. Just be prepared to being behind in some areas, so you may have to work a little harder.

I knew I enjoyed programmer the first time I took a class, but that was in college and never considered changing my major. If I was exposed earlier, I might have.

share|improve this answer
add comment

So basically you bailed out of business because it was too boring or too difficult for you? And then you bailed out of C# because it was too boring or too difficult for you? Do you have any conviction at all to follow through on anything? Do you move from one thing to another just like the way the wind blows? Show some good old-fashioned gumption and stick to one thing and do it well. That's what's wrong with America these days. Back during World War II, I told myself that America needs to stick to its guns and show some gumption, and doggone it, we did, and that's why we won and the krauts lost. And then during the Cuban Missile Crisis we stuck it out again, and we won. So son, you need to follow through with what you set out on, or else the Krauts will come here and beat us all the way back to Cuba. Listen to my words, son, or else you're going to be a-coming and a-going this way and that. Stick to one thing and do it well.

share|improve this answer
6  
Quite presumptuous there. Just to be clear, I graduated with a BA Finance AND Information Systems degree three years ago. I'm not sure where in the question did I mention "drop out." And by the way, PHP is working great for me and I am launching the prototype to beta users next week FYI –  huisjames Feb 11 '11 at 20:25
2  
missing <irony> tag? –  underdark Feb 11 '11 at 20:33
    
Man, you should get into politics.... –  David Conde Jun 3 '11 at 18:12
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.