Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

My Advice To Newer Programmers

Mathematical

Silver Coder
(Note: There is a formatting error in this for some reason that won't go away. Please, just ignore it).

I'm writing this as a guide for newer programmers, who may not have a clue on what to do or learn next. Of course, it can also apply to people who've been programming for sometime now. But the main audience is aimed at newer programmers. And as a result of that, newer programmers, I suggest that you read carefully through this. Don't be afraid to ask questions at the end either.

Now first of all, let me tell you that there is more to programming than you think. In fact, programming only makes up a piece of computer-science. So, don't just learn programming for the sake of programming. Invest time into the fields of computer-science that interest you. If you like strange messages, then invest time into learning cryptography and encryption. If you like getting more information about something and then pass that data around, perhaps invest time into learning about databases. There's so much to computer-science that you of course, cannot learn all of it, so set-out your path wisely. A good thing to do is put your focus on the thing that interests you the most, but at the same time, also invest time into other things that interest you - This is in the case that your current path goes awry.

My current focus has been on two paths: data-science and security. Although, I do like to study other fields such as game-development, AI, and software-development, in the case that the paths that I'm currently focusing on don't work out.

Next, is programming-languages. Programming simply isn't about programming-languages and no, you do not need to learn a language like Python all because it's the hip new trend among newer programmers(I myself have been programming for a few years now. I did learn Python but I don't even use it and actually hate it). Learning a new programming-language was something that I always thought I had to do, but I soon discovered that it wasn't. The thing is, every language is identical in one way or another as they all inherit from older languages like C. What you should also be learning alongside the languages, is also the paradigms. Object-Oriented, procedural, functional, are all different ways of defining a language by their features. It's useful to know how to differ a procedural-language from an OO language and not only that, but you should also understand what the core purpose of each paradigm is, how it's used, and when and where it's used. Another thing to learn and understand is compiling code. There are two ways of running code and that's by either running it through a language-interpreter or by compiling it into one big program. The thing is, both methods are different in terms of speed, reliability, output, and just the underlying architecture of them and how they're built.

Before in the past, again, I thought that to learn programming, you had to learn every single language but then again, I ditched that misconception. Instead, my plan now is learn a language for different paradigms, and different applications and uses. So:
  • C(Procedural) for many things including software, AI, and encryption, plus some other things.
  • Java(Object-Oriented + Multi-Paradigm) for primarily software and app-development, but also game-development, and in the case I begin working for banks(As many banks rely on Java for their systems).
  • Lua([Multi-Paradigm/b]) for scripting small applications, extending C programs, and for game-development.
    [*]R(Multi-Paradigm) for working with data.
    [*]SQL(Declarative) for working with databases.
    [*]Bash, a scripting-language for the GNU/Linux terminal. Used for automating commands(I've yet to actually start learning it though).


I'd suggest creating out a plan for what languages you're going to learn, primarily based on your focuses and paths at the time that you do create this plan. So, if you're wanting to work in game-development but are also focusing on web-development, then learn C#, C++, and perhaps Java, for game-development, then learn HTML, CSS, JS, PHP, and also consider Ruby, Python, and ASP.net, for web-development. You shouldn't focus on learning a language all because it's popular as in due time, these languages will be overthrown by other languages, and will even stop being used completely until the point that only legacy-systems use software built on these languages.

Lastly, is the tools that you use. Find tools that suit you and your needs best. What I mean by this, is don't get a copy and start using IntelliJ just because many other programmers prefer it for Java programming. Try out other tools such as Eclipse or Netbeans, or in the case of the text-editor wars, EMACS instead of Vim. I actually use Eclipse for all of my Java tasks, EMACS for anything related to C, and Nano for Lua. I simply use all of these tools because I find them better to work with. I struggle to adapt to and use IntelliJ's interface, I find Vim clunky to use(Especially with exiting), and Nano simply because I do nearly all of my programming work in the terminal. Again, same with the languages, don't learn and use it because it's the hot, steaming apple-pie lying at the windowsill. Experiment and use the tools that you can actually use and work with. The same goes for anything else, including compilers, APIs/frameworks/libraries, and version-control-systems(Although, regarding version-control-systems, once you get a job, it's highly likely you'll be using Git at it. Although, that doesn't stop you from using something else like SVN or Mercurial outside of work).

I hope this guide as helped everyone starting out on their programming-journey. As stated at the beginning, make sure that you have read through what I've said carefully, as it will be important before you continue further on in your journey. And again, don't be afraid to ask any questions. I will do my best to answer them.

Thank you for reading.
 
I agree that it is important to go into this industry for the right reasons. There are so many different concentrations that can make you money, bring you joy, and give you a place in the programming world. As you mentioned, there's cryptography and encryption, game development, web development, and so much more. Some people love learning programming languages and not using them. Others hate learning the language, but love using the languages once they learn. At the same time, some programmers will graduate to project management and never want to touch code again while other expert programmers who could easily manage an entire project will stick to coding because they love it. Some will become hackers, and others security experts. There are truly so many different directions people can go. However, across the board a passion, motivation, and drive needs to be there to succeed. Programming will love you back, and haunt you too - So many times I've seen my coding solutions earn my clients tons of money, and other times my code has led to catastrophic failures. Of course, this is all part of the challenge! Whatever you want to do, make sure you are doing it for the right reasons because it can take a long time to get really good at programming and some people may discover that they don't have a focus or they only did it to "earn money".
 
Ghost said:
Of course, this is all part of the challenge! Whatever you want to do, make sure you are doing it for the right reasons because it can take a long time to get really good at programming and some people may discover that they don't have a focus or they only did it to "earn money".
Programming is and always will be a challenge. There will never be that "perfect" codebase. There will never be that "perfect" programming-language, API, library, or framework. Nothing in programming is perfect, although that also adds to the challenge as everyone tries to perfect their software and tools.

Regarding people getting into programming just for the money, in my opinion, they're better off not getting into programming or any other part of CS for that matter. Because in computer-science, you're always going to be busy, writing code, calculating things, it's not like being a user of a program, lying back, and then letting the robot do everything for you. You're also expected to move fast in CS, as software, hardware, encryption-schemes etc. All come and go. If one is just going to be one of those people who do nothing and are simply there for the money, they're better off picking a career-path that isn't related to CS, and one they'll actually like.
 
Programming is and always will be a challenge. There will never be that "perfect" codebase. There will never be that "perfect" programming-language, API, library, or framework. Nothing in programming is perfect, although that also adds to the challenge as everyone tries to perfect their software and tools.

Regarding people getting into programming just for the money, in my opinion, they're better off not getting into programming or any other part of CS for that matter. Because in computer-science, you're always going to be busy, writing code, calculating things, it's not like being a user of a program, lying back, and then letting the robot do everything for you. You're also expected to move fast in CS, as software, hardware, encryption-schemes etc. All come and go. If one is just going to be one of those people who do nothing and are simply there for the money, they're better off picking a career-path that isn't related to CS, and one they'll actually like.
I completely agree, obviously.
You make some great points about how fast technology changes. The passion and the motivation to keep learning has to be there otherwise the tech field will leave you behind.
 

New Threads

Buy us a coffee!

Back
Top Bottom