views:

4530

answers:

44

I am currently a BA (business systems analyst) and i want to get more technical. How difficult is it to start programming at 27? I know the basic concepts but haven't really "sat down" and get hands on. What would you recommend doing? I got some c# asp.net books for beginners is that a good way?

+6  A: 

It shouldn't be hard, depending on how dedicated you are. An interpreted language might be a good place to start - even JavaScript, seeing it's ready to go in your browser right now.

I'm currently training one of our SysAdmins in Java (never programmed before), he's also 27. Seems to be picking up the concepts well. Of course, it is going to depend on the person.

Chaos
"It shouldn't be hard" should be "It is hard, but possible" - he has to invest a lot (!) of time, because only experience will make him good.
tanascius
I wouldn't recommend JavaScript as a first language. I would recommend Ruby or Python (with leanings toward Python) for interpreted languages or C# or Java for compiled languages.
Thomas Owens
+141  A: 
  • Sit down.
  • Get hands on.
anon
+1 very concise, very pragmatic
dfa
Precisely correct. Note that programming is a professional skill and, like most professional skills, can take about a decade of work to reach full proficiency. Be patient and have fun. :)
Greg D
@Greg D, also very much like a trade where it's best to be mentored and work through simple forms first and eventually become a journeyman.
Nathan Koop
@Nathan It would be great if such things could be so. But despite having been an paid instructor and sometimes an official "mentor" for quite a chunk of my career, I don't think I can claim to have taught a single person how to design or write a program (to implement, yes) . They all had to do it for themselves. I think this is a bit like so-called "creative writing" classes.
anon
Sure it's concise, but this is someone new to programming, and its not enough. Thats why I downvoted. See Hermant's response.
Marc
I think skaffman is looking for a more in depth answer! Maybe directions as to which language to start off in etc.
ThePower
seems pedantic to me.maybe a suggestion of some books or a language or some web resources would have been useful.
miguel
haha, yeah, but it's so true.
littlegreen
Language severely depends on problem domain. You cannot suggest a starting language to someone without knowing whether he'll be doing RDBMS, web services, n-tier architectures or whatnot. As such, +1 for this answer, as it's the best you can give with the available input.
DevSolar
+8  A: 

I would recommend first to start playing with Javascript. What you only need is a text editor and your favorite web browser, so you will not be discouraged due to anything not directly related to programming. After a few days, if you still have the motivation, you can move on something else (Python, C++, C#...)

Jem
Javascript can be a bit of a pain to debug in the browser (although I suppose that's true of a lot of things) and there's quite a lot of DOM stuff that might confuse a beginner.
pjc50
Best start with basic javascript, like call functions to make a sum, or loop through an array.Not the DOM-stuff to start with...
Natrium
I would disagree. For no other reason that most things involving JS are reliant on other languages. Many of the tutorials you find will deal with HTML or server-side languages. If someone is new to programming, they should start with an language that is stand-alone and isn't at the whim to browsers or servers.
Paulo
+12  A: 

Start with a software development project that closely aligns with your hobbies. Pick the language/framework that would get the job done most practically, and then stick with it for the project until its completion (or when you're satisfied with it). From that point on, you can work on other projects that would require you to learn other programming languages and other software development frameworks. While you're at it, learn how to use revision control software such as SVN or CVS (TortoiseSVN and TortoiseCVS are good choices for Windows). You can get repository space from anywhere, but this is what I use here.

stanigator
Don't you think version control software comes a little late...
Hemant
What do you mean?
stanigator
+1  A: 

I'd probably go for something like Python to start with, as then you can pick up basic logic, loops, variables etc etc etc.

Then, either become a Python master, or move to a language specialised to the area you are interested in.

PHP/ASP for web dev (or just use Python)

Java for enterprise stuff

C for device driver type stuff

etc.

I'm not suggesting these languages specifically - just that the books you'll find on these languages will likely be geared towards these areas.

Rich Bradshaw
+46  A: 

Python is a very popular language to start with, and for good reason. The Python tutorial explains most of what you need to know about the language, but you will need to write your own code if you really want to learn it. Python Challenge provides a series of problems that can be solved with Python. Project Euler has a lot of problems, although many are more mathematical than programming.

What you should do depends on what you want to do. Why do you want to learn how to program? Is there anything in particular you want to do with this knowledge?

David Johnstone
+1, however Python Challenge, for a complete beginner, is brutal. Much better for those who are somewhat experienced but new to Python.
John Pirie
+6  A: 

I'd recommend Ruby - simply because it reads much like english, yet allows you to take your development as far as you'd like. _why has done some amazing stuff when it comes to learning ruby, including the only programming book I have ever read that is actually compelling. Take a look at his poingant guide, and get started at try ruby.

Mr. Matt
+32  A: 

I think it depends on what is your final goal:

  1. Professional: Being an expert in any programming language/technology
  2. Hobbyist: Getting comfortable with some technology and create few applications for fun
  3. Manager: Just know what programming is at the surface level to be a sucker

My guess is that you are targeting #2 goal. If it is so, start with a language framework you are comfortable with. It really doesn't matter much. If you have the background of C/C++, you can start with C# (using free express editions of Visual Studio). If you have gone through pascal, you can use Delphi (using free Turbo editions).

Hemant
+1 for the C# express editions advice. The IDE is really good, the framework fantastic, community support abundant. Even if the goal is to go professional at some point, it makes a fine place to start.
Cobus Kruger
+1 for the Turbo Explorer. For a free version it is only mildly neutered (no ability to add extra designtime components being the most important one), specially it comes with the full visual libraries. Moreover the results have rather low system and deployment requirements.
Marco van de Voort
+1  A: 

It's definately do-able, and you have an excellent foundation for this as you have a good grasp of the business side of things.

Buying the c# books is a good place to start, however you need to find a practical project to work on to actually learn how it all works correctly. Initially this could be a series of personal projects, like a music library, expenses program or whatever.

Once you've done afew of these you can start trying to add to some open source projects.

If you want to move from being a BA to being a developer, I would suggest taking afew certificates, possibly the microsoft developer ones, and then applying for a junior developer role where you can leverage your BA knowledge to stand out from other applicants.

Good luck, to make the transition will require some hard work.

Bravax
+25  A: 

You'll be fine, programming isn't an olympic sport.

However, you may have pesky drains on your time, like family or significant others.
If you really want to put in the hours you should probably consider ditching them.

Rhythmic Fistman
+1 made me laugh.
dotjoe
laugh? the guy's giving a serious advice!
ilya n.
+1 on not being a physical Olympic sport (where age is meaningful).
Liran Orevi
Kidding aside, quiet and the opportunity to concentrate for several hours at a time are very critical for learning, *especially* for learning programming.
Kevin L.
+2  A: 

Sit down and get hands on is definitely good advice!

I would reccomend choosing a language (for windows applications C# would be a good start) then visiting CodeProject.com or the like and downloading a project that interests you.

Then look through code and try and understand it. Once you think you do, see if you can make small changes to it, then maybe try making your own project from scratch along similar lines.

I started programming at 24 via a correspondence course and self study and then started coding professionaly in C and FORTRAN about a year later as part of my engineering role. After 5 years I moved to C++ and C# and im now a full time developer.

I dont think you are ever to old to start programming if you have the mindset for it and the motiviation to learn a lot yourself. I'd say that with the amount of resources on the internet it has never been easier to start.

The hardest part will probably be ensuring you follow good practices; but again there are lots of resources out there to point you in the right direction.

If you are interested in object-orientated programming you could worse than check out MartinFowler.com.

Finally, as already suggested use source control such as SVN once you get serious - it will save you many headaches.

Kildareflare
+17  A: 

Why not? Good age to start something.

My grandfather is 70, by the way, but he assembled his first computer by himself, now he plays a lot with different OSes including different distributions of Linux. What he is most fond of is the Internet, he loves to read technical articles and forums.

So 27 is fine, if you like it, go for it!

Malcolm
I would like to meet your Grandpa. `RESPECT`!
Gollum
+3  A: 

I have two friends that started programming late in life, considerably older than 27. Both got employment in development and one is working in an investment bank getting pats on the back at a rate that suggests that someone in management really wants to keep him on board.

When I first started out of university I worked with someone who came to development after working as a lab technician (somewhere in their mid 20s). He was one of the more respected senior developers in the organisation and I would personally rate him as a good developer - attention span to die for.

I think if you have the aptitude for this type of work you can probably start pretty much anytime in life. C# is probably not a bad language to learn on - it's quite orthogonal and fairly pleasant to work with. You should also get a more general C# book and experiment with programming in general - basic algorithms and data structures stuff from an introductory textbook. This would give you a more rounded grounding than just a web development book.

ConcernedOfTunbridgeWells
A: 

As long as you put in enough time and most importatly, HAVE FUN!, it won't be a problem.

For example, the guy running CSS Play was nearing 60 when he started doing CSS etc. and is now a consultant to the W3C board!

Colin
+2  A: 

As far as i believe you dont need to be of a particular age to be programmer. We all have heard/read about the people who started doing programming at a very early age or after being senior citizens ;-)

So dont ask others just sit and start your work ;-)

After all its your interest,ability to learn and hard work that matters!!

Good Luck :-D

developer
+30  A: 

I'm suprised at some of the answers.

Programming is hard. It's actually getting harder as languages evolve. Who'd ever heard of Haskell 5 years ago (the nerds at the back can shut up! [grin]).

Andreas. If you've got the smarts and are willing to work hard, constantly learn new things, be constantly self-critical and almost never let yourself get away with sloppy work you'll make a good coder.

Any of the languages suggested so far will make a good start. Language choice isn't really the key to becoming a good programmer. Doing things the right way by understanding good practice (and eventually knowing when it's okay to ignore those practices) is the key.

From a personal perspective I'd say that C# is enough of a language to get you exposure to important concepts. I'd get the basics of coding down first before you start on the web stuff.

The important thing to remember is that at the coal-face software development is like no other job and requires mental equipment that many other jobs don't. I've seen quite a few people move over from non-coding but technical jobs to development and not do too well because they assumed that being good at the job was just about 'giving the right instructions to the computer' but it's way more than that.

Good luck anyway mate. Read lots of books, blogs and articles, get yourself a project you can get your teeth into and always be ready to learn something new.

I disagree that languages get harder. It's the tasks that get harder, but languages itself tend to be of more higher level. Like this: you have assembly language, you have C, then you have C++ and Java, and right now we have Ruby and Python. Sure, low-level languages are still here, but you have a good opportunity to use high-level languages.
Malcolm
I agree. Software development is not easy. It takes a lot of time-consuming yet highly rewarding work. It's really not about a language; anyone can pick up a language. It's about learning algorithms and structures on paper. Because once you know how the program will run in your head, you can write it on any language. +1 on the reality check weevie.
johnofcross
Yeah but, with C++ vs C# you have to worry about all the random rules of not using a managed language
Wallter
+2  A: 

What are your intentions? Do you plan to make a career change?

If so, I think you really need a formal technical education. You will not be able to compete in the industry if you take a hobby based approach. I find that the hobby approach leaves you knowing only material that is of interest to you (typically a specific language). You miss out on of all the core components: discrete mathematics, data structures, and design.

slypete
I have worked with both kinds of developers, and in reality the only difference between an experienced developer and an experienced developer with a Masters in CompSci is about $100k in debt. The informally-trained or mentored programmer will pick up plenty of discrete mathematics, data structures, and design if they have a desire to be successful.
Peter J
I'm not sure who would hire an engineer in the first place without a formal technical education.
slypete
+2  A: 

I am surprised no one has recommend Java. The language is free and there are a number of good tools such as eclipse that are also free. Pick a copy of "head first java" and try the language out. If you can understand the concepts and follow the way programs work, then there is no reason why you cannot learn programming.

Jim C
java is fun but not fun for learning ... it tooks year to know it. I hate so much when i have to face java stacktrace errors (it's the most bizzare errors I ever see). if you love java, try Groovy. it use jvm but lots easier(let me call it is "friendly java")
nightingale2k1
Java is horrible for learning basic concepts. Dont learn OO (at first) if you don't have to is always my suggestion.
temp2290
+2  A: 

If you want to test the waters see if you can solve a problem or automate something you already do.

Check out a good data crunching book. As a BA surely you have tons of data that sometimes has to be manipulated. See if you can program something to automate that. Book has some Java and python. http://www.pragprog.com/titles/gwd/data-crunching

Another fun thing is AutoIt. See if you could use this VB like language for something you are already doing or would like to do as a BA. Language has good help and good community support via forum.

Maestro1024
Autoit is really cool and there are a lot of traget.Automate some everyday start is a good motivation.I think almost every programmer already spend our and hours on automating something that normally would cost 5 minutes.
Totonga
+5  A: 

I might sound old school, but starting programming with Ruby or Python is not a good idea, you should start by learning from the bottom : C ! Its like when you are learning to drive a stick, do you get a BMW from the start? no, you start with your old stick car from your dad or your grand pa, where you have to do all by yourself, to understand how the core actually works.

Learn how it works under the hood by learning C, and try to catch good habits from it.

Then only you should go in a upper level like C# or Ruby.

guigui42
A: 

Everyone's already given their language of choice advice, so here's how you can start applying and combining study and practice by choosing one of the links below to get the ball rolling.

The free Beginner Developer Learning Center from Microsoft themselves, broken down by:

Both links start from Tier One assuming no prior development knowledge and you work your way through to Tier Three with more advanced topics like how to incorporate other technologies into yours, in which each tier has many tracks to walk you through. You will also see links to free Microsoft development resources.

My advice now is:

  • keep things as simple as possible and go one step at a time
  • learn how to search Google well to be able to resolve the questions and challenges you will face
  • make StackOverflow.com your homepage and become good, good friends with it and all of us
  • attend any user groups in your area. They are very informative and seeing how excited other people get just talking about development is contagious!
Cameron
A: 

Whenever I get asked a question like that, regardless of whatever language you choose to use you have to have an idea or purpose behind what you are doing. I always recommend making games, because you know the rules and requirements and how it should look. Start with tic tac toe, then move up to solitaire and eventually something more complex. I've known some to take on pong or a scaled down version of civilization. Each game will present different hurdles for you to tackle and that is how you learn to program by solving problems with the language and dying on a problem.

A: 

I would recommend taking a programming class from a local school. Schools that offer IT degrees will have as their first class a “weed-out” that introduces progrramming fundamentals. Programing isn’t for everyone and this would be an easy way to find out if it right for you. If you enjoy the class and enjoy the problem solving then you are on the right track.

C Harmon
A: 

My suggestion would be to leverage the talent that may be around you to pull you into some things. Are there friendly developer co-workers that you think could help demystify code for you? While some parts of programming are harder than others, what motivation you have is also just as important as other answers have said.

JB King
+1  A: 

I started programming at 27 back in 1996 and I'm still going just fine.

Get a book or two. CONSUME them. Start coding. Send out resumes and look for a first programming job without worrying about how much money you'll make. After a year or so of experience you should be able to start making a very nice salary.

Stick with it and you'll do fine. Programmers are in demand.

Terry Donaghe
A: 

First of all, welcome to your new addiction.

Once you pick your starting language (it doesn't really matter which), get a pet project in mind. You mentioned C#/ASP.NET so your project will likely be a webpage. Maybe you could make a blog from scratch. Or catalog your media. Or make a chatroom.... or whatever.... I recommend a pet project because it gets you personally invested in something that's important to you personally. Just doing other people's stuff at first is sometimes lackluster.

Read lots -- especially tutorials. For the first many months at least, and probably longer, do every single exercise recommended. Doing the hands on work is very important. As you go through new concepts, apply them to your pet project.

Read other stuff too. Blogs, etc. These are great -- but they do not substitute for frequent practice. Nothing can substitute for doing it.

Dinah
A: 

If your'e anything like BSAs I used to know, it seems that the way you currently work is probably like this: I talk with customers, I write requirements, verify stuff with SQL queries, and basically tell the programmers what to do. They hurry off, make the product I specified, and I get it back, look it over, tell them how to fix it, and do a good job at giving the customer what they asked for. That, IMHO as a programmer on the other side, is a full-time job that is challenging to do well, and my hat is off to those that do it. I think it's awesome that you want to learn more about programming.

27 is not too late! I took intro courses on programming at a local tech college, and most there were in their 40s, second career, and they got into it with no problems.

My guess is, you'd like to look into programming, and see what your developers are working on, to see whether you'd like it or not, and at the very least to get a good idea of what they're doing.

If you want to get into programming, I would do the following:

  • If you have no programming experience whatsoever, I would try going to a local tech school or community college or some other low-cost school and take a programming 101 course in a language that has application that would directly relate to your work. I would take a class on C#/ASP, as it seems that's something you know about and have some motivation with, or some other business-oriented application language like VB.NET. You'll get the most practical application with those. Talk with some students to find a good prof that fits your learning style, you'll get your money's worth that way. This assumes, of course, you learn by taking classes. If you learn by doing/reading, see the next point.
  • Talk with your developers (find a nice one, who can speak well/teach and isn't afraid of answering questions and won't make you feel like a moron) and learn a lot about the platform your'e working on at work. Maybe get a copy of the programming environment, take it home, and play with it a bit yourself. MSDN seems to contain some programming tutorials with the Express editions of the development environments.
sheepsimulator
A: 

I won't recommend C# :)

if you like C style code, try Groovy and Grails (similar to java but easier) if you like something different but fun try Ruby on Rails or Django

age 27 still a good start to learn programming .. actually I did learn new programming language every 5 year :) (i learn from pascal, c/c++. delphi, vs C++.net,php, groovy/grails) every productive programmers always learning and learning especially for new innovations that could help their productivity :)

welcome and good luck in programming world :)

nightingale2k1
Any reasons in specific that you wouldn't recommend C#?Just out of interest :-)
ThePower
A: 

Too funny, I basically started programming at 27 just after I graduated university. If you're already good with computers it's not that hard to get going. I started off learning CSS, because it made me some walkin' around money. From CSS I went into PHP and finally into javascript (translation: jQuery). I like all three because the functions are usually pretty easy to understand and they syntax isn't all that different.

robotoverlord
A: 

A good way for any language is basic concept of the operating system below. Because face it you need to know what your making. If your an out of the box geek (like) then it will be no problem for you at all.

This is basicly what you need on any age .. when ever you start when your 8 (like me) or 27. If you match this you will be abled to code some stars on the heaven realy quick.

  • Want to learn
  • Check geek news all the time
  • Are not afraid to ask
  • You know your target os.

C# is actualy a good starter language but C++ could be even better to get a basic understanding of things. Here are some keywords any developer need to know of.

  • static
  • constructor / destrotor
  • allocating / deallocating
  • variable types (the general types int, float, double, long, and string)
  • callbacks
  • caching

Thats all for this post :) ..

Johnny Mast
+3  A: 

Would I be wrong to recommend...assembly?!

Eugene C.
Yes. Very very yes xD
Matchu
As a beginner, stay away from assembly!However, if you are comfortable with writing code and are interested in how the machine actually works, doing a bit of assembly is an interesting exercise. A few years ago, I was playing with ATMEL AVR microcontrollers. Easy to breadboard, and the tools are cheap. But there are hundreds of pages of documentation that you need to read and understand to get a chip up and running. Your friends will think you are insane when after a week, you get "blinky LEDs"!Even then, the majority of the AVR users work in C...
mbmcavoy
A: 

Age no bar, programming is for everyone. Just start learning the concepts. As long as you know the logic. All you have to do after is learn the syntax...

Happy programming!!!!!!!!!

Greens
+1  A: 

It's kind of a personal thing really. I started programming at about that age. I am now 61 and have had one hell of a ride - wouldn't trade it for any other career in the world. It takes a certain personality to really enjoy it. It seems like either you love it and can't get enough - or hate it and want to just let other people do it - no middle ground. For me it's like they are paying me to play - something I would do for free. Best of luck to you.

Jim Evans
A: 

At that age, always keep in mind that programming is something complementary to what you are doing, unless you really want to go all the way and get a CS bachelor.

When searching for what to learn, try to find something that is very relevant for the business you are either in, or want to get into, making the most of experience that you already have.

Stay away from the cut-throat markets as web-site building, unless your experience provides you with a significant angle. (and no general manager or marketing skills don't count. It should be contacts and specific knowledge of industries)

I wouldn't be surprised that when you try to maximise the investment of your time, you don't end up with some general purpose language, but something domainspecific.

Marco van de Voort
+4  A: 
Frank V
A: 

I think the answer depends on whether you like to know "How it works internally of the system", pursuing the answer may take more than ten years.

If you have little interests, then you may just can be a coder and may not enjoy it.

arsane
+2  A: 

I started learning playing piano at 30. Beleive me, it's much harder than learning programming at 27.

I am sure that I have no chance to be a pianist. But you have a great chance to be a professinal programmer.

Try to spend 2-3 hours a day on learning programming, reading books, do some hands on labs and interesting small apps, asking questions at StackOverflow, try find some programmer communities in you local and join them.

rIPPER
+7  A: 

Age has nothing to do with it.

My advice is to find a mentor.

There's more than a language to programming, a mentor can set you up in a week with the right tools, working habits, and way of thinking, that will take you a life-time to master on your own.

Liran Orevi
That's a really good point. It's a lot easier if you have friends or relatives in the field. You can ask them questions (and maybe even get a job).
Matt Grande
I consider stackoverflow.com to be a form of mentor actually.
Andreas Grech
+1  A: 

My company currently has a co-op student. He already has two degrees (Bachelors Languages, Masters Philosophy) and has recently picked up software. He's one of the best co-ops we've ever had.

I'd say go for it.

Matt Grande
Any other awesome co-ops?
Mike Trpcic
A: 

It's never too late to learn something new. They say it takes 10 years to master anything. If you start now, you could be a fairly productive programmer by 37. That still leaves time for a good career as a programmer. If you find it interesting go for it. Good Luck!

Molex
+3  A: 

I started professional programming at 27, and I'm very glad I did: nothing else that I know how to do (Anthropology, carpentry, juggling, unicycling etc.) is worth much on the job market today.

Unless you're sufficiently good-looking to be a stripper, I say go for it.

MusiGenesis
+2  A: 

I think its never too late to learn. Just try to get enough interest to fuel you through this journey of learning to code, by trying to code interesting problems. I would recommend you to start with C. All the best,

rayimag
A: 

Use your time wisely, be sure to source, logical, no nonsence resources or tutoring. I believe that learning to program is very simple if you are taught in the correct way. I was able to teach my girlfriend to code object based PHP, MySQL and XHTML (not my primary language) in no more than 3/4 months, now she's at a proficient standard already. Having someone on hand is a good thing but not always available but if you can get classes and accumulate your questions for your tutor, join some popular forums and get books that established programmers recommend for someone learning, solidify simple concepts first, then you should be fine!

GP

Gary Paluk
A: 

Programming is not difficult. It's easy to get started, although frustration will be something that you must learn to cope with. That is to say that there is a plethora of resources for learning and the only barrier to success is your decision not to persevere.

Good luck.

jetimms