Sorry, I know this isn’t exactly a dev question, but how do I make a project without a tutorial? I know how to make functional code that does simple things, or to solve a problem/question. But nw I want to try to make some projects to add to my portfolio. I’ve found websites with different ideas, and I can find some tutorials, but what if I don’t have a tutorial? Like, what do I do if I want to make something from scratch myself?

  • sloppy_diffuser@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    9 days ago

    If you knew how to start, you wouldn’t be learning anything. So, you are learning. What do you want to learn about as you learn how to architect and develop some software? Web, databases, 3d rendering, gaming, etc.

    Chances are you are going to need a framework, library, or many of both. You’ll be learning those too.

    Back to architecture. Once you have an idea of what you want to build, we want to get something running fast. Because whats going to happen is you are going to make bad decisions. Lot’s of them and that’s good! You want to fail so many times you learn what not to do, how to debug to keep things moving forward, etc.

    So start with a hello world. Serve a webpage. Connect to a database. Draw a square. Then add another and another.

    There is some quote out there that the difference between a beginner and master is the master spent X,000 hours failing. At the end of the day its just time spent learning.

    You may start over. You may switch tech stacks. You maybe give up when something more interesting comes along.

    90% of my personal projects never get completed. I’m usually learning a tool. If I’m reasonably able to use a new tool I’ve learned something. Become really good at learning. Learn to read code. Learn to read type signatures. Learn how the tools you learn work. Learn how to make them do things they were not meant to do. Learn your build system. Learn to setup linting, document your project, setup CI/CD, and so on.

    For reference I’m in my 40s. Started coding at 13. Work R&D and greenfield projects for the same fortune 100 for almost 2 decades. Done everything from web, data pipelines, network code, integrated firmware, etc. As you skill up it gets easier. My team usually picks up a new stack every project as I level them up just to expose them to different things.

    • 3rr4tt1c@programming.devOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      8 days ago

      This is both encouraging and scary. Not getting stuff right just intensifies my imposter syndrome when it comes to programming. But I understand what you mean. Just have to keep trying things and learn from my mistakes.

      • sloppy_diffuser@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        8 days ago

        100% the same boat when I started! I actually deleted a paragraph that said when I was young I wanted to learn how to do things the right way. You eventually learn there is no right way us devs will agree upon. You won’t have opinions on the better way until you’ve done it an objectively bad way.

        Reading code helps with this. I’m always looking at my library’s and framework’s implementations. Half my dependencies I swear I patch to make them “better” (subjectively).

  • magic_lobster_party@fedia.io
    link
    fedilink
    arrow-up
    5
    ·
    9 days ago

    Start small. Solve one piece of the problem at a time. The project will grow over time.

    For example, say you want to make a GUI app. The steps might be:

    1. Show an empty window
    2. Add some text
    3. Add a button
    4. Make the button do something
    5. Add another button
    6. Etc

    For each step you might need to follow a guide or a tutorial.

    Don’t worry if you do any step wrong. You can always make it right later. Nobody is designing the perfect software on the first go. It’s better to have something than nothing.

    Don’t worry if you need tutorials, documentation or examples on the way. Everybody needs to use some reference. I recommend to start following a tutorial (e.g. how to make a GUI app), and use it as a starting point for the rest of the project. Go off track from the tutorial and explore on your own.

  • cannon_annon88@lemmy.today
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    1
    ·
    9 days ago

    People will probably want to kill me for suggesting it, but if you are not sure where to start, this is a great use for AI. You can bounce your ideas off of it, and it can help you put together a plan to build out your project.

    I have to do this because I have a hard time conceptualizing things when I’m staring at a blank page. I don’t know where to start, so it helps.

    • Bane_Killgrind@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      4
      ·
      9 days ago

      Yes, you will be threatened with death.

      The classic answer is, do research and try to find existing projects that fulfill similar functions. Learn the jargon and functional features in the space that you want to create a solution for. So what do you want to make? What exists that is similar? Why are these solutions falling short?

  • modernangel@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    ·
    9 days ago

    I made a PHP blog engine as a proof of basic relational database design, CRUD, UI and middleware concepts. I still use it, haven’t changed the code in 14 years.

  • degen@midwest.social
    link
    fedilink
    English
    arrow-up
    3
    ·
    9 days ago

    Still tutorials, kind of. Also looking at existing software. A lot of what you learn in development comes from the things you analyze or do yourself, but I don’t know if anything can beat random tutorials for project setup and boilerplate. And RTFM as always.

  • Redkey@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    9 days ago

    I presume that you have at least some vague idea of what you want your program to do. If not, maybe a good random writing prompt generator can help.

    But if you do have something in mind, I usually start by thinking about how I’m going to store my data. That goes hand-in-hand with thinking about how to break up the top-level tasks into individual functions and sub-functions. Those two processes tend to feed into each other, and before I’m aware of it, I’ve got a basic framework hammered out, at least in my notes.