Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

How to become a programmer

Options
  • 28-03-2011 12:25pm
    #1
    Closed Accounts Posts: 2,087 ✭✭✭


    Hi all,

    I was directed over here from IT certification (under Edu) by Dave!

    I'm looking to get into programming. I'd really like to learn enough to be competent in programming in as short a time as possible. To give you some background info, I'm 30 and have been an accountant the last 10 years. So I've a decent enough understanding of the basics of computing, spreadsheets etc.

    At the moment it seems like I have two choices.
    1. Do a night course in either computer science (€5,780 p.a. in Griffith) or Computing (€3,780 p.a. in NCI).
    2. Learn in my own time, starting with C++.
    Can anyone give any advice on this.

    If I go down the route of learning on my own, can anyone help with the following:-
    1. Should I start with C++,
    2. Can anyone reccomend some good books to start with. I had a quick look this morning and the beginning programming for dummies is getting ok reviews. Any better suggestions?
    3. Does anyone know any good websites that would assist in learning,
    4. Does anyone know of any training courses in Dublin that would help. So far, I've come accross this Course. He seems to do a few that may be of benefit to me. It's always good to have some interaction with a professional teacher.
    Thanks for reading. Any help would be much appreciated.

    Al.


«1

Comments

  • Closed Accounts Posts: 1,487 ✭✭✭Pov06


    First of all, if you think it's something you'll enjoy - learn it yourself. If you choose this path, don't bother with books... There's enough info on the net out there to cover you.

    Next of all, try make a little project, after you know the basics (syntax, if statements, loops etc.) of something you like. It doesn't have to be big or anything. Then as you keep on making the project, Google for info, as you move along. This way it will be more enjoyable and more practice.

    How I started along was, I started creating a mod for an online game server. Started out with the basics, and then as I added more features, I learned new things, replaced old things etc.

    Personally speaking though - C++ is a bit rough to start with as a first language. My first language was .NET C#, which is a descendant of C++, providing many libraries, being easier and of course functions named in more understandable English.

    Comparing C++ to .NET C# gets you very close - they are both fast, they both can do the same thing. Only difference is - C++ has a higher market, and more use.

    But going from .NET C# to C++ wouldn't be hard. The syntax is almost the same. It's just that you need to get some libraries yourself, learn new names of functions, and learn "classes" in C++. Because in C++ there's 2 files to a class, where as there's 1 class file in C#.

    Hope I helped a little. Programming is a very nice hobby, but the result is always the best!

    Good luck.


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    Get a book or several there is a lot of wrong, bad or window specific code on the net.

    If you are rushing it, yes c++ straight off and learn the low level c bits should you need or want them later.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Thanks for your replies. I'm definitely interested in it and know I will enjoy it. Would also open up some career paths for me.

    Really just need to know where to start. From talking to a few people it seems to be with C++ then move onto C#.

    But maybe I should just dive in and learn C#.

    Anyone got any specific book suggestions or is the one for dummies a good place to start?


  • Registered Users Posts: 9,579 ✭✭✭Webmonkey


    To be honest, I'd go C# first then C++. At least for the very beginning. Unless you have a lot of patience, and understand a bit more complicated compiler errors, I'd go with C# over C++.

    I personally think C++ could be a hard one to begin with. Maybe you could consider a course then after. If you plan and make it a career, you'll probably require a qualification to get anywhere. That just seems to be the way generally.


  • Registered Users Posts: 981 ✭✭✭fasty


    It really depends on what you want to do. If you want to make a career out of it, knowing lower level languages like C or C++ is definitely a benefit, but the learning curve is steep.

    Other languages like introduce stuff like variables, loops, functions, classes while being more accessible and give much more instant gratification.

    Is there anything you'd like to code yourself?


  • Advertisement
  • Registered Users Posts: 627 ✭✭✭rossc007


    I'd have to say go with C# or Java... imo, stay away from C++, too much to learn for a beginner and there's more job opportunities.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Nothing in particular would like to code. Would just like to know how to do it.

    And if I was any use, then maybe change career. I know it can be difficult to find a job if you don't have a degree. But I don't really have the money or available time to be go the degree route. I'd have to give up my Tuesday - Thursday 6:30 to 9:30. Much prefer to do it in my own time (i.e. after my son has gone to bed, from home).

    I'm also sure if I learn on my own I'll know fairly soon if it's for me or not. I honestly think I have the ability and desire to learn so really just need an idea of where to start.

    I've been looking at http://www.learncpp.com/ this evening and it seems like a good place. However, I'm starting to doubt I should start at C++ by what some of you have said. Anyone else care to throw in their tuppence.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Webmonkey wrote: »
    Maybe you could consider a course then after.

    A friend of mine says vb.net is a good language to learn. But the SCT crowd said you need knowledge of another language before they'll teach it. That's why I'm starting at C++.

    Maybe C# is the one to learn first.


  • Registered Users Posts: 9,579 ✭✭✭Webmonkey


    Clanket wrote: »
    A friend of mine says vb.net is a good language to learn. But the SCT crowd said you need knowledge of another language before they'll teach it. That's why I'm starting at C++.

    Maybe C# is the one to learn first.
    Ah I thought by your post title that you wanted to become a professional one as part of a career.

    Yeah indeed have a go learning yourself. It can be more fun after all.

    VB.NET hmmm - personally i would keep clear of it. It spoon feeds you.

    Give C# or Java a go. If you want, you could also look at something like PHP/Phyton for quickly doing the basics, loops/functions/for loops etc. But in my opinion if you can, you should try with C# or Java or even basic C to start with. Object oriented programming in Java/C# can be a bit of a learning curve too but it's a necessity these days.


  • Closed Accounts Posts: 5,857 ✭✭✭professore


    Before you write a line of code, I would advise to first try to grasp the whole idea of object orientation (OO). This applies across the board to C++, C# and Java.

    For learning, personally I would go for C++. "Plain vanilla" C++ is actually not that difficult:

    http://www.wikihow.com/Create-Some-Simple-Programs-in-C%2B%2B

    I would consider starting off with a command line compiler on linux, as this strips away all the complexity of Visual Studio (the program you use for C# and C++ .NET), which can be more confusing than C++ itself, and has lots of "Windows Only" features. Once you get a handle on OO and C++ the other languages are easy to learn. You will also be able to distinguish between C++ that will compile on any platform (including Windows) or only on Windows.

    Get linux (try ubuntu) ...
    http://www.ubuntu.com/ If you don't have a spare PC you can run it direct from a CD or USB on a windows machine: http://www.ubuntu.com/desktop/get-ubuntu/download


    Have a look at this:
    http://www.youtube.com/watch?v=mDGhN6Jh9YA&feature=related

    Then buy a book on OO programming in general. It is critical to understand this in order to write sensible programs in any of these languages.
    Have a look at this one:
    http://java.sun.com/developer/Books/javaprogramming/ooad/
    Read a chapter at a time and let it sink in. It's a bit like learning to ride a bike, for a while you get nowhere and then suddenly you "get it". Some people never do.... but you sound like a smart guy even if you went to the dark side of the corporate world for a while :D

    I have another Head First book (Head First Design Patterns) and found it excellent.

    Then start learning to program.
    http://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2040&lngWId=3 Start with this to learn how to compile a program.

    http://www.cprogramming.com/tutorial.html#c++tutorial This looks good for actually learning some C++ ...

    Then if you get this far, you can go to Windows C++ .NET, C# or Java depending on what you want (or PHP or Ruby, or any other OO language).

    Good luck!


  • Advertisement
  • Registered Users Posts: 385 ✭✭nicol


    As a starting point I'd download one of the Visual Studio Express Editions from the Microsoft site. These are free development environments and have a Beginner Developer Learning Center. Looks like they have articles on the basics of Windows or Web development, as well as articles on becoming a professional programmer. Might be a good starting point to help get your head around the basics.

    As regards a language VB.NET is probably the easiest to learn syntactically but if you're not phased by curly braces and semi-colons then I'd go with C#, would seem to be more jobs out there for C' vs VB.NET. I think C++ would be too steep a learning curve for a beginner tbh.

    Ultimately if you want to make a career of it you need to do a decent course to learn the correct way to do things, I've met a lot of 'developers' in my time who know how to write half decent code but fall over on crucial aspects like security, memory management etc. because they've only ever seen one way of doing something.

    Good luck with it!!


  • Registered Users Posts: 891 ✭✭✭Mmmm_Lemony


    I would suggest starting with Java.

    It behaves the same way regardless of the OS or platform. And all you need is Notepad or a simple text editor to start. (Textpad or Notepad+ are good) It has very few reserved words too. So you can be writing code anywhere.

    When you are confident with the basic theory of object oriented programming, there are a number of free development environments like Netbeans and Eclipse, that will help you better manage an application or project.

    This guy, although his voice gets on some peoples nerves, gives very good tutorials.


  • Registered Users Posts: 183 ✭✭ClareVisitor


    I would go with C#. The Express editions of the .NET languages are free from the Microsoft website as stated above and there is an endless supply of books and articles to get you started and the online help (both official and unofficial) is extensive. I would agree with getting a basis in OO programmin before you dive into coding though. You'll most likely want to get a handle on the database side of things also, SQL Server Express is also free and is equally well documented. C# and SQL Server are very mainstream development environments if you want to make a career out if IT.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Thanks for all your replies. I'm more confused than ever on where's the best place to start. However, I'm sure it doesn't really matter where you start as long as you get there.

    I started reading the "Learn C++" website last night and it seems well laid out and easy to read. So might just continue on with that. I'll also look into Linux and the links professore put up (Thanks for that).

    Thanks again to everyone.


  • Registered Users Posts: 3,945 ✭✭✭Anima


    I'd install Ubuntu and use that as your development environment first. Windows is a bit fiddley for that stuff and you don't see whats going on. I'd stay away from an IDE at first also. It takes a while to learn an IDE and it hides a lot of the under the hood stuff. (Which later is a good thing because you can work faster then)

    I'd learn the very basics (variables, conditionals, arrays, pointers, structures, functions) in either C or Python. With Linux using make/gcc, its very fast compiling and spitting out new C programs.

    Python is interpreted and works in real-time so no need to compile, its a really nice language. Big tutorial explaining most of the basics of programming here.

    Really what you need is time. Theres nothing difficult about a lot of aspects of programming, it just takes time to sink in. I'd advise getting a good (big) book and just follow that. It'll be coherent and you know you're not missing something, as opposed to random internet tutorials. Small investment for what you'll gain.


  • Moderators, Technology & Internet Moderators Posts: 1,334 Mod ✭✭✭✭croo


    UC Berkley have a bunch of videos on youtube that are pretty interesting. It'll be more the theoretical side of things but they might be a nice compliment to reading books & practice.

    Search youtube for CS61A (scheme based) & CS62B (java based).

    I think might MIT have some too, but I'm not sure... try searching youtube for MIT CS.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Anima wrote: »
    I'd advise getting a good (big) book and just follow that. It'll be coherent and you know you're not missing something, as opposed to random internet tutorials. Small investment for what you'll gain.

    Agree on the book. Tutorials are great but can be a bit all over the place if you're getting them from various sources.

    Any suggestions on the book? There's a load of them out there. I've ordered the "beginning programming for dummies which I'll read over the next few weeks but I'm sure there's better.


  • Registered Users Posts: 9,579 ✭✭✭Webmonkey


    Clanket wrote: »
    Agree on the book. Tutorials are great but can be a bit all over the place if you're getting them from various sources.

    Any suggestions on the book? There's a load of them out there. I've ordered the "beginning programming for dummies which I'll read over the next few weeks but I'm sure there's better.
    Yes, you can't beat a book.

    Before any suggestions, have you decided what language you will go with?


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Webmonkey wrote: »
    Before any suggestions, have you decided what language you will go with?

    I'm thinking C++ at the minute.

    I've been told it's a good language to get your head around the concepts. If I can learn that I should hopefully be able to dive into any other language.


  • Registered Users Posts: 3,945 ✭✭✭Anima


    I've been told it's a good language to get your head around the concepts

    Its probably one of the worst for learning the concepts better I think. You'll spend most of your time, especially as a beginner, battling with the syntax and strange compiler errors. It is a great language and one I use the most but it's not easy. You really have to know what you're doing to get anywhere with it.

    I learned Java first and learned object orientated programming and design patterns that way. I think thats a better route. Java is much more forgiving in pretty much every sense. It forces you to program in OOP in some cases where as C++, it's always just an option. I think Java or C# would be a better choice for that.

    No idea on a book really. O'Reily books seem to have a good reputation and they're quite easy to read. There are some "classic" choices that are listed in a sticky at the top of this forum but they might be a bit heavy at this stage.


  • Advertisement
  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Damn you Anima. Now I'm really confused where to start.

    Do you think C# or Java can be learned from scratch by a complete novice? In their own time?

    If you had to pick one, which one C# or Java?


  • Registered Users Posts: 9,579 ✭✭✭Webmonkey


    Clanket wrote: »
    Damn you Anima. Now I'm really confused where to start.

    Do you think C# or Java can be learned from scratch by a complete novice? In their own time?

    If you had to pick one, which one C# or Java?
    Well learning C# and Java is a heck a lot easier than C++ for a novice IMHO. The compiler errors that C++ produce are awful for a beginner. Miss a curly brace in your header file and well, have fun with the chain reaction/errors it produces! You don't need this hassle when beginning to learn.

    C# or Java? - well. They are extremly close. I'd go with Java personally. The .NET might seem a little daunting to begin with and you will have to use visual studio which can be a learning curve in it's own right.

    My advice:

    Get a good text editor. Perhaps Notepad++. Install the Java SDK. Start producing hello world examples in your text editor and compile it using command line or with the editor. You'll learn a heck a lot more without the annoying IDE's.

    Then you can move onto IDE's and more advanced programming later.

    Once you have Java, jumping to C# should be very natural.


  • Registered Users Posts: 4,275 ✭✭✭km991148


    Clanket wrote: »
    Damn you Anima. Now I'm really confused where to start.

    Do you think C# or Java can be learned from scratch by a complete novice? In their own time?

    If you had to pick one, which one C# or Java?

    Having had a quick scan through this it appears you think there is a steeper learning curve with managed languages such as .net (c#) or java.

    I wouldn't get too hung up on language choice. Asking opinions is dangerous like this.. as you have seen - you end up with huge choice :D

    Maybe learn a little about the differences (I dont mean syntactical, but what happens under the hood - I don't mean technically but get an overview) - for example - with c/c++ you need to be much more careful about memory management, whereas c#/java (which uses a familiar c like syntax anyway) does a lot of memory management on your behalf (yes this is a very simplistic comparison, but just trying to give an idea)).

    Maybe you should pick a language that has lots of support and go with it. After a short while you can start to think more about whats going on under the hood and how different languages do things (i.e. c/java/c++ are compiled but there are also interpreted languages like python/php etc). This is where good quality books will help (there are good materials on the net but a lot of rubbish as well!) - not just on the topic of programming, but computing science/ software engineering in general.

    Additionally once up and running, you might want to think about different types of application (web/desktop/server/embedded) etc that you might want to focus on and then learn a language to match - this is important if you are mapping out a career, but thats a step or two down the line!). Also a big difference between languages these days is the built in libraries. .net (the framework behing c#) is rich and good to learn. The point abouve about using notepad maybe useful, but its a pain, and although IDE (such as visual studio and netbeans etc) have many advanced features, there will be plenty of tutorials around to show you the very basics to get you started (note - think of an IDE as a fancy text editor that has other tools build in to allow you to run code etc - I would get started straigh away with an IDE)

    Also remember being a successful 'programmer' is not simply about being able to code - as others have mentioned there are topics such as design (and being able to express design via UML), object orientated design, debugging applications, organising code, project management skills (and different ways of doing so in the 'Real World' all of which would be taught at uni, but can be picked up by reading up etc.

    Good luck with your choices!


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Thanks for the advice KM and everyone else


  • Registered Users Posts: 2,059 ✭✭✭Buceph


    Hey OP. I'm about a week or two ahead of you in the "learning to program" stages. And I've asked a lot of the same questions you asked.

    First off, I went with Java. Not for any particular reason, some people I know online know it, it's fairly mainstream and I could get a book on it. I don't think the biggest thing is to just pick something and settle on it. People in the know could argue for years on which one someone should pick for learning, and never get a conclusive answer.

    For learning Java, I'm using the Head First Java book published by O'Reilly. I used their Head First HTML and CSS book and found it good, so I'm willing to give them another go. I find it lays things out in quite a good way, gives good examples of code, and most importantly annotates the code, so you know what each bit of the code does. And I find that really important. Also, there's loads of exercises and quizzes in the book. I initially skipped passed some of them, thinking I had the information down, but as it progressed I realised that was a mistake. Getting practice at writing and figuring out what code does is really important to me in helping to learn and understand.

    Also, as a happy coincidence I found some useful information linked to from this forum. Stanford have posted one of their introduction to programming lectures on iTunes, in the iTunes University section. It's a series of lectures teaching programming and the associated information (Object Orientation and the like) to people who have no understanding of programming. The language it uses is Java, so it directly ties in with what I'm doing. All the course material is available online, so you can following along his notes and exercises. I've found it to be very useful. Any of the apprehensions about specific things I got from the Head First book have been cleared up by the lecture series.

    The only other thing is that I would say it's helped to use an IDE. I've tried Eclipse, now I'm trying Intellij because someone said the error messages it uses are clearer. Either way, I've found it helps a lot with things like typos, of which I make a fair few. And it's simpler for me to have all my errors shown in a box at the bottom, that I can directly look at (with the number line of the piece of code) and correct the code all in the same program, rather than going from command line to text editor and back and forth if I wasn't using an IDE.

    All in all, I've been having fun with it. I've been at the actual coding and learning part for a week now. I read through the book on HTML the week before, which was a lot easier, but it was fun getting a bit techy. I've been doing a few hours of Java per day. Like anything you can dedicate a lot of time to it, especially like me if you're enjoying yourself. The one thing I would say about that though is to give yourself a break now and then. I was ploughing through material and getting stuck on the odd thing. After getting away from the computer for an hour, or letting it rest for a night while I slept it cleared up when I came back to it. If you don't give yourself time to digest it you'll be seeing parenthesis and braces in your sleep while saying to yourself "Motorbike harley equals new Motorbike()"

    Best of luck with it. You'll find it enjoyable if you're anyway tech inclined and don't put too much pressure on yourself. :)


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Great post Buceph. Thanks a lot for taking the time.


  • Closed Accounts Posts: 2,087 ✭✭✭Clanket


    Does anyone have any recommendations on whether to get a laptop or a desktop.

    A laptop would probably suit me better but if anyone has any advice I'd be much appreciated.


  • Registered Users Posts: 3,945 ✭✭✭Anima


    Not much difference, obviously faster is better. It's handy to have a lot of screen space for coding, having multiple files and applications running.

    Lots of RAM is useful as well. A lot of IDEs eat a ton of it and it can really slow things down if the OS is swapping between the HDD and memory.


  • Registered Users Posts: 2,059 ✭✭✭Buceph


    Oh yeah. Forget to mention this, but the name of the Standord course on iTunes is "Programming Methodology" and it's by Mehran Sahami. I've found it to be excellent.


    As for the desktop v laptop debate, if you have a particular need for portability go with the laptop. Otherwise desktops will always outshine them. You get more bang for your buck in terms of power, a bigger screen and a separate and full sized mouse and keyboard.

    I'd go so far to say that if you only need the laptop for browsing the internet and checking e-mails when you travel, you'd be better off getting a desktop for general computing and a cheap netbook for €300 or so for the mobile computing.


  • Advertisement
  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    Picking a language to learn is harder to pick than with a natural language. So maybe spend two weeks (arbitrary time period) and learn the basics of variables, loops etc and a general overview of languages and then jump into c++ or java. As per laptop or not, the laptop is obviously portable. But some people really want bigger screens and multiple screens. A 13"macbook is grand for me.


Advertisement