If you spend any time looking at one programming language, or all programming languages, as a "hobbyist" or "junior dev" ―however you see yourself or whatever your role is―you'll inevitably see the cacophony of "This is my first app" posts. They usually ask for advice, or pointers, and they're admirable. There is something really cool about seeing people learn something new.
But it has almost become a right of passage to post on the subreddit dedicated to that language or technology a link to your github page, or app url, and say "this is my first app, it is a calculator. Let me know what you think".
It is a calculator.
It is the thing that comes with the phone and there's really no need to flood the Google Play Store or the dev.to feed with yet another calculator app. I would give you feedback, but inevitably you copied the same exact tutorial code that everyone else used, and changed up some variable names and the color of the enter button. Unless you found a way to make the calculator do something unique, the tutorial only served one purpose and that was to teach you how to make something. Don't share that, we've all done the tutorial.
It's Getting Worse
The tutorial culture has shifted and become older. I have seen a thousand posts on various sites and subreddits that say "how i made a coronavirus tracker in….". And while these are usually done by people who have more skill, and are not following tutorials, it still stems from the same underlying problem. Lack of creativity.
Some of my best learning has been done because I had a problem I needed to solve. We need to stop treating tutorials like they're solving a problem. We have coronavirus trackers, we're friends with them on Facebook. We have calculators, everywhere. There's no shortage of them.
But there ARE various problems we face in our day to day lives that we often think "man, if I was a better programmer, I'm sure I could solve this".
And that is how tutorials train us to think. If you only ever get so far as the calculator and think it is really cool that you are now published on the Google Play Store, you will never get to the point where you are ready to solve actual problems (unless they're math problems).
Do Not Limit Yourself To What A Tutorial Wants You To Make
Tutorials are perfect for showing us how to implement principles. And that means that we need to know what principles we want to implement. Following a tutorial from front to back will only show you how to figure out what principles you need to know in that exact use case of not having a calculator but having a computer cable of compiling your code.
What I challenge us to start doing is to stop making applications for others. Don't go with market trends, don't go against market trends, don't look at market trends. We can see that a service or software is doing really well and want to emulate that but we can't because they had a problem they solved, and by solving it, we don't have the same problem to solve.
But we all know that there is no shortage of problems we face every day. And that problem can exist in something that was created to solve a different problem. If all the calculator apps did something different, than that would be amazing, and we'd be better for it.
You Have The Skill, You Just Need A Reason To Learn It
Don't lament that you don't have a skill. Learn the skill. The calculator tutorials contain concepts, but implement them in a very linear way. I still need to look up tutorials for how to do simple concepts in python from time to time because I forgot what the exact syntax or keywords were. I'm thankful for the calculator app tutorial then.
The world would be a much better place if we stopped trying to solve the same problem and started solving our own.
What Problems Have You Solved Mr. chillhumanoid?
My github page is a mess of different projects, some that have good reason for, and others that I started just because I wanted to (boredom is a problem).
I have an android app that was created because I have ADHD and many Bibles, and a plan that requires keeping track of 10 different chapters.
I have a discord bot for a server I run that has a fairly unique scenario that I decided to learn how to make a discord bot, and in 3 days made it into a really neat little bot that does some cool things that a few servers have found useful.
I have some scripts that are solely for my church and their livestream in this season, since all our services are pre-recorded and it's up to me to make sure that we go live at the right times. I knew I'd mess up, so I made a little python script that handles everything for me.
I have a Bible XML editor to make editing Bible XMLs easier.
I started editing Bible XMLs because I needed a parsable version of the NIV 2011, but all I could find was the NIV 1984 translation.
I have a python app that will keep track of Teen Bible Quiz scores throughout a whole season across multiple teams. I created this because I was tired of the excel spreadsheet with macros that didn't like it when you changed who was seated where, and only kept track for the given meet.
I do not have any calculators.
And I point that out calculators a lot because we need to move past the thing that everyone has already done. And if you learned it in a tutorial, it's definitely already been done by everybody.
We don't need another coronavirus tracker.
You would be amazed at how many people would feel that they need an application to solve the problem you have but you haven't done anything about.
So make that.
For the love of all that is Holy, please stop asking for people to review your calculator app. Does 2+ 2 = 4? Then you did great.
Good job.
Final Note
Do not get me wrong. You should make things you want to make and give very little thought to if it has been done before. As long as you feel there is good reason to make what it is you are making.
These are never things that are covered in tutorials though. Those are things that everyone has made, and there is nothing you do by making it that solves any problem that hasn't been solved already outside of you didn't know concepts and now you do. Part of my point is that you should treat tutorials only in that way, to teach you concepts you didn't know before. The other part of my point is that you can learn the concepts without the calculator tutorials.
On that note.
def goodbye():
print("Goodbye")
if __name__ == "__main__":
goodbye()
Top comments (4)
When people share their programs I think, or at least should be, to give feedback, suggestions, and ideas for improvements. I normally learn a lot reading StackOverflow threads. But you are right, simply coping and paste code is a horrible thing.
If someday someone ask you to review their calculactor app, make sure you review the code ask them what its doing. Thats what first timers need, sometimes they dont know what they wrote and why.
Yeah, sorry, I just think you're being a humbug.
People build calculators and want people to look over them for feedback. Sure, they followed a tutorial, but they're looking for a mentor and this is what they have. Mentor them. It'll help you grow and not be so grumpy about people new in their career.
They gotta start somewhere. Who cares if it is a calculator, covid app, or another todo app? They followed along and probably know a little more now than they did before and are likely looking at what to do next.
You're a hobbyist, and I'm a professional, but I still struggle to think of ideas for myself for things to build even after 20 years getting paid to do this.
My point is that beginners should not look at tutorials as being the end product, but a way to get to the end product. I am very thankful for my MPG calculator i made my first week of college. It got me to the second week of college. There were times early on that when I wanted to make a simple little program to do something dumb like take a number someone gave me and do something entirely different with it, i often had to look at my MPG calculator to remember how i implemented certain concepts.
What I see with people who post in the way i'm referring to their To do app or their calculator is that they don't know the concept they just implemented, or what that could get them in the future. and these are mainly hobbyists anyway. Thus, the best way to learn as a hobbyist? Make something that helps you. You'll learn far more in setting out to make something that solves your own problem than by solving a problem that's been solved already by everyone. Often in solving your own problem you have to reference the tutorials that do explain how to create a todo list app. but if you go to it not knowing what you want to do when you're done, all you'll have is a todo list app. if you go to it knowing you want to implement a list system in X language, you'll leave most likely knowing how to implement a list system in X language.
I'm pointing out a fundamental problem with tutorials, not necessarily a problem with those who do them.
It's clear it's become a bigger problem than just tutorials as well. Because you have people who are more skilled, have had years of experience, and they're doing the same thing with covid trackers. It takes a little bit more skill to do so, but it's the same underlying problem: lack of know how to create original ideas.
I don't discount tutorials, I discount how we use them.