I do not know what to do next

Results 1 to 6 of 6
  1. #1
    Newbie derLeo is offline
    MemberRank
    Sep 2016 Join Date
    GermanyLocation
    3Posts

    I do not know what to do next

    Hello, I am very frustrated.

    Before I started programming, I always knew how things worked in theory, but very bad.
    I knew that there were if statements, loops, arrays, functions and classes, I knew that they where there, I knew how they worked but never did something on my own.

    2 years ago I finally started to get into programming by coding by myself. I was already bored by all those Tutorials because I already knew the most stuff but just not the Syntax.
    In this two years I did not even learn anything. I know about if, else, while, for and arrays and I am able to do some simple stuff with them.

    In 2019 I started to learn the basics of Python and after a long break I jumped over to Java in October 2020 for about 2 days.
    Then did some stuff with Arduino because of school and in December 2020 I started to learn some basics of HTML and CSS because I thought that could be helpful sometimes.
    Now I also picked up PHP in January 2021 and I am now able to Select and Insert Stuff with mysqli.

    And I am not very happy with that progress.
    I have the same knowledge like 2 years ago but I know it in different Syntaxes.
    I finally want to stick with something and get deeper into it but I do not know what language I should choose and how I should proceed. I also never learned anything about frameworks, plugins, etc.
    I only know Arrays, Conditional Statements and Loops.

    I have daily access to a computer since I am 6 years old (now I am 18), and I also used the computer almost daily.
    I am very interested and I really want to learn more but I just need something that will help me to get further.
    Now as I learned only a bit of PHP I planned to do a project but it would be nothing but just reading stuff out of a database and putting new stuff in.
    Its not what I want to do, because I do not feel like it will help me.
    I also think about learning a new language like C# or picking another one up again like Python or Java. Or should I learn Javascript with NodeJS and all those Frameworks?

    I am just very confused and even after looking up many things (Where do you need which languages, Who is responsible for what, etc. I just do not know where to go on. I know I don't want to be a webdesigner. I want to really program something.
    But what?
    And how?
    What language?
    And how the hell do I get better, and not just do some fucking boring login system with php or boring passwordgenerator with python???
    Last edited by derLeo; 18-01-21 at 02:41 AM.


  2. #2
    Ultimate Member Flipend0 is offline
    MemberRank
    Dec 2016 Join Date
    163Posts

    Re: I do not know what to do next

    It honestly sounds like you need a project to do. From what I'm gathering you've been mostly been coding by yourself. Essentially you'll want to share your coding abilities to multiple people, so long as they do the same back.

    As for languages, here's a good start.

    You'll use PHP when you want to develop backend websites, HTML for frontend
    MySQL/MSSQL for database queries, again this is mostly backend.
    Python or Java are very useful to make beginner tools. Tools are essential to make your tasks easier whenever possible.
    If you already know Python or Java, take C#. You'll most likely enjoy C# a lot if you like crafting tools or GUI programs in general.
    Overall, C++ is the go to language for all things alike, but this area is very wide spread.

    I think a better question to ask is, what do **you** want to do? You're in a MMO Dev forums, I assume you want to get into MMO development, do you have a game that you like? Perhaps you'll want to put in your coding abilities in that game if possible.
    Passionate x86 Reverse Engineer for Anime MMO games only.
    The only person in MMOExtra with a brain.
    Current Projects : MabiPro, Awakened DNF,
    Audition Galaxy (WIP), TalesWeaver (WIP)

  3. #3
    Newbie derLeo is offline
    MemberRank
    Sep 2016 Join Date
    GermanyLocation
    3Posts

    Re: I do not know what to do next

    Quote Originally Posted by Flipend0 View Post
    I think a better question to ask is, what do **you** want to do? You're in a MMO Dev forums, I assume you want to get into MMO development, do you have a game that you like? Perhaps you'll want to put in your coding abilities in that game if possible.
    Well I just knew that maybe here are some people that could help me. I am registered here because I wanted to look at Habbo Stuff 4,5 years ago.
    As I said I looked at many things and tried out a few languages but yes, I also think that I need a project to work on.

  4. #4
    Newbie gotoheaven is offline
    MemberRank
    Feb 2021 Join Date
    4Posts

    Re: I do not know what to do next

    Quote Originally Posted by derLeo View Post
    Well I just knew that maybe here are some people that could help me. I am registered here because I wanted to look at Habbo Stuff 4,5 years ago.
    As I said I looked at many things and tried out a few languages but yes, I also think that I need a project to work on.


    Why don't we code our own game inspired by habbo?

    That way we would have to learn server-side languages as well as frontend languages.

  5. #5
    Member muxum is offline
    MemberRank
    May 2005 Join Date
    cyberspaceLocation
    61Posts

    Re: I do not know what to do next

    programming like with most skills is about having "tools" in your "toolbelt". the progamming language(s) you know is also just one of those tools and is just the tip of the iceberg.


    # motivation:
    make a (simple) game: https://gamefromscratch.com/ -> Game Engine By Language
    solve a problem one has like automating a task
    curiosity
    ...

    the difference between doing some programming or doing something else. a concrete problem also helps with limiting what one needs to learn next and making it simpler to remember since it is connected to each other. otherwise one dabbles in many things and remembers little after a while.

    often the problem one has when starting with programming as a hobby is knowing what is out there. at least knowing what it is about and maybe some experience with it. this will be useful if one does go deeper into the subject in the future.

    when you do not have a teacher finding out what exists can be also done with books. look at least at the indexes of books and google about words/topics to find out more without buying hundreds of books.

    one should focus on one language for a while in order to gain some experience so that one has something to compare other stuff to later. dabbling into multiple languages is good to discover different ways of doing things. some languages have higher programming patterns added directly to the language. since nothing is truly exclusive to a language you can program everything in someway or another into any other language. an example is programm in an OOP way even in non OOP languages, if you are willing to write code a certain way. you just have to constantly remember that certain way since nothing provents you (or someone else) from doing it dfferently/wrongly. it is just not as easy and safe to use compared to native language features. however much more customizable since you made it yourself.


    # languages all programmers should know
    regular expressions (regex): this is like the swiss army knife for programmers when it comes to searching, exploring code and when refactoring code in ways beyond the capabilites of ones editor/IDE/tools


    # core programming structures
    loops, brachning/conditions, functions/procedures, ...

    learned with every language but with some differences depending on the language.


    # data structures
    arrays/lists, linked lists, hashtables, stack, queue, ...
    https://www.javatpoint.com/data-structure-tutorial
    https://www.geeksforgeeks.org/data-structures/
    https://www.tutorialspoint.com/data_...res_basics.htm
    https://www.c-sharpcorner.com/Upload...t-decouple-cl/
    ...

    programming ist mostly about data. the data that you need to work with decides often how you need to write your program to be efficient with computer resources and limitations (cpu, data size and transfer speeds). if you optimize your programs for the human(user/programmer) by having nice language patterns, that often costs efficiency in memory/cpu. this is because you need to translate between the human optimized layer and the machine optimized layer in your program. in the beginning one tends to think one can have both but you pretty much always have to compromize here for one or the other.


    # higher programming patterns (design patterns, ...)
    delegates/lambdas/clojures, proxy, factory, dependency injection/inversion of control, domain driven design(every problem has its own (programming) language), data driven design(external files configure internal program, change program behaviour without the need to recompile every time), data oriented design(cpu cache optimisations, SIMD asembly commands), modular desing/decoupling(divide and conquer), event systems, messaging systems, pull vs push, synchrone/asynchrone, prallel/concurrent/multithreading/coroutines/fibers, ORM(object relational mapping), AOP(aspect oriented programming), OOP(object oriented programming), entity systems, microservices, static(compile time) vs dynamic(runtime) programming, imperative vs/with functional, ...
    https://sourcemaking.com/design_patterns
    https://gameprogrammingpatterns.com/

    just like core programming structures these are helpful to understand programs faster or to have certain advantages. like not having to recompile the program to change it, easy to maintain source code, easy to merge changes on same code from many different programmers. but because of the may possibilities how these can be implement to be useful, they are often not part of the language itself.


    # automated testing
    junit(java), cunit(c++), ...

    automated testing for everything the compiler cannot check for you. the bigger the code is the more important auto tests become. especially when you want to change/refactor your code. manually testing everything just waste time. you dare not change something for the fear of breaking something. you avoid refactoring/improving code and your code becomes worse and worse to read,understand,bugfix and add new features.


    # build systems
    c++: cmake, make(old), ...
    java: gradle, maven(popular), ant(old)
    https://maven.apache.org/guides/intr...lifecycle.html
    ...

    automating common tasks to get your program in a runnable or installable state. like building/compiling, packaging, running automatic tests, deploying. each language tends to have at least some of these.


    # version control systems
    git, svn(old), cvs(very old), ...

    useful to try out ideas or finding code changes. a must when working together with other programmers for merging different code changes together.


    # editors: IDE(input device environment), programmable editors: visual studio code,emacs,vim,textmate,sublime text,...
    eclipse, intellij, visual studio, ...

    https://www.eclipse.org/downloads/packages/ free open source IDE for some languages: java, c++, php,
    https://www.jetbrains.com/ many ide/tools/extentions for different languages, some free some not

    having a good IDE is often underestimated. digging through documentation manually or pressing a shortcut to get what you want adds up very fast. one can save huge amounts of time and make things much easier with a good IDE. the ones specific to one language tend to be more powerful. but more and more of the major ones started to support multiple languages, therefore one is less forced to switch the IDE nowdays. there are also programmable editors that are highly customizable but they are usually more work to setup(choosing/install plugins etc), are not as well polished and less feature rich than IDEs. however for smaller edits or for smaller scripts/programs they can be much better as they usually load much faster. at least one PE and IDE depending on language(s) should be in ones toolbelt.


    # debugging (step through code one line/command at a time)
    learn to use the debugger for your language if it has one. the better IDEs support this more comfortably than in a console window. consider learning some assembly if you use languages thar are close to the metal like c/c++.


    # compilers/transpiler/interpreters/virtual machines(byte code, java vm)/code generators/code parsers
    ANTLR, bison+yacc, truffle(graalvm)

    (rough) steps: lexing, parsing, AST(abstract syntax tree), compiling, linking, assembly, ...

    creating your own language can make programming in a certain domain much easier. even without a separate domain specific language (DSL), code is always a mix of several domain language with the main language. DSL are used for scripting, querying or just for helpful short expressions(regex) that do something or describe data in a better way. these are much easier to read, write, find or teach because they are not heavily intertwined with your main language. a separate DSL allows to check/prevent wrong ways of use. also just some simple code generators can ease ones life and save a lot of time in the future, not needing to change many lines by hand which is more likely to have mistakes.


    # project management
    kanban, agile, v-model, ...

    trello.com (kanban)

    even just some (kanban) organisational skills can go a long way in saving time and reaching goals. a must when working together with others.


    # self health management
    like with everything managing oneself is also important.
    - set reachable goals so you wont give up or go suicidal, there are limits to how hardcore one can be
    - doing a little often instead of much at once is easier to handle since you have enough pauses to recuperate, it might cost you overall more time if switching what you are doing takes long. but the longer the pause the more one forgets
    - take care of your health. sitting in front of a screen can mess up your body more than one might think. sit correctly and change your sitting position from time to time, have the screen at the right distance and angle, choose colors for programs that you feel comfortable with watching for hours, move your hands enough so you wont get problems with your fingers/wrists/shoulders/...



    and there is much much more depending on what domain one programs for, most of this can be learned without programming knowledge. examples for domain specific knowledge: AI,audio,visual 2D/3D,...
    Last edited by muxum; 08-02-21 at 01:38 PM. Reason: added debugging, better wording/mistypes

  6. #6
    Newbie gotoheaven is offline
    MemberRank
    Feb 2021 Join Date
    4Posts

    Re: I do not know what to do next

    Quote Originally Posted by muxum View Post
    programming like with most skills is about having "tools" in your "toolbelt". the progamming language(s) you know is also just one of those tools and is just the tip of the iceberg....
    I have to say thanks to this post! You have really hit it on point! You actually inspired me to write a blog article on how to learn to program.

    I would be honoured to join up with anyone who wants to learn programming and wants to write code for a game or app of some sort.



Advertisement