Hey I'm trying to start learning programming but i am having a hell of a time starting. Is there a correct pathway to starting the adventure that is programming?
16 26 Jul 2015 03:46 by u/harddrive
Advice, a solid answer, Anything to help my life moving in the programming direction would be great. I am beginning online classes at itt tech for NSA soon. but starting asap would be the best for my career. So again please help me and thank you!
35 comments
5 u/roznak 26 Jul 2015 04:07
In software there is no correct path. There are always multiple paths and none will be correct.
The key things as a good developer will be:
0 u/whisky_cat 26 Jul 2015 20:08
That's a bit brief when describing a good developer. But I agree there's a million paths and none are correct. If OP wonders what makes a good developer, here's a couple extra resources.
Sure they're kinda mainstream but I spared the comprehensive stuff since OP is a beginner.
0 u/roznak 26 Jul 2015 21:40
That is so true. Time after time I see analyst and project mangers come up with yet another hype word and they actually think that that will safe the project. It didn't save it last time and the new hype words are not going to save the new project.
3 u/Acerebral 26 Jul 2015 05:00
Best advice: skip ITT. You are better off taking free courses at coursera. I would provide link but Voat is being buggy on my phone.
Coursera offers basic to advanced coding classes, as does codeacademy. Go to community college or find a University that offers a distance learning program if you need a degree.
Also, prepare yourself for a couple shitty jobs if you don't go the 4-year university route. Unless you attend a university that attracts recruiters, you will end up with your first job or two being crappy before you build the knowledge and reputation to apply to a place like the NSA.
Whatever you do, skip the for-profit universities. You will be unable to get a job interview with them on your resume.
0 u/whisky_cat 26 Jul 2015 20:11
A caveat, if you do go to for-profit universities – which I did, like an idiot – you can still be successful but the college experience will be just that. An experience that is hardly relevant to entering the workforce. I got a job right out of college by spending a lot of time on my portfolio after college and having killer interview skills by doing mock interviews. Also freelancing for dirt cheap to get that needed experience to land an entry-level job.
2 u/tame 26 Jul 2015 06:51
Figure out your motivation. You'll never get far if you just want "to program" without any real goal in sight. Why do you want to program? What do you want to build?
Get a grip of the basic concepts. Programming is like mathematics, in that every step builds from the last step. Start out with simple procedural programming - there are many suitable languages, I'd suggest starting with C (if you have access to a Linux machine) or Javascript (there are some great tutorials that run just in your web browser), and then moving on to either C++ or .NET. Other people will suggest starting with Python, Java or similar more 'modern' languages but IMO these languages require you to understand a lot of pretty advanced concepts in order to properly know what's going on.
Don't put too much store in coursework. Pick a project and work on it. When you're done, think about what went well, what didn't go well. Which bits of your project are solid and reliable, which bits make you feel a bit uneasy. Go back and fix up anything that you're not happy with. Spend some time polishing your project. Then pick another project and work on that. Don't be afraid to fail - the only way to fail at programming is by giving up. The internet has an almost unlimited amount of knowledge readily available if you need it.
If you want project ideas, once you're past the Javascript tutorial phase I'd suggest a series of small apps and games:
Soon you'll have project ideas popping into your head all the time. The hard bit will be choosing which ones to do!
1 u/Master_Foo 26 Jul 2015 07:15
Drop ITT
Register for your community college's Python course instead.
Join the local programming meetup / club.
Start solving Project Euler problems.
5 u/wagesj45 26 Jul 2015 07:42
I've always thought starting with high level languages like Python is the wrong way to go. I think it is much more beneficial to start with simple C programs, or even bare and basic assembly, so you can start off learning what your computer is actually doing. Having this fundamental understanding of what the chip does really helps shape your world view when you start moving to other, higher level languages.
If all the nitty gritty is abstracted away right from the beginning, you never get a chance to learn the nitty gritty.
2 u/Master_Foo 26 Jul 2015 08:02
OP said he wants to learn Programming, he didn't specifically say he wants to learn Computer Science. There is a significant difference between the two professions. I'm just recommending Python because it's the easiest general purpose language.
The problem with the "starting low level" approach is that it requires a level of knowledge / skill / theory a newbie just does not have.
Assembly is archaic and a strong foundation of Computer Science theory is a prerequisite to understanding what is going on. Also the barrier to entry is high in that the student needs to learn how to use the tools first before he can actually start programming.
The idea with starting with Python is the student can learn what a IF statement is TODAY with minimal barrier to entry. These concepts are pretty much universal. If and when OP needs to move on to other languages, he can.
Learning low language concepts is a good goal, but it might not ever be necessary. Probably wont ever be necessary for 99% of developers. This is something that should be worked toward as a goal, not a starting point.
0 u/wagesj45 26 Jul 2015 20:33
Learning the IF conditonal is a terrible idea if the programmer doesn't know where the whole idea of an IF statement comes from. It's easy to forget but the conventions we accept as normal in programming exist because of the way the machine physically works. I've had to clean up a lot of code because previous programmers knew how to do something, but not why you do it. For better or worse, you need to start at the bottom. Programmers that start at the top are the bane of my existence because they almost always are the ones that are the most confident and the ones that most need cleaning up after.
0 u/Master_Foo 26 Jul 2015 21:40
I'd agree with you if the guy was writing Kernels, or Drivers. But the world wont end if the guy holds off on learning Assembly for a few months. Nothing he is doing requires that skill. He can acquire that skill IF and WHEN he needs it.
Don't hire a level 0 newbie to do level 9 work. If that's what you are doing, you have only yourself to blame.
Once again, Don't hire a level 0 newbie to do level 9 work. If that's what you are doing, you have only yourself to blame.
0 u/goronmon 27 Jul 2015 15:29
I think this is for a good reason. Without context, knowing the nitty gritty details of computer science isn't going to be easy or even really helpful. The reason its almost universally suggested to start with higher level language is that, at the beginning, the most important thing is to get a new programmer thinking like a programmer. Overwhelming them with low level complexities (again, without any context as to why the information matters) is a good way to discourage people early.
1 u/wagesj45 26 Jul 2015 07:40
First of, no to ITT Tech. Just no. Find a good state university with degrees in information technologies or software engineering.
Second, I wrote an article a while back on my website that discussed my thoughts on what is the best way to learn programming skills.
tl;dr - Start with a low level language, learn the basics of what your machine is actually doing under the hood, then branch out from there.
1 u/snowfragrance 26 Jul 2015 08:16
If you want to be a programmer, start programming. This is one field where you can absolutely teach yourself. The career is in high-demand and employers are looking for tangible skills and experiences over college degrees. A college degree is still a great thing, but I think it is a small piece of the pie. It takes a certain personality, passion and dedication to make it as a programmer. The career is not just about programming, but involves many unique challenges. The best way to find out if you want to be a programmer is to program. The best way to learn how to program is to program. The best way to get a job programming is to program first. Get out there, explore, and have fun!
1 u/GoddammitMrNoodle 26 Jul 2015 15:44
Every time this question comes up my response is always the same: You don't learn how to program; you learn how to solve problems.
IOW unless you have a particular problem -- AKA project -- in mind you'll never learn how to program.
The Towers of Hanoi is a good one to start with. Or research the many sorting algorithms and pick one of them to implement. These are relatively easy projects but require you to learn the basics of variables, operators, and input/output to implement them. And from there you build on your skills with more complex projects.
Otherwise just trying to learn syntax is a waste of time.
Being a programmer is also about picking which set of tools -- language, platform, etc -- is the best for the job at hand, but that comes later. So to start off pick a problem and a language and off you go.
1 u/Childermass 26 Jul 2015 19:40
Personally I find what you're asking to be the hardest part of programming. Once you can pretty much do anything, what the heck do you do? Best answers I've seen is pick something you're already interested in, find a way to start programming. Or, you can find an open source project, join the community, and learn through your contributions there.
I work with tech (but not specifically application dev,) so I try to script little things, or write small programs to help track daily tasks or whatever. Programming is an endless bottomless pit, so you have to have an outside interest to attach it to or you can just spall around forever picking up bits and pieces and never actually accomplishing anything.
0 u/Dadosaurus 26 Jul 2015 06:22
For me, as a visual learner, the best way to learn programming was through video games because there's so much instant payoff. There are thousands of thorough tutorials on game programming for flash or unity, and they teach you the basics pretty fast. My Advice is to get unity (free) and see if you can get a box to move when you click the mouse button. Anybody with any minimal level if tenacity ought to be able to figure out how to do that with only free online resources in a weekend. Then you move on to creating and destroying boxes depending on where you click and let your enthusiasm drive you. Once you can look at code without it looking like Sanskrit, you can leverage that knowledge to accelerate your path towards whatever sub-discipline or career path you like.
0 u/Craftkorb 26 Jul 2015 12:52
I hope you know that you're help spying on billions of innocent people, violating their rights. I hope you know that by doing this, you help killing probably innocent people through drones. I hope that it makes you feel better to know that you're doing nothing good. Only thing I'd applaud you for is leaking more stuff.
Edit: Turns out OP meant Network Security Administrator, not the agency. Everythings fine.
1 u/whisky_cat 26 Jul 2015 20:14
Turns out OP meant Network Security Administrator... yea I interpreted it wrong too, and it's amusing.
0 u/Craftkorb 26 Jul 2015 20:24
Thanks for the heads up, updated my comment.
0 u/awrk 26 Jul 2015 14:22
Is nobody going to recommend K & R?
https://en.wikipedia.org/wiki/K%26R
0 u/Knifemare 26 Jul 2015 16:42
Sift through /v/moocs , /v/programming. Read as much as you can, take basic courses of c,c++,python,html,css. The main thing about coding or programming is, when you feel your good at something or you finally know it, try to do do something out of your comfort zone, you then will realize that there is much more to be learned. Never assume your on top in any language. Coding and programming is a long never ending process, new tech,apps,programs, ect. whatever you want to call it will always be advancing. I would also recommend learning different OS (operating systems) windows,linux,mac,android, open sources. Good luck - from Knifemare
0 u/ShadowKitten 26 Jul 2015 20:51
I'd start with learning the object oriented language of your choice. When I want to learn a new language I do 3 things
Pick an IDE
Find a tutorial
Read through the standard library documentation for that language.
Also brush up on math and try to hop into learning about algorithms before you take a course on it. That's one of the classes that many people drop out because of.
0 u/goronmon 27 Jul 2015 15:34
Personally, I would start out with some form of web development. Just learning some basic HTML/CSS/Javascript to start gives you a flexible and useful experience with technologies that are extremely common in our current situation. Not to mention a basic website is a great environment for trying things and seeing an immediate result.
0 u/TigrisMorte 27 Jul 2015 23:12
http://www.w3schools.com/
start at the top and work your way down. ignore specialty or proprietary languages. flash is dead HTML, CSS, and Javascript (nothing to do with Java) are used in virtually everything you touch just my .02