How did YOU learn programming?

Right now, I, myself, am trying to learn how to code. I know how some things work here and there in C++ and Java, but as of currently, I'm terrible at it. I am taking a class for Java (last year was C++), but it feels like I'm not learning jack shit from any of what I am told to do. Also, about 80% of the time, it just feels like my teacher is just throwing us into project to next project without taking into consideration that some people (such as myself) still haven't fully grasped the idea of programming yet. It's like he's expecting us to know everything from the get go and figure something that is mildly to very complicated out, especially for noobs, in a couple of days.

Anyone have an idea on what I should really be doing as of now? It's been 3 months since I've been really introduced to programming and I still feel like I know nothing.

I have been learning it in a classroom setting myself. Tell me, what kind of things have you been doing? I mean, give me an example of what you can accomplish, a project that you have done. I am interested in seeing how it compares to what we have been doing.

Compares strings to other strings, Hangman, currently working on something based on Langston's Ant, etc. The only one that works out of them all is the string compare. We're going to do graphics in, like... 2 more months class time.

Also: I should have added this, but we have absolutely no reference material and the teacher's philosophy on teaching us is the equivalent of throwing shit at a wall and expecting it to stick.

I didn't, lol

3 Likes

Learn on your own.  Teachers can be (CAN be) helpful, but learning to program is not really something that can be done to you.

Only 10%* of programming involves stuff that can be "taught" in a classroom setting.  90% of programming is about concepts and design.  (The other 90% is debugging.)  This means it involves a lot of self-motivation and self-directed learning. 

So, find something you're interested in and try to do it.

* warning! 87% of statistics found on the internet are made-up.

2 Likes

Your teacher is similar to my old high school teacher; we weren't given much reference material at all, apart from what was transcribed on the blackboard. His teaching methodology was for us to take notes during class, and pursue further reference material in our own time.

 

I guess he thought that we'd retain, and learn the subject more thoroughly than by a verbatim approach in the classroom. This approach may work for some students, it is not applicable to all, as we all learn, and retain information differently.

 

I've probably learnt more since finishing high school in a workplace situation, than in the formal setting of high school.

 

*As an aside: many of the TRS80 'heroes' of my classroom never carried-over their classroom studies to the real-world workplace scenario. They tended to be successes in the classroom only, and weren't able to assess or diagnose problems in the workplace (in other words, they developed a form of 'tunnel vision' in relation to learning, and being open to new approaches)

 

 

Programming is 2% people telling you what to do and 78-98% you going out figuring how to accomplish it (and depending on necessity, 20% feedback). You won't learn anything if you just read about it - if you show a first-grader arithmetic for a year, they might memorize some of the numbers, but it won't mean anything unless they get to play with them, same with any math activity, and same with programming. Testing and messing around is the way to get to know how something works, and that's when you can apply critical knowledge. I wouldn't bother using only examples that you get from class - unless you're early on in programming and can only use functions that you've been told in class, looking online for relevant answers is very helpful, and has been how I learned to start and I still do that whenever I need to use a language I have never used before. That way, you can at least know of something new to use and try.

To answer the topic title, I first got started in coding indirectly through my brothers. They both introduced me to HTML. HTML is just markup, but it got my fascinated with using what I wrote to organize and draw words on the page, integrated into the browser. I was also introduced to CSS, and when my brother wasn't being helpful I turned to Google. I was also copying bits of JavaScript, mostly because other people made it function and I didn't know how it worked. I just wanted to use it.

Sometime inbetween then and my senior year of highschool, I tried C++. I didn't understand a thing, but I think I tried to make a text-based RPG, inspired by Chuck. It didn't get very far. For my senior year, I convinced my oldest brother to oversee me do a Web Development curriculum, where my final project was to build a forum from scratch with PHP, MySQL, and some AJAX. That introduced me to the world of data structures. That's when everything clicked, and I got pretty far (though, the forum doesn't exist anymore... It was pretty buggy by the end, but it was a ton of fun to work on).

After that, I started college. At that point, it was my introduction to imperative and object-oriented programming, particularly to Java. I learned a lot about data structures, classes, and functions here, and eventually about pointers and references in my most recent semester with C++. My first semester, I had a friend in Purdue's CS program, so I convinced him to give me the lab assignments from their intro to programming course. No surprise there: it was a lot more advanced than my school's, but I learned there too and had fun with the assignments, about scalars and how to create a Sudoku program, and a couple others too, I think. Maybe I'm just cynical, liking coding and all, but if you can have fun on your own time doing assignments that you may not even need to do, it can be helpful and you might learn a new trick. 

I am going to try to paraphrase one of the questions from a practice exam that I had in my Computer Science 1 course.

Create a class, OTPCypher, which has two constructors, and at least two methods. One constructor should have no arguments and default the one time pad key to 'A' and the other constructor should take one argument which is to be the key. One method should be called encrypt and takes a single argument, a message to be encrypted with the cypher. This is accomplished by adding the numerical value of each letter of the message with the next letter of the cypher and then returns the encrypted message in a string. Another method should be called decrypt and basically undo what you did in the encrypt method.

We had to work with upper case letters and handle any lower case letters in the passed messages. We also had to handle the case where the key + the message goes past the alphabet and needs to wrap around in order to make sense.

 

That is after a semester's worth of work. Does that sound about right as far as general progress goes? We had a lot of time in class where we didn't actually learn anything, and we didn't have much homework to learn outside of class either, so we could have accomplished much more, but oh well.

i started with HTML, not really programming but it got me into computers and made me want to learn more. when i got to high school, they had a basic C++ class that i took, and i was quickly ahead of the rest of the class because i wanted to learn how to do it. after that i started working with C# for GUI applications but that didnt get very far. by that time i was about to graduate high school. then i went to uni where i am now and properly learned how to handle GUI applications, albeit in java. but i can go back to C# now and do pretty well. so mix of on my own and in classroom environment.

i have nights where i will stay up just working on code because i enjoy it. my csci professors ask me why i dont do my homework and i tell them you are giving me the wrong kind of homework. give me a math problem that will take me two minutes, and i wont do it. give me a programming assignment that will take me two hours, i will spend double that amount of time on it because thats what i enjoy doing.

Yeah, I can sympathize. I had a new professor for my third-level programming class this semester, and three out of the seven labs we had were submitting text file answers to questions he posted, usually about material we had covered (data structures, sorting).

I need to start learning to delegate my own coding projects. I don't even have any programming classes next semester. :/

I'm currently taking my first C++ course in college and apparently I'm pretty good at it since my professor asked me if I had worked as a programmer before. The only problem is that we're moving at a fairly slow pace (which is not unusual, I'm going to be an electrical engineer by the end of this and not a programmer) but I like it so far. I also don't know exactly what I'm doing all the time (why is it better to use int main instead of void main, why do we initiate a random number like that, etc.), but by the end of every project I know why my program works the way it does which is the most important thing right now.

Apparently proper documentation is really important if you're beginning a new project, we are urged to make a flowchart of our own algorithm before we even start coding. Maybe that could help you? You don't even need to know how exactly you will code every little bit of it, you can just think of a solution for the problem first.

creating MS-DOS batch files& Neverwinter Nights modding.

if your pretty fluent in java, you can always contribute to this project of mine XD https://github.com/rockking1379/MailroomRewrite the college i go to actually uses this software daily to track packages on campus. probably has something wrong or could use some cool feature that i havent thought of

"Teacher" is quite often a misnomer. I typically find it better to think of teachers as navigators: they show you the way, but you have to take on the journey alone. Teachers can show you a bunch of things that you may find interesting, but you're on your own exploring them.

This also leads to a pretty important thing (which is true for programming as well as many other things in life): unless you care to spend your own time on learning stuff, you're not going to get very good at it. Whether it's drawing, writing or programming, you've got to put thousands of hours into it to become truly great. Talent (if it exists) helps, but will take you only that far. You've got to tackle progressively more complex projects for literally hundreds of hours to even have a slight idea where the road ends.

And even then you'll be very much off the mark. ;) But at least you'll gain the ability to understand what's there left to understand. Before the (it's arbitrary, I know) 500h mark you won't really even know how hard certain things are. But somewhere around 200h mark you'll fool yourself into thinking that everything is simple and you can school other people and tell them what's right and what isn't. Dunning-Kruger effect takes its toll. :P

So, basically, invest more time if you want to code. Do stuff outside of what's required from you or at least do assignments twice. I'm not kidding. The second time you do something, it'll take you half the time thanks to everything you've learned along the way. And it will be better too. And you'll like the result more. And this is crucial to get motivation to move forward. :)

As for the original question - I started when I was 6yo and got C64 from my parents. I was typing in some samples from a book on Basic and modifying them to see what changes it introduced (book was in German which I didn't know back then). I even had a shot at assembly on the good old Commodore. :)

When I transitioned to PC I started with Pascal, then Delphi. Finally I moved to C, but by that time I've already clocked around 2000 hours writing code, had one commercial app released, yet I was still around 17yo. And i'm not really bragging - a lot of people I work with (or used to work with) eat me alive with their devotion to the subject matter. From then on I've been using a mixture of C, C#, PHP, Python and JavaScript in my professional life - depending on what's required of me.

So, yeah, work more. :P This is the only way to get good at something. :)

1 Like

Someone bought me this book.  I had to learn x86/asm to make sense of it.  Been a systems nerd ever since.

It's been 3 months since I've been really introduced to programming and I still feel like I know nothing.

It's been a good 20 years and I still feel like I don't know anything.  Get used to the feeling.


I'm taking a traditional class at my High School.  We learn Visual Basic then we move on to Java and C++.  My teacher is pretty good.  I actually learn things and I find the class interesting.  It is an hour a day and I started in September.  I'm about to make a Yahtzee game if that is any indication of how much i have learned.  I feel my Yahtzee game will be pretty easy to code.

the realm of programming...never stops changing and has so much information about it that you cant possibly know everything about it. so instead we opt to know nothing about it. oh but how i enjoy it

I've mostly learned by tinkering around and doing small scripts here and there. Programming full blown systems/programs rarely interest me enough to do them on my spare time since in most cases you end up doing routine code (=coding that is not challenging or interesting) so mostly I just do something I haven't done before. :P