8 Replies - 715 Views - Last Post: 18 October 2020 - 10:52 AM

#1 random Goose   User is offline

  • D.I.C Head

Reputation: 1
  • View blog
  • Posts: 74
  • Joined: 07-August 20

How to smoothly start creating a “big” project?

Posted 14 October 2020 - 03:44 PM

So, I found that last 1-2 years after I get back to programming, all things written by me is ~50-120 lines of code (of toys\experiments), and I want to learn how to write\design a bigger things. Don't want to search projects on git to participate, as one always have(naturally) more interest in own ideas.

I want to ask kind, handsome and experienced people from here for advice\approval of my plan on this adventure. :bigsmile:
I decided what minimal features program is going to have (kept number of them as small as possible) and noted them all in a text file. (Like: 1. Calculate the density from given values, 2. Calc. surface area. 3.Save results to .txt file.. and so on.) All libraries that I will need is chosen.

Is that all what generally needed? Or I need think-thru as detailed as possible, like -all structures, relationships, individual functions, even draw some UML schemes on paper? Again I don't know. People's comments on that all over the place!, I don't really like to rewrite things from scratch or read book on software development strategies(only if its absolutely necessary, - I have to many books on the list already). Or that's is how things generally done - via improvisation? Or specific literature is required, to not catch some bad habits\wrong ideas?
(The program will perform a number of primitive engineering calculations with a very simple graphical interface (with FLTK))

*Please, forgive my English, I'm from old Europe-land.
**and if this kind of question is asked, I'm very sorry please give me a link.(Not very good at searching things in English, yet.)

This post has been edited by random Goose: 14 October 2020 - 03:48 PM


Is This A Good Question/Topic? 0
  • +

Replies To: How to smoothly start creating a “big” project?

#2 modi123_1   User is offline

  • Suitor #2
  • member icon



Reputation: 15927
  • View blog
  • Posts: 63,731
  • Joined: 12-June 08

Re: How to smoothly start creating a “big” project?

Posted 14 October 2020 - 05:38 PM

Quote

Or I need think-thru as detailed as possible, like -all structures, relationships, individual functions, even draw some UML schemes on paper?

Yes, I would advocate be as thorough as you need to be.

If the project is complex enough then diagrams maybe helpful. Certainly listing out relationships, data structures, data needs, gui designs, user interactions, etc ahead of time helps you keep focus and check off milestones and requirements when completed. It definitely helps define when the app is 'done'.

I would advocate if you want to get an in depth look at some end to end coverage then yes, a software dev and design book maybe chucked on your pile to get to.
Was This Post Helpful? 1
  • +
  • -

#3 ben255   User is offline

  • D.I.C Addict

Reputation: 46
  • View blog
  • Posts: 562
  • Joined: 09-September 13

Re: How to smoothly start creating a “big” project?

Posted 14 October 2020 - 06:45 PM

I only use class diagrams and use cases. I dont do super detailed class diagrams with all methods and attributes planned out, just classes and their relationships and add methods if i can think of any during planning. Use cases are very good for breaking down high level requirements into smaller chuncks.
Was This Post Helpful? 0
  • +
  • -

#4 Radius Nightly   User is offline

  • D.I.C Regular

Reputation: 74
  • View blog
  • Posts: 419
  • Joined: 07-May 15

Re: How to smoothly start creating a “big” project?

Posted 14 October 2020 - 07:16 PM

Jumping from 100 lines to 10000 lines sounds a lot, but thats not something big, so first you must have idea what you wanna make, analyze it and see if its a really big project.
Some things may be too much complex, and you will need to keep track with paper and pencil, or UML, maybe a sketch, some information, but most things are complex enough for your brain to handle it, and usually its in chunks. Analyzing it for a longer period of time and preparing, thinking and planing, are big successful before you even start the project. Today you may think how good the plan is, tomorrow you may find out that something have to be moved, something removed and something added, the next day, who knows.
The more you think about the project and analyzing it, the more aware of the project you will be, the more questions you seek in details, like how it will work, how would i make it, can i do it in that way or another, the more answers you got, the more chance thats gonna be successful in the end, because if you dont plan it, you may stuck in future at some point, rethinking the whole project or affected things, changing the plan that went wrong, and possibly abandoning the project, because sometimes its easier to start a whole new project then fixing a bad one. While planing, its also wise to do some "100" lines test to see if you can even make something in question, with experience you will know right away if you can do some detail, if you dont know, test it on time.
For example, if you wanna make a multimedia player, it may have a big and complex code, with lots of APIs, but it can be simple enough to skip some preparations, moving directly to GUI, coding in chunks for example some codec may be complex, but its chunk for itself. With a lots of time coding, point is to make it expandable in future, to think several steps forward, so it can be prepared for other things that will come, and you may not see the progress, you can lose interest in the project as time goes, but all you have to know, each thing you do, you are making the progress, maybe its not a big one, but its progressing for sure.
If you think about a really big project that looks like a maze on paper thats really hard to keep track, then yeah, planing can take a serious time before project even starts.
Was This Post Helpful? 1
  • +
  • -

#5 jon.kiparsky   User is offline

  • Beginner
  • member icon


Reputation: 12076
  • View blog
  • Posts: 20,477
  • Joined: 19-March 11

Re: How to smoothly start creating a “big” project?

Posted 14 October 2020 - 09:55 PM

Once you get past simple "programming challenge" code, you have to be able to put on the product manager's hat. The most important questions about a project that's designed for people to use are product questions, not code questions, so start by asking product questions.

Quote

The program will perform a number of primitive engineering calculations with a very simple graphical interface


Okay, that's a place to start from. Start asking questions: what sorts of calculations? What does the interface look like? What is it like to use it? What do you want people to enjoy about it? What brings people to this tool? What is the user trying to accomplish?

Above all else, do not spend a moment's thought on code at this point. Your only concern at this phase is to envision something that you want to build, and to envision it so beautifully that it's worth the trouble it'll take to build it.

Once it's beautiful, you can start thinking about making it real, but until it's beautiful it's not worth it.
Was This Post Helpful? 2
  • +
  • -

#6 random Goose   User is offline

  • D.I.C Head

Reputation: 1
  • View blog
  • Posts: 74
  • Joined: 07-August 20

Re: How to smoothly start creating a “big” project?

Posted 17 October 2020 - 07:28 AM

For now amount information that I need to absorb, prevents me from writing anything for ~2-3 month.
Nevertheless I would really like to write something from time to time, maybe even only for ~30min-1 hour a day...
What if I try to rewrite\re-implement some(small >1K lines) old project (from C to C++ ) made by some other person?
Is that will be a good learning exercise? Are people doing things like that at all? Is that something advisable to do? Or such exercise, that I came up with, is utterly useless and it will be better if one keep his all focus on absorbing information for now?
Thank you most kindly.

This post has been edited by random Goose: 17 October 2020 - 07:29 AM

Was This Post Helpful? 0
  • +
  • -

#7 modi123_1   User is offline

  • Suitor #2
  • member icon



Reputation: 15927
  • View blog
  • Posts: 63,731
  • Joined: 12-June 08

Re: How to smoothly start creating a “big” project?

Posted 17 October 2020 - 09:20 AM

Quote

For now amount information that I need to absorb, prevents me from writing anything for ~2-3 month.

Why would that prevent you from planning? That's part of the planning is to find knowledge gaps, circle them writing "thar be dragons here", and come back to research them when you get to that phase of the project.

Maybe keep a notebook and jot down ideas to circle back to later. Maybe work on a project design far enough you can have some small milestones to work on at 30 minutes a time and come back later.


Quote

What if I try to rewrite\re-implement some(small >1K lines) old project (from C to C++ ) made by some other person?
Is that will be a good learning exercise?


Do you feel you would do the implementation different, apply new concepts, or design? If so then sure - go ahead.


Quote

and it will be better if one keep his all focus on absorbing information for now?

How do you get to Carnegie Hall? Practice, practice, practice. If you put off writing code for a never ending 'absorb' phase then you really are not practicing.

If your problem is finding ideas, and you are not used to looking around your world and seeing them, perhaps try 'code katas'.
http://codekata.com/
Was This Post Helpful? 1
  • +
  • -

#8 ndc85430   User is online

  • I think you'll find it's "Dr"
  • member icon

Reputation: 1050
  • View blog
  • Posts: 4,014
  • Joined: 13-June 14

Re: How to smoothly start creating a “big” project?

Posted 17 October 2020 - 10:26 AM

After breaking down the work into features and doing some broad brush architecture work (e.g. figuring out what kind of persistence is needed, what other systems will need to be involved, etc.), I tend to start implementing a feature by writing a test. More and more pieces of functionality are implemented by first writing tests and so the design emerges out of this test-driven development process.

This post has been edited by ndc85430: 17 October 2020 - 11:25 PM

Was This Post Helpful? 2
  • +
  • -

#9 Martyr2   User is offline

  • Programming Theoretician
  • member icon

Reputation: 5559
  • View blog
  • Posts: 14,569
  • Joined: 18-April 07

Re: How to smoothly start creating a “big” project?

Posted 18 October 2020 - 10:52 AM

Well obviously how you plan the project depends on several factors. For instance, is the project a desktop app or a web project? Another might be the technologies you use. A project in C# might be a bit different than one in Python.

But no matter what the project is and how big it might be, these recommendations have served me well...

1) Plan out the general ideas, features and core relationships... but don't go overboard. There is such a thing as over planning. You want to have a guide, not an itinerary.
2) Start as small as you possibly can to get the features in place and working. It is much easier to grow some code base than going big, not finishing or being forced to cut out a bunch of things you find you never needed to start.
3) Think in units and try to keep the file structure to match those units. What I mean by this is try to keep one class per file. Be very specific with those files and try to avoid as much as you can (I know it is almost impossible) to NOT have some misc dumping ground for code. I usually create one utility style file for odd functions or utility code that just doesn't seem to fit anywhere else. But if you find this file growing large, you are doing something wrong.
4) Think generically and as decoupled as possible. Meaning, always keep in the back of your mind that a class you write might be something you want to use in another project. It should be able to be ripped out and dropped as is into another project and it work. This serves two purposes... First it will allow you the flexibility to change out files, enhance files or refactor without it cascading too far in your project. Second, if the project fails and you never finish it, at least you have code you can part out and use in other projects for either work or experiment projects.

If you follow some of these ideas, you will be able to tackle pretty much any size of projects. With these fundamental rules I have scaled projects up into hundreds of thousands of lines of code without an issue.

If you want to know the single most important tip of these, I would recommend the start small and grow the project out. This means even limit the number of features you role out for version 1. You can always add your other features in later versions. Rolling out even small feature sets will help with your motivation to keep going too.

I hope you find these useful. :)
Was This Post Helpful? 2
  • +
  • -

Page 1 of 1