Learning to code

Hello everyone,

I am 19 years old and live in the UK and do not currently work in IT (but would like to in the future).

I would like to teach myself some coding so I have a little more ground to stand on if/when i go for a job in technology.

I have downloaded applications to learn python.

I have also downloaded Java mission control and NetBeans, to learn Java.

The questions I have is this:

1. Are these 2 languages ok to start to learn code.

2. If so what kind of 'things' should I code once I've got the hang of it.

Many thanks in advance,

Ben.

Start with python, I did and it is fun and easy. The Python course at Codecademy.com is really helpful imo. Many people start with either HTML/CSS, JavaScript, or Python.

Thank you cryptnotik for the fast reply.

I will look at Codeacademy.com tomorrow (now 1am in UK) and try learn some more!

So do you think i should have a look at HTML/CSS as well or just start with these 2 for now?

Well HTML/CSS will lead to result faster (you will be able to make something *tangible* in less learning time, so a website). But personally I find it kinda boring. I would stay away from Java and try Python. 

Ok, I'll keep going with Python then!

One last quick question: if i carry on enjoying coding in the future I will probably look towards C/C++, will Python etc stand me in good stead for this?

Thanks again!

Ehh, I'm not the one to ask. However Python has tons of uses, especially for in house tasks. It's well worth learning and you can become proficient with it in a few months.

When it comes to IT situations, Java is the end all for systems management. Its not even the fact that its not crazy fast but the fact that it is supported so easily and capable right off the bat of so much without the need of a lot of stuff.

I have made this comment a couple of times before, and I will say it again. I do not think scripting languages are best for those new to coding. Languages like Java or C# are you best choices. The reason why I say this is that when you are new to coding, you are going to make mistakes, a lot of mistakes. And when you are starting out, the compiler is your friend. It will help you find many mistakes right off the bat, with most scripting languages, not so much—especially JavaScript. A simple mistake that the compiler would have caught right away and would have clicked in your head immediately, could take you hours to find with a scripting language. That said, of all of the scripting languages, Python is probably the best one to use as a first language.

Java is probably the best language to know. If it is not your first language, it should be your second. That is, if your goal is to get a job as a software development. If not, learn what ever interests you the most. Java is everywhere. I have also said this before, but most of the major web companies in Silicon Valley use Java for their backend servers (Google, Facebook, LinkedIn, Twitter, just to name a few). And Android apps are written in Java—a flavor of Java very similar to Swing.

And just to clarify. When you say you downloaded Java Mission Control. I assume you mean you downloaded the Java JDK (Java Development Kit)? The JDK is what you use to build Java applications. Mission Control is used to perform analysis on the JVM (Java Virtual machine)—where your Java code actually runs. Mission Control is used to perform run time analysis of compiled Java byte code, running in the JVM. It is used to find memory leaks, threading issues, and performance problems. This is a tool you should definitely learn, but after you have learned Java. You do not need it to use Java.

NetBeans is a great IDE and provides development support for many other languages besides Java ( C, C++, HTML, JavaScript, and PHP to name a few). And I have made past comments suggesting that people just learning to code should download a good IDE like NetBeans. And another poster suggested not using an IDE when you are first starting out, just use something like NotePad++. After thinking about it, I kind of agree. If you really want to learn programming, start with just a simple editor like NotePadd++. An IDE will help you immediately fix too many syntactical mistakes, and these are mistakes you should really make and fix on your own. After you have put in about 100 hours of coding time or if you really start to get frustrated, switch to an IDE and you will cut your development time in half.

I agree with Lord Fauntleroy that Java is a good language for beginners,  especially for the bit about compilers.  Eclipse is a nice, free, easy to install IDE for Java programming as well.  Find a book, or even online tutorials, and just beast your way through.  Biggest tip: actually code things/your own projects and ideas as you go, even if it's as simply as a command-line Digipet.  Applying what you learn as you go will cement the concepts as you go.  There's no replacement for experience.

Python is another common starting point for programmers these days, and MIT has some OpenCourseWare videos that teach the basics and work in python, if you like to learn from videos.  They're just recorded MIT lectures you can find for free.

I'd then move onto C, as it gets you a bit more into the hardware side.  But that's for a later discussion.

Ok, well thats a lot of information to take in and I will start to do some serious work tonight/tomorrow (been at work all weekend).

I think I will start with Java as most of you have said it is best to start with and more programs are made with it so it just seems like a better option in my opinion.

Thank you all very much for the help!

Once you get one language figured out, most of the rest fall into line easily because their core mechanics are very much the same.

Good luck!

If you want to get into more high performance programming then you will probably need to get into c/c++ then. Also kernel development and driver development will also need you to know those languages. Finally, if you want to create an extension to a language like php or python that will have to be done in c or c++. 

I'm in a similar situation to the OP, so I decided to post here rather making a new thread. I'm 18, and while I'm not going to get a job in I.T. I still enjoy learning to program as a hobby. At the moment, I know a fair amount of C++ using some tutorials and an online compiler, as well as some HTML and CSS, which was required for my blog, but I still feel doubtful about these online tutorials.

Is it really possible to become proficient with these languages through self teaching and online tutorials? I always feel that, for example, what a function does and how to use it, I'm not entirely sure how it does it.

 

 

I am teaching myself C at the moment (I am also a newb programmer and such). Here's my two cents.

- Coding is definitely something you need to be passionate about, if not, you'll always be a script kiddie (*Possibly a loaded statement). Go the hard route and grind through C, Java, etc (whatever will work with what you want to be doing).

- While teaching myself I quickly realized how disciplined you have to be in order to retain whatever you are learning. You MUST stick to it, which means no long gaps in-between both learning and practicing. Like learning actual spoken language, the best way to go about it is through immersion.

- I'm about a solid few weeks in (if you put all the hours I've spent learning+practicing together) and I've only made it halfway through chapter two of the K&R C Programming book. You may think I am very slow, however, when I am faced with a problem I try my best to solve it where it is and not justcover it up.

- I find a hacker mentality to be best for anything, whether your are in-school or self-teaching. What does that mean? It means the more control you have, the better. Control your education. If you feel that something is a waste of time, it probably is (unless you're just complaining *entirely different topic*).

Absolutely you can become proficient with coding in any language just by using online tutorials, books, and self teaching.  The key really is time spent doing.  There is no substitution for time coding.  Reading about it and looking at examples will tell you how some particular thing works or give you an example of how to use something, but there is nothing that can replace time coding.  The more time you spend coding the more you will unlock the intricacies of whatever language or software package you are using.  And you will begin to experience more subtle problems and bugs, which will cause you to spend more time to resolve them and solidify your knowledge even more.  What actual coursework and classroom time give you are a structured environment to learn and an expert to help you resolve issues for the duration of your class.  If you have the self motivation to learn how to code, you do not need a classroom and there are plenty of experts online that are more than willing to help answer question and problem that stump you.  Stackoverflow.com is great resource for figuring out problems once you have learned the basics.  Most likely, whatever problem you are facing has already been answered there, if not, you can also just post your own questions.

One thing I will say is C++ is a very hard language to learn but as your first language, it can feel even more daunting.  If you are feeling apprehensive about your knowledge dept and understand of functions/methods in C++, I would suggest moving to an easier language like Java or C#.  Java shares about 85% of the same syntax as C++, but strips away much of complexity that can muddle a novice developer's understanding.

And as I have mentioned before, if you are not looking for a job in IT, then definitely learn whatever you like or find easiest.  Don't worry about what skills are marketable or what someone tells you is cool or great.

Often, the only difference between having a formal teacher and reading through a textbook is that in the earlier you've a person to pose questions to and someone kicking you to make you practice.

Teachers direct the flow of learning, but so does a good textbook (or tutorial series).

Teachers force you to practice via homework and fear-mongering (exams).  Some textbooks suggest projects and pose questions, but this is where the self-teaching individual needs to show self-discipline.  Create coding project for yourself.  Application is key. 

One summer, I spent my free time working through a $30 java textbook, writing the most trivial command-line programs and one half-assed game, all because the next semester I was going to have a class which expected some Java familiarity.  I ended up breezing through the class because I had basically taught myself all there was to it.

You can breeze through formal education and hardly learn anything, just as you can read a textbook and still not fully comprehend what you're talking about.

Well, since K&R starts with chapter 0—unless they have changed that, you have actually gone through three chapters!  :)  And for only a couple of weeks, I would say that is pretty good.  K&R is so dense, and you could easily spend a semester or two going though it thoroughly.  It is one of the shortest books on programming, but incredibly dense.  It is a great book and I still use some of the programming tricks I learn from it today, but I consider it more of a reference/advanced programming book.  I would not recommend it for someone just learning C.  It is sort of—and I do mean sort of, they are not comparable books in anyway—like Effective Java.  Effective Java is the best Java book ever written, but I would not recommend it for someone who wants to learn Java.  Likewise, for an intro to C, I would recommend starting with: C Programming: A Modern Approach, C Programming Absolute Beginner’s Guide, or A Book on C.

After you finish one of those, then move on to K&R

Java is very important to learn you can find many tutorials on youtube. I recommend learning from thenewboston. With codeacademy they teach the web based aspects of the languages. Python is probably the best to start with.

Depends on what you want to do, but adding to that play around with each language, In my slight experience every languages is build on the same principles and then build their, so you always have variables and strings etc, so research what these are first, then begin with a language of your choosing, HTML is fairly easy as its only a markup language, Python is easy due to its closeness with English its self.

Also where do you want your code to be effective? High level or low? Low is stuff like C and High is like python, so if you wish to work with architectures etc, low level maybe better as you will have like machine code, If you wish to make applications and web pages then choose high level.

Knowing these things will narrow down your language, Don't feel like you must learn one language, sure there are ones that are easier to understand, and from what I hear once you learn one language its easier and quicker to learn others.

When you have picked your language look for projects or problems that need fixing, or use a only guide, Learn the hard way is a brilliant place where I drift to when I do programming, TheNewBoston has video guides on almost every language, well detailed and explained.

Only other option is a class, these cost money unless you have a friend that is willing to help, and there is always the forum to help, but experience will always make it easier, so just have fun and see what fits you.

Take my advice with a pinch of salt, I am a noob at programming as I script more than actual program, but I hope what I suggest will help you just as much as learning as suggesting a language.

 

I learned from K&R and absolutely loved it.  It's nice in that it's very concise and riddled with examples.  But I had already learned Java and knew some of the basics of computer architecture.  I can see how it would be rougher for someone who hasn't.