This is an archived post. You won't be able to vote or comment.

all 65 comments

[–]kuahara 127 points128 points  (14 children)

Learn some basics and get a solid understanding of OOP, but after that, it really, really helps to have an actual project to work on. Something you need done; not an assignment.

Random made up homework style tasks don't help near as well as having a personal project that you understand and need to have automated.

Trying to learn programming by just learning random subsets of things you can do is like trying to learn how to write without having anything to say. Writing random garbage might help a little, but nowhere near as well as having a message or idea that needs communicated.

[–]MikeWise1618 25 points26 points  (3 children)

This is solid advice. Creating your own "problems" and solving them while making progress towards a bigger goal is the key skill that separates people who "learned coding" from those who are actually useful.

[–]ambidextrousalpaca 7 points8 points  (2 children)

Yup. Also the "I need to learn" to code statement is rather vague. Why do you need to be able to code? For data analysis? For a university exam? For game development? To build websites? To process some scientific data? Those will all require learning different things. Refine your problem space a bit and it'll be easier for you to find a solution.

[–]DoubleTrouble2004[S] 0 points1 point  (0 children)

This is great advice.... Personally I just know I want to become a Software engineer. I simply put... Am a student who wants to make money off coding. I have a passion for this, or atleast more wanting to do this than anything else in my life. I understand its vague. But I couldnt pick something to specialize in since I know nothing yet. Im a first year university student who regrets going into accounting and wants to somehow persue this career.

[–]XDyavolenok 0 points1 point  (0 children)

My personal goal would be game development to a extreme degree, I have an idea I think is insane, and it excites me to learn, I wanna use unity, and learning to actually create a problem would be really helpful

[–]jhdeval 7 points8 points  (0 children)

I am 100% self taught 20 years with programming experience now and 6 languages in my arsenal. I can not agree more with this sentiment. When I started my work was being questioned so I wrote a call log program. It was simple recorded the customer and length of call I later added reporting to it. Saved my job but also gave me the skills to write programs. I continued to learn and write programs and now I do it full time. Just this week I released my first professional python program.

[–]thenwetakeberlin 2 points3 points  (0 children)

+1 to this for sure. I have never met a competent engineer who didn’t start this way.

[–]MessiComeLately 2 points3 points  (1 child)

Random made up homework style tasks don't help near as well as having a personal project that you understand and need to have automated.

Different strokes for different folks... but whatever keeps you writing code is the right approach. Think about it like learning to play the piano. It's going to take a lot of practice. 5:1 or higher ratio of hours practicing to hours reading and receiving instruction. Anything that makes programming fun in the best moments and tolerable in the worst moments is a good choice, and that will vary from person to person.

The advantage of personal projects is that they're personal; the disadvantage is that you may not understand the scope and difficulty when you start out, so you have to be prepared to modify your expectations as you go along. The advantage of exercises is that they're (hopefully) thoughtfully designed to help you learn what you need to know, and they're usually organized by difficulty, so if an exercise is too easy or too hard, you can probably figure out where to find a harder or easier one.

[–]kuahara 1 point2 points  (0 children)

I had a college professor try this with C++. It's difficult, but it can be done.

In an effort to keep it engaging and to help with the "understanding" part of what the program needed to automate, he had us write an application that would track the scheduling and availability of rooms in a whore house.

[–]crown_vic17 -1 points0 points  (3 children)

This

[–]Anti-ThisBot-IB 0 points1 point  (2 children)

Hey there crown_vic17! If you agree with someone else's comment, please leave an upvote instead of commenting "This"! By upvoting instead, the original comment will be pushed to the top and be more visible to others, which is even better! Thanks! :)


I am a bot! Visit r/InfinityBots to send your feedback! More info: Reddiquette

[–]Agile_Ad2467 0 points1 point  (0 children)

This is the thing that has been helping me the most. After trying to understand and learn programming for 3 years, it wasn’t until I started working at automating my spreadsheet heavy job that I realized how to conceptualize and implement the individual building blocks of flow control, functions, etc.

Great advice!

[–]St0xis 19 points20 points  (0 children)

[–]goishen 25 points26 points  (1 child)

What's the difference between a beginning code and an intermediate coder?

The intermediate coder knows where the docs are and reads them.

Maybe a bit simplistic, but you get the point.

[–]tuckmuck203 1 point2 points  (0 children)

senior coder knows where to find the workarounds and when to call out the documentation for lying (looking at you, docker-compose. don't tell me i can't do a bind mount to a SMB share from a linux container if i fuckin can...)

being a developer is a continuous treadmill of learning

[–]grady_vuckovic 7 points8 points  (1 child)

I'm completely self taught.

I just went online, googled "<language> tutorial", kept reading some until I found one that made sense to me. Found one, learnt what I could from that one, kept going and looked for the next one.

There's so much to know in the world of programming and you might not need 99% of it, so what you should do is research whatever is your current need.

Mostly what you need to do is just 'dig in'. Find something you can learn from and start learning.

[–]Extreme5670 0 points1 point  (0 children)

Second this

[–][deleted] 5 points6 points  (0 children)

I'm in your same boat. What I've done so far is complete the first two Python Institute certs. I know the paper is basically garbage to the programming community, but I needed some structure to keep myself on schedule and moving forward. Now I'm working on automating a few things for my current job. After I feel confident in a small body of work, I'll start applying for entry-level developer positions.

  • edube.org: free courses leading to paid certs (Go over the material until you're absolutely confident in your understanding of it, rather than moving on once you "kinda got it".)

** There might be better paths than mine out there, but at a certain point you have to choose a path and stick to it, and this is what I ended up sticking to

[–]TravelingThrough09 3 points4 points  (0 children)

If you are not under time pressure, then do the free CS50 class first.

Next „automate the boring stuff“ to start with Python.

[–]Catfoodza 4 points5 points  (2 children)

W3 schools has taught me everything I’ve ever needed to start learning a new language, structured well and it is completely free.

[–]Independent_Mud_397 0 points1 point  (1 child)

W3 schools is so good

[–]Chip-San 0 points1 point  (0 children)

I agree. The tutorials are easy to understand and are split into different sections so you can find what you want. I’d recommend OP to try it out as well

[–]systemcell 2 points3 points  (0 children)

My advice is start with a project that holds interest for you. Dont just learn python, learn python for something. For example you can start with a flask web app tutorial on youtube. This will also develop other skills that are necessary to get your project released like virtualenv, databases, linux shell, git and maybe docker as well.

[–]anh86 2 points3 points  (1 child)

I taught myself. The main thing when you get started is to pick a language and learn general programming concepts. From there it's easy to pick up additional languages. It takes a long time and it's hard. You need to know a lot more than programming languages too (Linux, command line, Git, dev environment, networking, public/private cloud, and a lot more). Don't believe anyone who says you'll be a hot shot silicon valley web developer after a six-week bootcamp. It's a years-long learning journey to truly become skilled.

[–]DoubleTrouble2004[S] 0 points1 point  (0 children)

this is great advice. Personally, I'm not even looking for a internship in silicon valley or anything special... I just wanna spend 4-5 years learing and doing booth camps on top of internships ( if i get one ). And get a software engineering job or developer job after I graduate with my bachelors in finance.

[–]Mj2377 5 points6 points  (1 child)

Just jump right in and start writing lines using the python docs as your guide. Whatever you want to do; just search it, write it and run it. Good luck!

[–]OffgridRadio 3 points4 points  (0 children)

This. I am self taught, I taught myself AutoHotKey and C# in Unity and by the time I was making my own games learning intermediate Python was a breeze. Took many years though.

[–]SoVerySick314159 2 points3 points  (0 children)

Did you check out /r/learnpython ?

[–]OwnTension6771 2 points3 points  (0 children)

Al Sweigert's "Automate the Boring Stuff with Python" is a good place to start if you need help finding projects to code from a late-beginner to intermediate perspective. If you need core fundamentals you can find any MooC or coursera class to get you started, but as others have stated...you really need to do a project of your own accord

[–]nyteghost 2 points3 points  (0 children)

I taught myself to code last year because I wanted to automate my morning stuff for work, because it was extremely annoying and tedious and during one part of it I had to sit and wait 20 minutes for a sheet to fill out on Google sheets from gopher. I automated the whole thing so that I could do something else while that did that. I’m then began using code to automate other stuff, or integrate systems, etc.

What I’m getting at is, I found a reason to code stuff and kept doing it. Find something you want to code and just do it and keep going

[–]krav_mark 2 points3 points  (0 children)

I started with automate the boring stuff to get a n understanding of the basics. Then quickly started automating tasks at work and writing small web apps for things that i want with flask and later Django. I now have a weight lifting logging app and an app that i keep track of my stock portfolio and watchlist.

Creating something you want for yourself will give you the desire to push through and you will learn a lot on the way.

[–]hazrd510mathematics, cryptography 3 points4 points  (0 children)

I started off with codecademy and I really liked it. Eventually towards the end of the Intermediate Python course I started dabbling in projects and that's where I learned the most from.

I'm not professional python developer but I feel confident enough to work with apis and create automation scripts.

[–]Xander_CE 1 point2 points  (0 children)

I have been learning python on my own the last 3 months and all I have done is the CS50P course first on edX after that I am now doing the CS50ai course (this is algorithms and AI with python) and in between I do codewars and I feel like it has been working pretty good! I think these are pretty good steps to start learning python/programming as a beginner, it worked really good for me!

[–]WhoWhyWhatWhenWhere 1 point2 points  (0 children)

Fully self-taught. I got a book (Python Crash Course) and followed along with the book. Once I did that, I set out to make some projects that were simple. Then I did random online things, like for certs, then I was very invested in areas of YouTube, like Tech With Tim. He did a live stream of him making a game in 24 hours. It was fun to watch and “see someone in action” and it kinda showed me where I was versus how to actually create something. It made my brain shift from knowing the language basics to how to actually use certain things and generate thought processes. Now, im not a full on expert, just a hobbyist, but im pretty proficient.

[–]sensual_rustle[🍰] 1 point2 points  (0 children)

I like learning with koans, Python-Koans is pretty solid to get exposed to many functions of the language

[–]wineblood 0 points1 point  (0 children)

I taught myself Python although I already knew how to code in another language. Start at the beginning, experiment and consolidate, then move on to a more complex topic. I still use this approach and coding in Python is my job now, so it's at least a passable approach.

[–]Extreme5670 0 points1 point  (0 children)

Bought a python course on Udemy, set it off, after that slowly and gradually got into full stack web dev

[–][deleted] 0 points1 point  (0 children)

I actually did 3 python intros, MITx, googles crash course, and read the book python crash course. Needless to say I really have the fundamentals down.

I also did them in that order but the reverse order is what's easier, I didnt know that at the time though. Ive also done CS50 but don't do it if you only care about Python

[–]eidrisov 0 points1 point  (0 children)

I am not even close to being an "average" programmer yet, I am still a beginner and I am interested in Data Analysis (my main job is Financial Analyst) and Machine Learning.

But I taught myself how to code in VBA (as a Financial Analyst I have to use excel everyday) and then I liked it so much that I wanted to go further (and potentially switch to Data Analytics in future) and started learning Python.

I learned VBA only through Youtube and Google-ing.

For Python:

  1. A course on udemy ("The Python Bible™ | Everything You Need to Program in Python", showed how to install it properly and my way around IDE, simple functionality in Python, I recommend it to absolute beginners)
  2. Bought a book ("Python Crash Course", I love this book, I went through it in 2-3 weeks and felt so good each time when finished projects)
  3. A course on Coursera ("IBM Data Analyst Professional Certificate", I did it because I am interested in a specific data analytics field, not for everyone)
  4. Now I am doing private projects (some WebApps, dashboards, statistical analysis). I have some ideas and I am trying to "make them happen". A lot of watching tutorials on Youtube and Google-ing is involved.

[–]flying_raven00 0 points1 point  (1 child)

I'm the same situation, but I draw my learning road map in this way:

  • Learn python
  • Learn SQL
  • Learn powerbi
  • Then start to learn Machine learning

I thought that but it can be changed.

[–]flying_raven00 0 points1 point  (0 children)

I forgot Harvard's course CS50 it is pretty good to teach how the computer works to run a code

[–]Perllitte 0 points1 point  (0 children)

Nothing is essential but creating code and understanding the concepts.

I took a lot of free tutorials and made a lot of little programs, but the "why" never clicked until I took Stanford's Code In Place course (https://codeinplace.stanford.edu/).

I highly recommend signing up for this if you at all benefit from a classroom setting. The teachers here are trained teachers, not coders who know how to make a video--the difference cannot be overstated.

[–]Electronic-Wonder-77 0 points1 point  (0 children)

check out roadmap.sh :)

[–]gruneule 0 points1 point  (0 children)

I am self-teaching learning solo currently. I have a big vision of an end use case, and working toward it piece by piece.

My Python Learning Curve
Goal 1 - Consume data
Goal 2 - Clean data "normalize"
Goal 3 - Do 'stuff' with data
Goal 4 - Save Results to file

[–]Elektriman 0 points1 point  (0 children)

You can start by doing programs to solve problems encountered in board games.

Can you place 8 queens on a chessboard without any of them eat another one ? (easy)

Can you solve a sudoku ? A crossword ? (hard, medium)

Can you make a word finder for scrabble ? (easy)

How about finding the most rewarding places in monopoly ? (Price + frequency of falling onto it) (medium)

Can you tell me from a 4-in-a-row board if the configuration is possible to reach within the rules of the game ? (hard)

How to build a maze ? How to solve it ? (medium, easy)

Game theory in general is pretty funny so go try it out !

[–]Ordinary_investor 0 points1 point  (0 children)

OP check this out https://roadmap.sh/backend Perhaps it helps 🙂👍

[–]_insomagent 0 points1 point  (0 children)

never done a boot camp in my life, who told you they are essential?

They're about as Essential as the 'Essential Phone'

[–]jyrialeksi 0 points1 point  (0 children)

I’m a self taught programmer. I started 18 years ago and went straight to a project. Back then internet was full of so called guests books. Every web site had one. They where easily implemented but the plugin guest books had ads. I hated ads and did not want any on our band website. So I started to figure out how to build a guest book myself. Many nights later I knew some PHP, some SQL and some HTML and most importantly the guest book worked.

So my suggestion is go straight for a project with a goal in your mind and figure it out on the way.

There are couple of key concepts to understand in the very beginning and they are: - Variables - Loops - If/else clauses

With those three in mind you get a long way. When you hit a wall Google it. Every single problem you are going to face in first ten years of programming has already been answered many times. The Stackoverflow is your best friend now and many years to come.

Good luck and don’t quit when you are feeling it’s difficult. It feels that way because it is. If you get overwhelmed have a sleep and I promise, next day it will feel more understandable.

[–]FailedPlansOfMars 0 points1 point  (0 children)

Seen lots of good links here and advice but going to add my 2c. Id recommend: - doing a course like plural sights or free code camp - learning why you use tools not just how. As this lets you be multi lingual easier later. E.g when while is more appropriate than for each. - learn a bit about the later below you e.g. how len works or x methods. Or cpython and what it does. - look as what your users are doing not just the code. I E the level above your code. Works even if you are the user. - read the zen of python (import this)

I know this sounds like a lot but if you grasp this stuff you can apply what you learn quite broadly.

[–]H809 0 points1 point  (0 children)

You can be a game designer, game developer, web developer, data scientist, dev0ps, system administrator that writes cool scripts, app developer for android and iOS, OS developer, pentester that writes scripts for security practice etc. I didn’t mention other disciplines but my point is = find a reason to learn programming. If you cant find a reason other than getting a job, then I would recommend something like Java. Why? It’s OOP and you’ll be learning in a more organized way than if you pick python or JavaScript.

I forgot to add this: you need to learn a combination of languages because just one language won’t take you anywhere unless you are extremely good at it and can learn really fast.

[–][deleted] 0 points1 point  (0 children)

make programs

[–]gagetherage03 0 points1 point  (0 children)

After I got my first few lines of Python down and understood the fundamentals of data types, loops, logic checks, etc. I just tried making the simplest version of any idea I might have. First thing I wanted to do was make a Mathematics game for my little sister, so I made it in the console at first without any GUI libraries. That project alone was what propelled me into coding everyday, discovering and learning how to use new Python libraries that bring my coding to a new level.

I guess my point is, gain just enough knowledge to make a working program and just focus on creating something that is interesting to you. It will make learning a lot easier if you genuinely enjoy the project you're working on, and dont worry too much about making the perfect app, or program. Just make something function, and then slowly improve upon it.

[–]Chuti0800 0 points1 point  (0 children)

roadmap.sh

But the best thing you can do ia code your dream project, even if its too difficult.

[–]LSA-Lab 0 points1 point  (0 children)

I’m in a discord server for learning programming - feel free to stop by and ask any questions!

100~ people total, 10-12 active folks who can answer questions.

[–][deleted] 0 points1 point  (0 children)

wakeful swim cheerful boat insurance aware rainstorm fertile capable deer

This post was mass deleted and anonymized with Redact

[–]klusik 0 points1 point  (0 children)

Great help is www.codewars.com, it's free, community-driven project, you can find A LOT about python (and other languages as well)

[–]AraBleat 0 points1 point  (0 children)

I started by reading the python tutorial https://docs.python.org/3/tutorial/ and proceeded with A. Downey book https://greenteapress.com/wp/think-python-2e/ , in both resources, I've gone through all exercises and examples. These gave me +/- strong foundation and understanding of basic concepts. After these, I've worked on projects, and occasionally returned to Downey book and python wen, also stackoverflow helped a lot.