Throughout these almost 3 years that I have been developing Calisteniapp I have received numerous emails and messages through social networks asking me various questions related to the development of mobile apps. As most of them were repeated, I have decided to create a compilation of the most recurring themes so that I can show you my point of view and hopefully encourage you to get rid of excuses and sometimes fears to start.
I have focused these keys on the development of mobile applications, but many of them are applicable to anything you want to learn related to computer science and even other fields.
1. Stop thinking so much and start building
Whether you are thinking of starting to study some type of formal education related to computer science or the development of apps, as if you are already doing it, start a personal project now!
It is very common to think that it is essential to have studied to start a project. In my view, learning and work are not sequential processes but parallel. Stop believing that someday someone will come and tell you that you are ready and that you can already create your first app, but rather the opposite.
If you are already in a career, training cycle or any other computer related course, you probably have the following mantra:
I still have a lot to learn, when I finish this course/degree I will be ready to start my own projects.
If it’s your case, it’s nothing weird. Before I started in this world, I also had the erroneous idea that I still had a long way to go to do real things (applications, programs, whatever you want …) and that when I knew X well, I would not have to learn anymore more and could start with my projects. Then you realize that no, you never stop learning and you never get to 100% control a certain technology, framework, architecture … You must learn to be prepared to face any type of challenge or impediment because in the real world no project is built following a recipe. While there are common general aspects that you can control to a greater or lesser extent, there are also inevitably an infinite number of situations that you have never faced and for which no one has prepared you.
The key is to be convinced that one way or another you will be able to fit the pieces of the puzzle to achieve your goals, do not wait to feel that you are ready, just take courage and learn. If you follow my advice, I promise you that someday you will be willing to face anything, even if you are not prepared (at the level of concrete knowledge of that thing). That security will not be given to you by one course or one career or any training, is something you learn when you take action.
2. There is no single way
Get out of your head that there is only one way to reach your goals. Because of the conventional education that we receive in colleges, institutes, universities … we have etched the idea that to achieve something you must acquire certain knowledge and skills very specific and in a strictly determined sequence. Otherwise, you will never reach your goals. The reality is completely different, something more complex but certainly immensely more fun!
Although it is true that there are roads that take you faster to your goals, this does not mean that there is only one way. It is not mandatory to study computer engineering or an online course in order to make an app. They are simply different ways of learning.
For me, without a doubt, the best way to learn is to get by. Today we have all the necessary resources to learn what you want, from math, physics to programming languages or design concepts completely for free. Being self-taught is often hard, but you learn a lot more than in any other way. For example, I spent months learning how the iOS Auto Layout worked, hours and hours sticking with the tedious constraints. However, after this trial and error loop process, I managed to master and understand the exact operation of this mechanism.
I leave to your discretion the choice of your path, combine them as you want, try one and if it does not fit with you, go to another. Even build your own if you are adventurous. The only important thing is to take action, never stop moving, learn and be interested in new things.
3. Don’t feel overwhelmed
The question of how to start or where to start is also very common. I understand that you may find yourself a bit disoriented and overwhelmed by the amount of things you can do or the amount of information you can find. And it is totally normal that you see the creation of an app as something ultra-hyper-complex that you will never understand / can do. But I’m going to tell you a secret, you’re wrong.
While it is true the computer world is complex, you should not be scared because it is only from the highest layer of abstraction. You have to change the mentality and stop seeing it as a whole to focus on each of its parts. Then you will realize that each of these more elementary components have a fairly simple and easy to understand operation concepts. So after going to understand each of the pieces that make up the whole. You can look at it again from above and you will realize that it was not so much, that it makes perfect sense.
And you will tell me, “Great, but there are many pieces!” True, there are many pieces, but did you intend to learn something effortlessly? What I am trying to say is not that becoming a developer is an easy and fast process. I simply try to take your mind off the fact that you see it as something impossible. Everyone can learn, and no matter how clever or fool you think you are, it will inevitably take you a while to get acquainted with this world.
4. Define your goals
My recommendation is that you jump in the deep. Try everything you want to try when it comes to technologies and leave yourself with what you are most passionate about. As I said, there are not a series of steps that you have to follow to learn this or that thing, there are a thousand ways but the most entertaining and enriching is with your own project that motivates you.
Let’s explain this a little better. Imagine that you intend to learn mobile app development. Instead of creating a test app of anything, think of one of your other hobbies and try to transfer it to an app that serves to solve a problem that you have encountered. In my case, for example, one of my hobbies was calisthenics and I observed that at that time there was no application focused exclusively on this sport. Those that looked like they didn’t offer exactly what I was looking for, so I started to create what for me was the ideal application of calisthenics.
It must be a project that brings you a value (not economic). By this I mean that I do not recommend you start with a project because you think it will be profitable. Instead, the motivation should be based on what it brings to you or to people around you. I wanted to create Calisteniapp for me, to improve and plan my workouts, then the idea of marketing it came up.
Once you have an idea, try to carry it out little by little. Shred your problem and find the solution to implement each of the parts, step by step your project will move forward and when you realize you will know more about what you thought you would learn.
If my experience serves as an example, when I started I didn’t know anything about app development. I jumped in deep and within 6 months I took out the first version of Calisteniapp for iOS (crappy, but functional). I still had a thousand things to learn and my code was pretty bad, but at the end of the day nobody cared about that, it only mattered that the application was already available. As soon as I launched on iOS, we saw that it was necessary to launch on Android. So guess what, I didn’t have the slightest idea of how to program for Android. What did I do? I started from scratch, with the basics by making a Hello World in Android. With the help of official documentation, google and trial and error, in 3 months I had already launched Calisteniapp for Android.
What I mean by this is that the thing is to put on, have the will and desire to do things. Knowledge will come alone, you will make many mistakes, but nobody cares about that. Today I know three times more compared with what I knew in iOS a year ago, but I still make thousands of mistakes different from the ones I used to do. That’s how it will always be!
I do not recommend that you choose very ambitious projects to start because they can frustrate you. Instead sets small goals that motivate you and carry them out. You just have to invest your time in yourself, it’s free. As I said at the beginning, learning computer science is simple because you learn little things little by little, but after a while you get a global and complex vision with tremendous potential.
5. The product will never be finished
Personally, I am very perfectionist, I often go around things and I don’t stop until I consider that I am 100% satisfied with my work. For some aspects this is very positive because when you do something with the best intention in almost all cases you get a more than decent result. The problem is that an excess of perfectionism is decidedly bad. Trying to do things in the best possible way is fine, as long as you keep the limits in mind. If you are too demanding, you will never get anything because you will always have something to improve and you will only feel frustration.
Let’s illustrate this with a simple example. I have to create the database schema for my users, should I include this field or this relationship? What if I separate the data into two tables? Or maybe you should put them together? But what if in the future I want to save this attribute for …? The answer is simple, do not complicate yourself, go to the concrete, to the indispensable, and do not think about weird possible future scenarios because you will never be able to take them all into account.
This is a mistake that, personally, I have made a lot and that little by little I have managed to correct. You should not make your decisions as if they were going to be decisive in terms of success or failure, because then your project will not make progress. In addition, everything you take as insurance ends up not being so. I have often made decisions taking into account the possible outcomes and finally, it emerged scenarios that I would never have considered, there are always things that are beyond your control.
By this I do not mean that you make all your decisions lightly, as I said, the extremes are not good. Simply an intermediate point, make decisions taking into account the most likely scenarios and using common sense but without leaving life to the smallest detail of every thing you do.
6. Not everything is code
Another thing you should know is that not everything is programming. If you intend to start your own projects, get to the idea that you are going to have to learn a lot of things that you thought they have nothing to do with computer science. You will face legal issues, you will have to stick to elaborate and understand the famous terms and conditions of use and privacy policies, you will understand what taxes are and what it means to maintain and create an app at an economic level, etc.
You will find yourself in many situations in which you will not know what to do, and what is worse, you will believe that you have no one to help you. The most curious of all this is that you never get to know the answers to all the questions that may arise, something new always appears. But you learn to handle these types of situations, you learn to face with predisposition that in one way or another you will find a way to achieve it and fear will become security, not because you know what you do, but because you think you can and because you assume that you have no other option anyway. You have decided to play so play then.
7. Haters gonna hate
Finally, I think it is interesting to reflect on this topic. I would like you to understand that when you do something, let’s say an app for cooking recipes or anything else even outside the field of technology, there will be people who will criticize you. It’s something that seems obvious, but you don’t really realize until you expose yourself publicly with your work.
I would like that besides learning about programming, design or legal aspects, you will also prepare yourself mentally for the possible critics that will make you. Because it does not matter if your product is great, it does not matter if you have dedicated thousands of hours, it does not matter if you have done it with this or that intention, if it is free or paid…Simply, almost certainly, someone who criticizes you will appear (and I do not talk about constructive criticism, those are great and essential to improving), I talking about people who criticize for criticizing. People who rate all your effort of months or years as absolute garbage.
You must understand that these people exist and that at least 1 in every 1000 comments about you or your work will be of this type and accept that you cannot do anything to avoid their comments, whether they arise from envy, ignorance or mediocrity. The only thing you have to keep in mind is that they do not affect your vision of things and ignore these opinions, focusing on the other 999 comments of gratitude and constructive and educated criticism. Finally, not only will there be people who criticize you, but there will also be people who will discourage you and try to make you think that you cannot achieve your goals. Given this I can only recommend one thing: Never let anyone tell you what you can or cannot achieve, try it and show them that they are wrong.
In order not to end with a pessimistic tone, I also tell you that there will be many more people who value your effort, congratulate you and, above all, wish you the best. In any case, do not let anything cloud the vision of your goals.
I hope this article has helped you remove some barriers and has encouraged you to start new projects. If you have come here I would love to leave a comment whether you agree or not on any of the points, this is just my opinion, but certainly many other opinions as valid as mine.
On the other hand, if you have any proposal on any specific subject, let me know by sending me an email. I plan to upload some articles on useful resources and first steps on each platform as well as other more technical and advanced articles. If the article has been cool, stay tuned, more will come!