What should I consider before starting bigger project? Tips/tools/techniques etc.

horacy

New member
May 13, 2018
2
0
0
Hello, I'm planning to start a new bigger project for a leraning purpose. I have some knowledge about Android programming, but I still consider myself as a beginner.

I don't have a whole image of the new project, I expect I'll be adding new features on the fly, because I can't predict everything before I have a basic functionality.

So I came up with an idea of making a sport/activity tracking app. The app will be very similar to Strava/Endomondo with some additional features and will lack some of them. So I am going to use geolocation API and some cloud database. The users will have a possibility to share they achivevments etc. Maybe I'll add something like nearby events for runners etc.

But I want to do it in the right, proper way. What does it mean? I want to plan, consider as much as I can before implementing. So I'm asking you, what will you recommend me? I mean it can be anything. Maybe what database will be good for that? Or some handy design pattern, or some API's, libraries etc. Should I use REST? Even though I may not use all of it, but hey, I want to be aware if something exists, maybe I will use it in the future. Learning is good.

The only thing I am sure about is that I am going to use Kotlin instead of Java. I've never been doing anything with Kotlin, but it's my decision to learn it.

I expect some nice discussion.
Thank you.
 
Hello, I'm planning to start a new bigger project for a leraning purpose. I have some knowledge about Android programming
That's the wrong way to start. The way most people do it, but the wrong way nevertheless.

Learn programming first. Learning a programming language or a programming environment isn't learning programming. Programming is analysis. You analyze the entire problem (if you haven't formulated the entire app yet, you have to do that before you start analyzing it - you have to have an idea of all the functionality before you start, or you'll be throwing out stuff you wrote and rewriting other stuff you wrote, and the project will take 5 times as long. (And be not even half as good.)

If you don't want to spend all the time needed (approximately 2 years - Teach Yourself Computer Science), at least lay out the entire project - on paper, not just ideas in your head. If you're going to be using a database, learn SQL - at least the basic CRUD functions (including Joins and Unions). Which database? MariaDB (what used to be called MySQL). Why? Because it's probably the most powerful one for the price (which is zero). (I had one site that handled a 25 million record database, that could select any random sequential 25 records in milliseconds - MySQL did the work, I just told it from where to where to select.)

You could use REST, you could use JSON or you could use plain text. The best one to use is the one you're most comfortable with. (You shouldn't have to worry about how to write the app, all that should concern you is what to write, so even if JSON were far better than REST, but took a long time to learn, you'd probably develop a better app just writing REST code without thinking about that part.)

As for learning, as I said, learn some programming first. then learning Kotlin (or almost any other language - things like Forth or ATLAS excluded) is relatively easy. Google will give you most of the syntax you'll need. You'll already know programming, you'll just need syntax. For instance, if you need to take part of a string in kotlin (knowing programming, you'll know that you need part of a string at this point in the program), kotlin part of a string will give you almost 45,000 hits. kotlin rest gives you 367,000 hits. kotlin ajax gives you 876,000 hits, and you should learn how to do AJAX in Kotlin if you're going to use Kotlin and a cloud database (or anything on a server).

APIs? That depends on what's available on the server you choose. (People don't learn a fixed set of APIs - any code you write can be used as an API. If the server you choose doesn't expose any APIs, that's not a problem, just write the code yourself.)

I say all this from the filter of having earned a living writing code, including websites, large complex systems and small, trivial apps, for 45 years. (And I've hired a lot of people who knew programming, but had no experience with a programming language over someone with a few ears of experience at turning a language into a program. Anyone who understands programming can start picking up a new programming language in minutes, and become an expert in a year. Anyone who doesn't understand programming will never become an expert at programming or at any given programming language. [And you need at least 2 languages here - Kotlin and SQL. Although my personal choice would be Java, not Kotlin - more libraries, more classes and a larger community to help you.])
 
Thank you so much! It got me thinking, but it is not like I don't have any experience or knowledge about programming. I've just started learning Android development and it is the only new thing to me. Also Kotlin is completely new. But I know other languages, also I know SQL, so I don't worry about that. But I want to make a project I will be "proud of". It does not have to be very complex or whatever, but I know to make it in right way. Plan the architecture, make the documentation (including UML diagrams, functional and nonfunctional assumptions etc.), so I would have MAYBE a good project to show while trying to start working as app developer - it do not have to be fulltime job. Im a student right now, so probably I would be looking for a internship.
 

Trending Posts

Forum statistics

Threads
956,897
Messages
6,970,499
Members
3,163,642
Latest member
958ryan