ALERT!
Click here to register with a few steps and explore all our cool stuff we have to offer!

Jump to content



Photo

[GUIDE] Becoming a Good Programmer


  • Please log in to reply
[GUIDE] Becoming a Good Programmer

#81

User1010101
User1010101
    Offline
    0
    Rep
    0
    Likes

    Member

Posts: 72
Threads: 1
Joined: Jun 25, 2020
Credits: 0
Four years registered
#81

Good tips man


  • 0

#82

ragnar1809
ragnar1809
    Offline
    0
    Rep
    0
    Likes

    New Member

Posts: 21
Threads: 0
Joined: Oct 11, 2020
Credits: 0
Four years registered
#82

wow thanks


  • 0

#83

optanee
optanee
    Offline
    0
    Rep
    2
    Likes

    Addicted

Posts: 196
Threads: 4
Joined: Mar 25, 2020
Credits: 0

Four years registered
#83

respect!


  • 0

#84

Hattik
Hattik
    Offline
    0
    Rep
    2
    Likes

    Member

  • PipPipPip
Posts: 70
Threads: 0
Joined: Apr 30, 2020
Credits: 0

Deal with caution
User has an open scam report.
Four years registered
#84

l love this kind of guide, let's do it


  • 0

#85

sadbezzyy
sadbezzyy
    Offline
    0
    Rep
    2
    Likes

    Member

Posts: 39
Threads: 3
Joined: Oct 03, 2020
Credits: 0
Four years registered
#85

thank you for posting this, I recently wanted to learn C# because a lot of tools I use / bought are coded in them. I want to try and make things that I will constantly use and or give out to the public! I hope I don't give up somewhere but im still looking around for ways to learn more things and get more knowledge on it!


  • 0

#86

muslim98
muslim98
    Offline
    1
    Rep
    8
    Likes

    Member

Posts: 56
Threads: 4
Joined: May 07, 2020
Credits: 0
Four years registered
#86

THANKS


  • 0

#87

Plauwh
Plauwh
    Offline
    0
    Rep
    1
    Likes

    Member

  • PipPipPip
Posts: 51
Threads: 0
Joined: Nov 18, 2019
Credits: 0

Five years registered
#87

thank you so so much! big ups!


  • 0

#88

Drking98
Drking98
    Offline
    0
    Rep
    0
    Likes

    Advanced Member

  • PipPipPipPip
Posts: 143
Threads: 0
Joined: Oct 26, 2020
Credits: 0

Four years registered
#88

 

Becoming a Good Programmer
Written by: @FaithHF & Released under the Creative Commons Attribution/NonCommercial/ShareAlike license (

Please Login or Register to see this Hidden Content

)

 

Intro:
 
So, despite the majority of this site being made up of leechers and those who have no intention of ever doing anything meaningful with their time, whether it be learning, creating, sharing or teaching, there are a few people on here who legitimately do. Some people like to just make a simple post like 'lol im learning python how long til i get good' and never return again. I'm not talking about those. I'm talking about those who ask questions, or those who have been slowly making progress towards their own projects. I'm talking about those who blaze through a book on programming and then have nowhere to go. These sorts of questions pop up all the time in the respective programming section based on the language, or will often end up in the misused reverse engineering discussion sections, but the point still stands that most of those questions either go unanswered or just clutter up the sections the the same responses.
 
This guide will aim to answer most of the Frequently Asked Questions once someone starts programming, ranging from projects, competency, time, and language. This is by no means a complete guide, and I encourage other users to contribute what they found helpful as well. This guide will not focus on a particular language, rather, I'll consider making threads for specific languages if the demand arises.
 
The license for this thread will not actively be enforced with legal action, since I really can't be fucked for time. That being said, quote large enough sections without attribution (using a quote BBCode tag with my name FaithHF counts enough as attribution) and you'll get reported wherever I see it.
 
I've added hide tags in most questions that explicitly have links. There are no direct downloads for books and courses, but I do mention places where I like to get things from for free. Use those sites at will and at your own risk.
 
So enough about that, and let's dig into it.
 
Starting Questions:
 
Before anyone starts programming, they need to run themselves through a few questions first.
 
Q: What language should I choose?
 
A (short): Any of them.
 
A (long): It really depends on what you're trying to make. Are you going to make a website? Maybe you're planning on making a game cheat. Perhaps you're just looking for something to make your life a little easier doing mundane tasks all day. Or you're planning on making some kind of malware and you really want to understand everything that a computer can do. That being said, all of the above tasks have some degree of a learning curve on top of a respective language. Since all programming languages tend to follow the same set of rules logically, learning one language will make it a hundred times easier to learn another language later on down the road, and switching around like that will take maybe a few hours, since you're just learning the syntax.
 
 
Q: So where can I learn about languages and their uses?
 
A: Google for  how to choose a language. There are tons of flowcharts available, and there are even more blog posts and articles from your favourite developers online about different languages and why they love them. But don't take someone's word for it. Go a little deeper: search for why certain languages are used over others in specific cases. If you don't understand the explanations, google the words you don't understand. Learn as much as you can, and eventually, once you found something cool, keep it in mind as your starting language.
 
 
Q: Where can I learn a programming language?
 
A (short): Anywhere you please.
 
A (long): You already know about books. You see them recommended to you on Amazon, or facebook ads, or anywhere else. You've probably scoured through YouTube tutorials, only to realize that 95% of them are 'taught' by Indians whom you can't understand, and that you can smell the curry through your screen. You've looked at Udemy and thought 'Wow! Cool, a full course that teaches me everything!' and then realized that you needed to pay at least 10-15$ to get access, and realizing you're broke, you ditched the idea. To put it simply, all the above mentioned places to learn will be teaching more or less the same thing. There's no 'best' option, it depends on how you learn. I personally can't understand thick Indian accents, and I don't like paying, so finding PDFs of programming books is the way for me to go. But maybe you're fluent in Hindi and hear the accent all day every day, so a YouTube tutorial will be fine. Who knows?
 
 
Q: Where do YOU find books?
A: That's a little personal, I don't claim to be some God-Gifted programmer like Terry Davis. That being said, I do have a few favourites:

If I can't find something for free, I generally just try to find something similar to learn from. LibGen has pretty much everything though, at least in older editions if not the absolute latest and greatest.
 
 
Q: What else do I need to start?
A: Your brain. In most beginner books (ie. beginner to pro, learn X in Y days, etc.) the book will walk you through any additional setup you need. All you need now is the dedication to the task.
 
 
Staying On Task:
 
I feel the need to include this section in paragraph form because IMO it's the one thing that always holds people back from actually getting anything done while learning to program, or what to do once they learn to program.
 
The easiest way to stay on task when learning is to have a goal in mind.
 
I don't mean 'My goal is to learn C# in 21 days, just like the title of this book!'
Think beyond that. Why are you learning to program? What are you trying to accomplish? Why are your choices thus far going to help with your goal?
 
While considering your language above, I mentioned that you should choose a language based on what you want to do. I hope you didn't answer with 'for the sake of learning programming, so I shall choose an easy language.' If you did, you've already failed and you'll never be a good programmer with that kind of mentality. I suggest you close this browser window and contemplate your life, and what made you this fucking stupid.
 
Maybe you answered with 'making a website!' That's cool. Now, we're going to break it down a lot more than that. What kind of website do you want to make? A social networking site? Maybe a dashboard for everything happening in your life? Maybe you have a revolutionary business idea and don't want to pay a programmer, so you're going to write it yourself. That's all fine too.
 
Take it another step further. What exactly is your site going to do? Generally, programs automate tasks that you can already do by hand, but would just be too lengthy, too repetitive, or just too boring for you to do yourself. So whatever you're planning on making, come up with a rough idea on how it'll work. If you're going to make a social network, then you'll need some basic functionality, like registration, logging in, maybe messages, or a way for people to post stuff. You're not just making a home page here.
 
 
Now that you have something in mind, keep it in mind while you're working on something. Maybe during your book chapters, youtube tutorials, or Udemy lessons, you'll realize that you're learning something that might be helpful. After each one of those lessons, take the time to think about where you can apply what you learned to your project. Maybe you learned about databases in your lesson, and you realize that you could store your user data for your social network in a database.
 
Each time you find something useful, write it down, along with where it can be used. Soon enough, those lines will be filling up, and you'll not only be motivated by the fact you're learning things, but also by the fact that you're getting closer to knowing what you need to know to accomplish your goal.
 
 
Now What?:
 
Congratulations! You made it through your course/book/tutorial series! And now that you've actually sat down to try and work on your project, you think that you don't know anything, or that nothing that you learned could be applied anywhere.
 
Take the sheet you've been writing on out. You have been taking notes already about how you can apply things. Surely, at the end of your big course/book there was some sort of final project that was decently sized. You already sort of know how to organize things. Don't sweat functionality too much, just focus on making trivial things work. Set up that database, and make some code that stores data in that database. Once you get that working, add something else to it, like the ability to take in user input like a username and password. Work your way up from the absolute basic parts of the program.
 
Q: All the tutorials teach the same thing! Where do I learn useful stuff?
A: Even now you're realizing that what I said about all materials being the same. The only way to go from here is to practice things on your own. That project helped with your motivation, so now try to put things together and make it happen, even if it is really basic.
 
Q: Where do I find more problems to practice with?
A: I have a few favourites:
If all else fails, just read more books and once those books give you an exercise, solve it before reading onwards for the solution.
 
Q: Project Euler is too hard and I can't figure out how to do Fibonacci sequences! Where can I learn?
A: Like I said, Euler is very math heavy. That means lots of logic and algorithms to get you the right output. So, start learning about algorithms and math. My favourites are
 
Q: Wow, those are some cool books! But I still can't come up with solutions to the problems they pose without looking at the solutions pages. Now what?
A: Your mindset is wrong. Especially the Udemy course, it's not particularly difficult as long as you have competency in the language. Most of the problems in the course can be solved in 50 lines of code or less (in C++ at that, including whitespace between functions, methods, structures, etc.) At this rate, the best book I can recommend is It doesn't just go over problems, but it also covers how to tackle problems, break them down, and come up with new ways to think about the problems in order to solve them. Get through this book and you'll be sure to start being able to work through something. Take another whack at Euler.
 
Q: Algorithms are cool and all, but I still don't know what a fibonacci sequence is?
A: You need math now. Sorry, can't help you here. The easiest way is to just take a few math courses in uni, or do pre-calc in summer school or something. You can get textbooks online at the above mentioned sites, though, if you want to try learning it on your own. Also be sure to check your library's science section; there will usually be a few books on highschool/first-year uni level math/calc/linear algebra there.

 

 

 

Doing More:

 

So you're able to solve lots of different problems now. You can come up with solutions to do cool computations and are actually gaining some competence. But now, you're stuck on doing some other task which is a little more abstract. Maybe you're trying to write an actual user-interface for a program, instead of your black/white terminal. Or perhaps you're trying to make one program interact with another. This is where libraries and APIs come handy.

 

Q: I'm trying to make some web requests and do stuff with the internet. How?

A: Have a look at networking. You'll learn about packets, protocols, routing and more. Once you understand it theoretically, you can start working with it with some tutorials. Search for a library that does something like sending a web request for you, and learn how you can get the data. Then apply your algorithm knowledge above to make your program do something with the data.

 

Q: How can I make cool interfaces for my C/C++ programs?

A: Again, search for frameworks or libraries that do just this. You'll probably need to do a lot more learning, though, even as far as another language, like XML, QML, or even just simple HTML for web applications (the Electron Javascript Framework does this.) Practice makes perfect.

 

Q: I'm trying to do X! How?

A: You already see the pattern here. Google for a framework that does it. Maybe search stackoverflow for solutions on how people have done it. Eventually, you'll come across something and you'll be able to take it and use it for your projects.

 

Eventually, you'll have a nice toolbox that you can use to get most tasks done. Take it another step further, though. Have a look at the code for those libraries and frameworks, and understand how they work. It might be daunting, especially with something as big as Qt or something that's closed source, or uses some other low-level commands. You might need to really use all of your brain power just to understand what's going on, especially when they use other low-level libraries like the WinAPI/Linux API to draw things on the screen. It's tough, but understanding will make you much better, since you'll understand why things break and how you can stop them from breaking.

 

Once you understand the functions, try to rewrite them yourself. It'll be basic and it's unlikely you'll ever actually use your own code for other projects here, but again, your understanding will deepen and you'll get even better as a programmer.

 

 

Conclusion:

 

As mentioned in the intro, this is by no means a complete guide or list on things to do to make you an amazing programmer. There are way too many fields in programming and development to write a be-all/end-all guide, but this should be enough of a launchpad for you to bounce off of and finally make use of your time, switch around your mindset, and gain enough competence programming to actually come up with some great programs. Have a look at GitHub and other open-source projects in your spare time, and understand how they work.

 

If there is demand for other guides of this style, I'll try to write something up. No guarantees, since they're pretty time-consuming and I'm not particularly fluent in all fields of development, but I can certainly apply these subjects more specifically to other languages and fields.

 

good


  • 0

#89

kovipeti12
kovipeti12
    Offline
    0
    Rep
    0
    Likes

    New Member

Posts: 13
Threads: 2
Joined: Jul 29, 2019
Credits: 0
Five years registered
#89

Thank you for sharing.
I just want to start.


  • 0

#90

ZTX100
ZTX100
    Offline
    0
    Rep
    12
    Likes

    Junkie

Posts: 272
Threads: 13
Joined: Apr 05, 2018
Credits: 0
Six years registered
#90

i'm stuck at the tutorial GAVE !! thanks for this though


  • 0

IF you love me help me <3 with some BTC : 3J2hJBB4ig1bZdT819YMm2KFHkeTwaDpRj



 Users browsing this thread: