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

3 months of learning programming?

Options
  • 25-06-2013 3:45pm
    #1
    Registered Users Posts: 2,912 ✭✭✭


    Just want to ask about the average progress of someone who learns programming from scratch and what results and skills they should/can expect to have after 3 months? Assume learner is not especially gifted in this area, but is capable of learning.

    Starting with html, css and python.. for example. How far could you go in these after 3 months intensive learning?


Comments

  • Registered Users Posts: 412 ✭✭Iano_128


    Depends on how much work/time you're willing to put in really! If you want to study/practise/learn flat out every spare minute of every day in those 3 months, you can learn a lot. If you want to spend an hour or 2 a week then not a lot.


  • Registered Users Posts: 743 ✭✭✭KeithTS


    I would suggest not starting with the 3, learn one to a good standard and take time to understand the basics really well.
    If time is taken here then a lot of the trickier things will fall into place quicker when you get to them.

    I'd also suggest starting on C, C++ or Java, the reasons being you are forced into a style of procedural or OOP. With Python you can pretty much dance around both worlds so you don't get a full grasp of the pros/cons of either really. Also once you have another language down you'll pick python up in no time.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    pog it wrote: »
    Just want to ask about the average progress of someone who learns programming from scratch and what results and skills they should/can expect to have after 3 months? Assume learner is not especially gifted in this area, but is capable of learning.

    Starting with html, css and python.. for example. How far could you go in these after 3 months intensive learning?

    3 months isnt a lot of time.

    I've seen a few people go through the initial programming experience.

    There's a lot of individual variation.

    Some things that might matter:
    Do you have any previous experience programming? Even an introductory college course you didnt pay attention to? Any experience studying logic, previous work in a numerate discipline etc? Do you like puzzles? Getting in arguments? Analyzing things? How old are you? Can you concentrate hard on things? How motivated are you? How focused can you be? Are you going to be starting your programming after being tired from a days work, etc?

    Whats your goal?


  • Registered Users Posts: 2,912 ✭✭✭pog it


    fergalr wrote: »
    Some things that might matter:
    Do you have any previous experience programming? Even an introductory college course you didnt pay attention to? Any experience studying logic, previous work in a numerate discipline etc? Do you like puzzles? Getting in arguments? Analyzing things? How old are you? Can you concentrate hard on things? How motivated are you? How focused can you be? Are you going to be starting your programming after being tired from a days work, etc?

    Whats your goal?

    Well okay, my motivations/goals: Two, mainly.
    It would be a luxury to have these skills from the point of view of challenging my brain to learn what is not 100% natural to me but which at the same time I can do with effort.

    Practically speaking, I do have a business idea which would be weighted heavily on a powerful website. I will definitely have to get somebody to develop it for me, no chance I would be able to anything like that myself in even 6 months to a year probably (and that's assuming massive amounts of learning) but assuming I am successful in this business, I would like to be able to do some things myself later on.

    My downfall I would say is 'logic' which I know would make me better at this stuff if I were to have this. I have an analytical mind, and like to analyze things, and that is what I believe is what will make me capable of learning. I can apply myself in study. I have first class honours masters, etc. but admittedly this was in an area I am completely at home in (the Arts) but it does prove I can put my head down and concentrate.
    I am also pretty decent at maths but don't at all have any fondness or particular likeness for the actual sums part of maths. I do love financial theory, with statistics, etc. But in terms of calculus, algebra, etc... I don't enjoy this at all. Now I can learn it but it's kind of horrible if I'm honest.

    I think that's why I'm looking for an idea of where I can get to in 3 months if I put the work in. Just something to imagine or work towards as the challenge and vision. Right now I know so little it is hard for me to imagine what is achievable.


  • Registered Users Posts: 586 ✭✭✭Aswerty


    Well I might start off with saying that I think programming has to be one of the most unnatural thing anyone can do. We are none of us built for it but with a bit of effort we muddle through from one task to the next and if we're lucky we might do some learning along the way. And with regards to maths, pah I say. Most software developers don't have a use for anything beyond arithmetic from day to day, it's a minority that do math intensive work. Computer Science is underpinned by sound mathematical concpets but the application of modern programming skill does not require the developer to be aware of most (any?) of it. Of course understanding bits here and there gives one a sense that they have an idea of what's going on underneath all those layers of abstraction you're building on top of. The primary value maths will bring is that logical and analytical perspective that makes a good programmer.

    With regards to the learning how to program this brings up the big question, what language to learn. For someone that is angled towards web development you can go with any language that has a decent amount of documentation, community support and a web framework. This gives you a large number of languages to choose from and there is really no driving reason why you should use one over the other. The one language for web development that is top dog is JavaScript. This is entirely due to the fact that all modern browsers can run it.

    Web development involves building for the client(browser) and the server. The client side technologies are pretty much fixed: HTML for structuring web pages, CSS for styling your HTML and JavaScript for implementing dynamic interaction within a web page. The server technologies vary depending on whether it is a website or web application you are building. For a website you just need a web server to deploy the website. For a web application you have to build the application using a programming language which has a web framework. Examples are C# and ASP.NET, Java and Spring, Python and Django, Ruby on Rails, PHP and CodeIgnite (I believe php is very useable without a framework though) and many more though what I've listed are the most prominent. A web application will also require the use of a database. There is a bit of variation with regards to databases but SQL Server Express or MySQL should keep you covered (note you need to learn SQL to read and write data to a database). The web applciation on the server is the only thing that talks to the database.

    For learning to program you need to get yourself some decent material for learning. Once you pick what language you are going to learn how to program with, note you're learning to program as opposed to learning a language, you need to find yourself some good websites and maybe a book or two. For me you'll either want to start out writing JavaScript and running it in the browser (maybe mix it up with some HTML/CSS) and/or writing C#/Python/Java/Ruby simple command line programs (i.e. no user interface). I may be wrong but PHP is a bit web focussed to learn to program with unless you are learning by starting off building web applications. There is loads of other great languages to learn to program with but they don't get used in web development.

    In three months I'd expect you to have gotten to grips with the language(s) of your choice and have gotten through a book/tutorials showing you how to write simple programs. You might have even undertaken writing a small program yourself outside of the material you are following.

    If you jump in the deep end and start building web applications from the offset you'll have a lot of work to do but you'll end up coming across all the relevant technologies. If you follow my advise with building client side and command line programs at first you'll hit a shallower learning curve but it does mean at some point you're going to have to bring everything together and start down the web application route.

    If you have your heart set on going with Python and CSS/HTML that's a perfectly reasonable place to start from. Download python for windows and get cracking on learning how to use it by running it in the command line and follwoing the documentation from the site or any other tutorial on the net. For CSS and HTML (which are not programming languages) you can open up notepad and start writing both to create web pages. Once your comfortable in both (comfortableness with Python will take much longer than HTML/CSS) you can look at using Django to make a web application.


  • Advertisement
  • Registered Users Posts: 1,922 ✭✭✭fergalr


    pog it wrote: »
    Well okay, my motivations/goals: Two, mainly.
    It would be a luxury to have these skills from the point of view of challenging my brain to learn what is not 100% natural to me but which at the same time I can do with effort.


    My downfall I would say is 'logic' which I know would make me better at this stuff if I were to have this. I have an analytical mind, and like to analyze things, and that is what I believe is what will make me capable of learning.

    An analytical mind, and liking to analyze things sounds like a really good position to start from.
    Much of programming is about problem decomposition - starting off with big problems, and thinking about them, and learning how to break them down into a series of steps, and then repeating this process on each of the steps.

    Its about learning to use your mind to take apart something that seems big and complex, and break it into a series of steps that are easy enough to tell a computer to do them.

    pog it wrote: »
    I can apply myself in study. I have first class honours masters, etc. but admittedly this was in an area I am completely at home in (the Arts) but it does prove I can put my head down and concentrate.
    You wouldnt be the first person to go from arts to programming or CS.

    The fact that you know you can work at something and concentrate on it should give you plenty of scope for getting a lot out of 3 months. And you'll already have important skills with self-learning. Being able to teach yourself stuff is a huge part of being a practicing programmer.

    pog it wrote: »
    I am also pretty decent at maths but don't at all have any fondness or particular likeness for the actual sums part of maths. I do love financial theory, with statistics, etc. But in terms of calculus, algebra, etc... I don't enjoy this at all. Now I can learn it but it's kind of horrible if I'm honest.
    You don't directly have to do those things to program. Programming is a different experience.
    pog it wrote: »
    I think that's why I'm looking for an idea of where I can get to in 3 months if I put the work in. Just something to imagine or work towards as the challenge and vision. Right now I know so little it is hard for me to imagine what is achievable.

    This course: https://www.udacity.com/course/cs101
    might be a place to start.
    I havent done it, and it seems like it moves pretty quick, but maybe do a few of the first lectures and get a flavour of things.

    You want to get a course, and a book or two, on how to learn a language.
    I suggest Python as a first language.
    I suggest you stay away from web programming, as its got too many moving parts, and there's too much going on to learn thoroughly.


    Here is an MIT course:
    http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/Syllabus/

    which includes video lectures.
    Check out the syllabus.


    Here's another course, which I dont think has video lectures online, but check out the syllabus.
    http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2011/index.htm


    Note that MIT is teaching their entry level programmers using the Python programming language.

    Check that material out.


    As to how far you can go in three months?

    The following is a guess, but:
    If you start off with Python, and work hard at it, and rigourously write a lot of code, to make sure that you have properly covered each topic before you move on to the next topic, you should expect to have a good understanding of the basics.
    You should be able to read python code, and slowly make sense of it, line-by-line. You should probably be able to write simple programs of your own, that do reasonably simple things - programs that play simple games, like Xs and Os. Or maybe even a game like snake, if you get far. You should also be able to make small targeted changes to existing big programs, to add or change a small piece of functionality.

    Building big or complex programs quickly from scratch would still be beyond you - they will seem very complex and take a long time to get your head around. You will also not have the experience to break down a big problem into smaller parts.
    You'll also get confused easily by trying to use complex frameworks - they will seem to have too many different bits that you cant understand all at once - although you should be able to slowly work through those things, given enough time.

    You should have the beginnings of a decent understanding of the fundamentals, if you've been thorough.



    You could go down a different route, where you try and learn to hack things. You could start off with an existing framework, or tech stack, and then you might learn to hack specific functionality from existing bases, and you could learn to quite successfully do a range of specific things, in three months, but while you have learned specific things, you will be quite confused about why they work, and be unable to move beyond that. That is the other pathway.


    pog it wrote: »
    Practically speaking, I do have a business idea which would be weighted heavily on a powerful website. I will definitely have to get somebody to develop it for me, no chance I would be able to anything like that myself in even 6 months to a year probably (and that's assuming massive amounts of learning) but assuming I am successful in this business, I would like to be able to do some things myself later on.

    - If you are talking about wanting to learn programming, because you foresee yourself working in the tech industry, or becoming a long term serial tech entrepreneur, that makes some sense. The more you know about tech the better choices you can make in all the decisions a tech founder needs to make, about who to hire, what choices the company should make etc. Its difficult to even know if your potential cofounder is a good programmer or a bull****er unless you have some tech knowledge yourself.

    That said, some words of caution: It probably does not make sense to learn to program if it is only for a specific business idea.

    The reality is that most business ideas do not go anywhere. Business ideas are like lottery tickets; some may be quite valuable, but the chances that one specific idea is valuable a priori is quite low. As a result, it would be inadvisable to learn to program for a specific business, as opposed to as a long term career decision. Although people have done it, I would not advise it.
    But if thats just one part of your thinking and motivation, fair enough.


  • Registered Users Posts: 2,912 ✭✭✭pog it


    Amazing amount of information again. Thanks so much. I am getting to grips with all of that (and going to sleep on it!) but just regarding a web application and a website... can you explain to me how they differ? What exactly is a web app as opposed to features like videos, etc. on a website. Is it an interactive feature? Sorry, I know this is basic but just want to get this bit down!
    Also thanks for the words of encouragement.

    Should I be making Javascript a priority at the beginning? Or wait to have html, css and some python down first?


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    pog it wrote: »
    Amazing amount of information again. Thanks so much. I am getting to grips with all of that (and going to sleep on it!) but just regarding a web application and a website... can you explain to me how they differ? What exactly is a web app as opposed to features like videos, etc. on a website. Is it an interactive feature? Sorry, I know this is basic but just want to get this bit down!
    Also thanks for the words of encouragement.

    'Web pages' are just files of simple text, like you would write in Notepad, or in any word processor.

    These files have some special commands in them, that allow a special program, called a 'Web Browser' (like 'Internet Explorer' or 'Firefox') to make the simple text files show text that looks a little bit fancier.

    For example, the command: <B>Blah</B> shows the word 'Blah' in bold.

    If you have a given text file, with these special commands, if you put it on the Internet, people call it a 'Web Page'.

    Most importantly, there are commands to 'link' these web pages to other pages, where when you click on certain 'links' your 'web browser' goes to another page.

    People call collections of these pages 'web sites'.


    Now, here is the tricky bit:

    Once upon a time, when all this started out, all these 'pages' were made by humans, by hand, in their favourite text editing software. So, people wrote the 'web pages' in Notepad, by hand. And, indeed, if you start off doing web programming, that might be how you start.



    But, here's the thing: People started to want to make web sites that did more and more complicated things. People wanted to make it so that when you came to a website, it did something like said your name on the website. How were we going to do that? If we had 10 different users on our website, we were going to need 10 different web pages: one webpage that said 'Hello Bob' and another webpage that said 'Hello John' and so on.

    Trying to make all these pages by hand was going to take forever.

    But, what if we just had a computer program, that would make the web pages instead?
    Thats a great idea - that would mean that we wouldnt need to make all the pages by hand - we could have a computer program that made the pages instead.


    So people started doing that.

    Then, after a while, someone said, wouldn't it be great if the computer program that generated the web pages would generate them automatically, so that if a new person came along, called Alice, we could say 'hello Alice' automatically? We wouldnt even make the webpage that said 'hello Alice' until Alices web browser asked for it? That would be very efficient.

    So people started doing that.
    And then they realised that if there was other data that should also be on the page for Alice, the computer program that made the web pages, on demand, could also get that data, and put that on the page for Alice.

    Pretty soon, web pages weren't just having a small amount of static information that didn't change. Suddenly people were using the web for more and more complicated things. People were writing computer programs that automatically generated more and more complicated web pages, in real time, in response to browser queries. People were using the web pages almost as a user interface. Where people used to write their applications using something like Microsoft Windows, more and more people were writing their applications on the web.

    These are what we call web applications. They do many complicated things. They generate web pages, in real time, in response to requests from the users browsers. There are many different types of web applications, and it is very complicated what happens, in many of them, to make the web page that your browser eventually shows to you. As you say, these days, there is even video and things like that that is shown on the web.


  • Registered Users Posts: 2,021 ✭✭✭ChRoMe


    Aswerty wrote: »
    Well I might start off with saying that I think programming has to be one of the most unnatural thing anyone can do.

    Funny, I consider logic to be one of the human race's most natural skills. Considering we use it every second. Development is just an extension of logic.


  • Registered Users Posts: 2,912 ✭✭✭pog it


    Thanks Fergalr. I had been thinking of web app more in terms of a mobile app and didn't really know the broader picture. Thanks so much again for the help. Has really shaped it all up for me now and have got a task from my boyf to make a html page that has a search bar, an image, and comments box, and going to try to do this by the end of the week :)
    Started on code academy which is really cool for a free website especially and have mozilla developer html guide along with the wikipedia page for html as well.
    Will hopefully come back with some skills I can share knowledge about!


  • Advertisement
  • Registered Users Posts: 1,922 ✭✭✭fergalr


    pog it wrote: »
    Thanks Fergalr. I had been thinking of web app more in terms of a mobile app and didn't really know the broader picture. Thanks so much again for the help. Has really shaped it all up for me now and have got a task from my boyf to make a html page that has a search bar, an image, and comments box, and going to try to do this by the end of the week :)
    Started on code academy which is really cool for a free website especially and have mozilla developer html guide along with the wikipedia page for html as well.
    Will hopefully come back with some skills I can share knowledge about!

    Starting out by playing around with HTML is a fine way to put your toe in the waters.

    Making a static HTML page by the end of the week, which has a few of those elements, sounds reasonable.

    Maybe a HTML page, which is a web application, and is dynamically generated would be too ambitious.


    You might find that, if you learn using HTML for an extended time (a few weeks), that while you are able to make stuff happen on web pages, you don't feel that you are really learning to understand what you are doing.

    You might get the sense that you've learned a lot of things, but these look simple in retrospect, and that you are worried that you aren't really learning how all this software stuff fits together.

    That may not happen.
    But if that does happen you, don't get disheartened, and instead try and do a more traditional, non-web-focused intro to programming course, and see how you get on.


    Best of luck!


Advertisement