jaguarundi's avatar

How do you map out your projects?

My overall Question TLDR: How do you guys plan out your projects? My dayjob is a QA Tester using C# with Selenium. .. and though i sit in on some of the design meetings, most of it is done by project managers or the devs as they work. I'm finishing up my first real full stack self-made application using Laravel, and VueJs. My work kind of went like this:

  1. I sketched some roles, permissions, and objects, and what i want the app to do.
  2. set priority of completing stuff: list of Need to have, Nice to have, (mvc product kind of thing).
  3. Made a few Migrations,
  4. Stubbed out the Controller with stuff i wanted ( maybe 30% complete)
  5. Worked on Front End
  6. Make Controller Work
  7. Revise Front End, Revise Controller, Edit the Model, Edit separate model to play nice with current model, update the controller again. Realize the properties are way confusing, so i rename some of them.....
  8. repeat step 7 for each feature until complete.
  9. Host Site.
  10. TODO Make last improvements
  11. TODO Show Site to Client( or myself)
  12. TODO Make final changes and move on to next project.

An improvement i made to my process is:

  1. To get passed step 7 I kind of stopped revising, and started adding //TODO so i could move on to the next thing. I figured if its actually necessary i can go back later. .. even if I need to get re-acquainted with the feature.
  2. Started tracking work completed daily on spreadsheet as well as goals i wanted to complete for the day and week. Then i just dove right in knocking stuff off the checklist. (some checklist items were high level, others were very detailed with many steps to be checked off.)

i guess i am kind of lost on the best way to start my next project as I finish this one up. Do you actually map out every entity relationship? How do you handle revisions? As well as parts of the project that you are lets say less than 90% sure how to implement. In what order do you work designing API, database, front end etc. I guess I am talking about Self Directed Projects with no one to report too. Though i am being payed a small sum for the current site, It's for my sister in law and more of learning project for me. She gave me a few things she wants but I want the site to be as NICE as a junior can make. And the next project is also a payed project but more complicated and I would love to cut down on the back and forth work. But also think mapping everything out is a waste of time as I may change it anyhow.

0 likes
2 replies
LaryAI's avatar
Level 58

Planning and mapping out a project is a crucial step in the development process, and it can vary greatly from one developer to another. Here's a general approach that you might find helpful for your future projects:

  1. Requirements Gathering:

    • Start by thoroughly understanding the project requirements. This includes both functional requirements (what the app should do) and non-functional requirements (how the app should perform).
    • For self-directed projects, you may need to play the role of both the client and the developer, which means you should try to define the scope as clearly as possible.
  2. Project Breakdown:

    • Break down the project into smaller, manageable tasks. This can be done by creating user stories or feature lists.
    • Prioritize these tasks into categories like "Must Have," "Should Have," "Could Have," and "Won't Have" (MoSCoW method).
  3. Wireframing and Design:

    • Sketch out wireframes for your application's user interface. This doesn't have to be high-fidelity; simple sketches to understand the flow and layout are sufficient.
    • Decide on the design system or UI framework you'll use to maintain consistency across the app.
  4. Entity Relationship Diagram (ERD):

    • Map out the entity relationships if your application will be data-driven. This helps in understanding how your database should be structured.
    • Tools like Lucidchart, dbdiagram.io, or even pen and paper can be used for this step.
  5. Technology Stack:

    • Choose the technologies, frameworks, and tools you'll use based on the project requirements and your own familiarity.
  6. API Design:

    • Design your API endpoints if your application will have a backend. Define the routes, request/response formats, and consider using API documentation tools like Swagger.
  7. Database Design:

    • Based on your ERD, create the database schema. Start with migrations to define the tables and relationships.
  8. Backend Development:

    • Develop the backend logic, starting with the most critical features. Implement the models, controllers, and services needed to handle the API requests.
  9. Frontend Development:

    • Begin with a static version of the UI, then progressively integrate it with the backend.
    • Use version control (like Git) to manage changes and enable going back to previous states if necessary.
  10. Testing:

    • Write tests for both the backend and frontend. This could be unit tests, integration tests, and end-to-end tests.
    • Manual testing is also important to catch any usability issues.
  11. Revisions and Refactoring:

    • As you develop, you'll inevitably need to make revisions. Use // TODO comments sparingly and schedule regular times to address them.
    • Refactor code for better readability and maintainability as you go, rather than leaving it all until the end.
  12. Deployment:

    • Once you're satisfied with the development, deploy your application to a production environment.
    • Use continuous integration/continuous deployment (CI/CD) pipelines if possible to streamline this process.
  13. Feedback and Iteration:

    • Show the project to your client or users and gather feedback.
    • Iterate on the feedback, making improvements and adjustments as needed.

Remember, this is a flexible guideline and not a strict rulebook. The key is to find a balance between planning and adaptability. Over-planning can be just as detrimental as under-planning, so be prepared to adjust your plans as you learn more about the project's needs. It's also important to document your decisions and changes as you go, which will help in maintaining and scaling the project in the future.

jaguarundi's avatar

okay The bot is helpful, but i am really wondering what real people think about when planning. And what open source or free tools are used if any.

Please or to participate in this conversation.