"This is the story of Alice. She wants to learn to code and become a full-time developer. But Alice doesn’t know where to start."
Software development has been booming in the past 20 years. New startups keep popping up now and then. Alice feels it's a good career choice. So, she plunges into it, hoping to seize its opportunities.
Software development is evolving. We have newer operating systems, programming languages, code editors, databases, frameworks, and bug trackers. The development process never remains the same.
More and more people, like Alice, want to become developers. But it's not easy for them. New languages and frameworks keep arising to complement the old ones.
Result: Too many choices, opinions, and resources. So, it only confused Alice as to where to start.
So, this blog will guide Alice and other like-minded people on learning to code and how to get started.
Choose Your Language
“The first dilemma that Alice experienced was which programming language to learn. There were so many in the market that she scratched her head regarding which one to go for.”
The focus should be on learning the core concepts of programming, which can be done by choosing any language. So, it would be best for Alice to start somewhere. It will help a lot in achieving her goal quickly.
Choosing one boils down to what a person wants to do. I will share a list of general development goals and which languages are the best options to get there. Please take it as a suggestion.
- Front-end web development: Javascript, HTML & CSS.
- Back-end web development: Ruby, Python, Javascript, or PHP.
- Mobile development: Swift (iOS) or Java (Android)
- Windows development: C#
- macOS development: Swift or Objective-C
- Operating systems, file systems, embedded systems, etc.: C/C++
- Game development: C++, Unity, and C#
- Data science: R
Now, there are other options for each of these. But the list is an excellent place to start. Aspiring developers can also check the job postings of places they plan to work. It will help them understand the company’s requirements.
Continuing with the story:
"So, Alice has now decided that she will focus on mobile app development. The next predicament she faces is where to find authentic learning materials to start studying."
Also, here is what the landscape of mobile app development looks like in 2022 and beyond:
Suggested Reading: If You Want to be a Winner, Change Your Software Development Philosophy Now
List of Authentic Resources for Learning Programming
"Alice found many resources to learn to code on the internet. But, she was experiencing difficulty in finding genuine ones.”
Most resources fall into the following categories:
- Books
- Videos
- Blogs/tutorials
- Courses
Books are the traditional go-to resource for learning anything new. She can check out any e-commerce website for books based on specific programming languages.
Alice must be careful that they are new and updated as programming languages keep evolving and older books become outdated.
Many people prefer videos to learn how to code; YouTube is the first place they visit. Observe how many subscribers a given instructor has, and check out some of the videos to determine if their style and method work for you or not.
Updating videos is a time-consuming process. Some of them might be outdated if the programming language was updated.
Google searches like "Best Python tutorial" or "Best Swift tutorial for beginners" will show blogs and tutorials for specific languages. It's an excellent place to start. Just like videos, Alice will have to decide if they work with her learning style or not.
Online courses are the newest fad on the scene. Codecademy, Free Code Camp or The Odin Project are highly regarded for web development.
Udacity, Coursera, and Udemy all have courses in different genres. Each has user reviews. So Alice can compare and look for the ones that have the highest ratings.
I will share more specific links where Alice and other students can learn different programming languages mentioned in the previous section.
- Front-end web development: Free Code Camp
- Back-end web development: Ruby (for rails), Python (for Django), Javascript (for Node), PHP the right way.
- Mobile development: Flatiron school's free swift course, swift programming book or Head First Java, University of Helsinki's MOOC (For Java)
- Windows development: Head First C#, Plurasight's C# course
- macOS development: Cocoa programming for OS X
- Operating systems, filesystems, embedded systems: C++ How to program book, C++ Tutorial for complete beginners
- Game Development: I have shared the C++ and windows development for C# above.
- Data Science: R Swirl or Coursera's R course
After thorough research, Alice found some genuine learning resources and began learning to code, but there was a new problem. She was stuck in tutorial hell.
What Exactly Is a Tutorial Hell, and How Do I Escape It?
It's doing more tutorials, but being unable to build anything out of it.
Tutorial hell happens when students use the wrong methods to bridge the gap between knowing how to do it and what they have been exposed to from the course. There is a difference between what Alice knows and what she got exposed to in these courses regarding programming.
For Alice, It's unrealistic to learn everything at once and be able to do it alone. The need for repeated exposure to tutorials creates a feeling of incompetence. For example:
" I have done a React Tutorial. So, why can't I make a React App?
"I have watched an algorithm video. So, why can't I solve coding problems?"
This difference between her ability and exposure causes anxiety in Alice and other like-minded students.
When things go wrong, students like Alice try to fix them by reaching for more tutorials and exploring other topics. "I am not getting React. So, maybe I should try Vue." It will only make things worse.
A tutorial on a new topic generates exposure faster than improving the ability. So, it will widen the gap, generating anxiety and self-preception of incompetence among the students.
Although Alice is learning more, she still doesn’t feel confident. So, what's the solution?
Alice should focus on improving her ability instead of exploring more tutorials. It will narrow the gap between ability and exposure, relieving negative feelings. It also means her skills are improving, which is the whole point of learning.
To improve their skills, one should focus on building things with the knowledge they already have in a specific programming language. The best way to do this is through play. It's self-prescribed and enjoyable. Students like Alice must determine what to do rather than some tutorial prescribing it for them.
It's common for students to say, "I don't know how to actually make anything!". They have defined "anything" as the peak of what they've been exposed to from the tutorial. Maybe that is a mobile app. It is not what "anything" means.
Can you make text appear on a web page?
Can you write a script that tells you if today is New Year?
Then you can make something. Alice should make things of her choosing and slowly increase the difficulty.
To get out of tutorial hell, Alice will have to make a choice. Trade her anxiety about her abilities for embarrassment regarding how simple the stuff she is making is. I think it's a good exchange.
The second method combines play with the tutorials she has already done. Go back through the old tutorials, but push herself slightly.
Alice must ask herself, "What if I add this little extra feature at the beginning and then try to keep it all through?"
"What if I try to do something from memory and then check back to see if I did it right? It may feel a bit safer."
The last method is to do more tutorials on the same topic. It won't get Alice out of tutorial hell, but it might get her closer to the gates.
For example, there are at least a dozen beginner books and courses on Android. Alice should keep working through them. She can go back and redo the ones that seemed too hard previously.
The essential thing is that Alice has to stay on topic until she gains the ability. If she ventures off too soon ("Maybe I should try web development or learn to design''), She will only worsen things.
So, to conclude this story.
“Alice focused her entire energy on learning mobile app development and didn't distract herself with other programming languages.
She found genuine study materials to learn everything about app development. Alice successfully got out of tutorial hell by focusing on improving her ability instead of wasting time checking out different tutorials. She didn't switch to other programming languages when things got hard.
Alice began to build things from her knowledge. She created her self-prescribed challenges instead of relying on a tutorial to do them for her. Alice made things of her choosing and slowly upped the game. That's how her skills began to grow. It made Alice feel confident in herself.
After nine months, she landed her first job as a mobile app developer.”
If Alice can do it, so can you!
If you aspire to become an app developer, then I am sure you will find it interesting to see what the mobile app development lifecycle looks like when building an app.
Suggested Reading: Are You Prepared for the Challenges in Software Development?
For Further Reading
I recommend checking out GoodFirms research on the evolution of Mobile App Development. You will get insights into mobile app development's past, present, and future. Also, it covers the next generation that app development will focus on in the coming years. If you are planning to be a mobile app developer, it will help you decide what to work on in the future.