Tips for Aspiring Developers (Self-Taught Story)


It’s like a growing subject, new people are coming in every day, and “What programming language should I learn?”, “How do I get started?”, “How do I get a job?”, “Where should I learn?” and so on are the most common common questions.

These are valid questions, and hopefully this article will help you manage this changing subject better, perhaps better, than ever before.

Note: Please don't take my advice entirely as a standard. I hope you keep your own opinion. Most of them come from my own experiences, the experiences of those around me, and my interactions with others online. Also, as the title suggests, this article is not just for developers, but for anyone looking to get ahead, or just getting started in a field.


What programming language should I learn

This is probably the most frequently asked question. You are interested in programming and have decided to learn a programming language, but who?

In my opinion, there is nothing better than this language in the beginning. Choosing a language depends a lot on the level of fascination the learner has with the language. Some prefer Web development (PHP & JavaScript is probably the best known), some prefer game development (C#, C++), Some prefer desktop application development (Objective C, Swift, Java) and some prefer all aspects (Java, C#, Python). There are countless languages to choose from, some focusing on one area, others not.

If you really know your favorite field, then your choice will be clear, but if you can’t decide whether to focus on one area or multiple areas, then a better choice is a language that is used in most fields, such as Java, C#, Python, etc.

Some people may argue that languages like Java and C# are not the best places to start. Some people argue that beginners should start with C or C++, but my first programming language was Java, and I have a deep connection with it, and I enjoy working with it. I’d be happy to write some new books for Java, or any technical books I can use with it.

Java and C# have many similarities. The differences in resource and memory management make C# a better choice for game development, and even though Java’s speed and memory management have improved significantly over the years, C# has been chosen for the game space and will remain so for some time. Making large enterprise Web and desktop applications, on the other hand, is usually done in Java, but I won’t say any more because this is starting to get sidetrack.

Python has recently grown in popularity and usage within the industry is increasing. It’s used in game development, Web development, machine learning, etc. As far as I know, it’s easier to learn than the first two, so it might be a good choice for beginners.

How do I start

Should you go to college, should you sign up for classes (traditional or online), should you buy some books?

I don’t think you have to go to college to be a qualified developer. Many people feel frustrated in college and don’t feel that they have gained enough knowledge. In my opinion, no matter what circumstances you are in, good or bad, if you want to learn, you will learn.

In the beginning I went to some local classes, and that’s where I started laying the groundwork, and I was able to build on that. Over the next few years, I spent my time buying courses on sites like Udemy and books on sites like Packt Publishing (for this, I recommend Turing Community).

Needless to say, I also rely heavily on forums and communities, StackOverflow has become my best buddy, YouTube, etc. I’ve seen a lot of people who are happy to help online, and the community has really helped me a lot.

One of the things I’ve noticed is that people tend to focus on the preconditions for learning something. “Do I need to be good at math?” “Do I need to know physics?” “Is this too complicated for me?” I’m not sure where these ideas come from, to be honest. Yes, being good at math is a plus, and there are areas that require extensive use and understanding of math, such as artificial intelligence and deep learning. But understand, for most fields, it’s normal to know the basics, the basic math. You don’t need to be a math expert to learn programming.

I even met a lot of people who weren’t interested in math, and after studying programming for a while, they found it easier to understand and more interesting.

Knowing some related concepts or some simple computer science is an advantage in learning to program, but it is not necessary.

In my opinion, programming itself is not that complicated, and learning the syntax of the language is not difficult, because most of them are logical and easy to use. However, being a good programmer requires knowing how to use a language’s syntax to make it work efficiently. It needs to be generic and practical, and sometimes that can be an abstract approach. And that takes a lot of thought and that’s a very critical part. Fortunately, they don’t have to be born with a trait, and if it’s defective in the first place, it can be done in other ways.

Where can I study

My personal opinion is that you can learn anywhere. No matter the circumstances or the people around you. But I think a better way to answer that question is to give some examples.

There are many free or paid services online that you can use to get started!

Here are a few examples:

  • CodeAcademy – a very popular website with a good reputation. The site offers an interactive way to balance practice and theory by providing part of the theory, and you can practice what you see online using its built-in compiler.
  • FreeCodeCamp – He’s a little different, he focuses first on theory, then on practice, he supports you to build your own project, get a certificate, and add open source projects to your resume.
  • CodeWars – A separate section on this later in this article.
  • W3Schools – Focusing on Web development, this is one of the better places to learn HTML, CSS, JavaScript and other technologies, especially for beginners.
  • Udemy – one of my favorites. Udemy offers a wide variety of courses and is very cheap. In my opinion, I prefer paid courses, and again, Udemy courses are really cheap. Don’t be fooled, you’ll often see the $200-300 price tag, but that’s just marketing. Udemy offers discounts all the time. Once I didn’t get some courses during the discount time, then I got a big discount, which was expected to be no more than $10 per course.
  • EdX – a well-known educational website supported by MIT and Harvard University. Includes some free courses and paid certification.
  • Khan Academy – Another popular site offering courses in a variety of fields.
  • Udacity – Offers free programming and non-programming courses, as well as paid degrees and certificates.
  • Packt Publishing – another favorite of mine. Packt’s books never let me down, and I’m always happy to get something new. Unfortunately, their books are quite expensive, but fortunately, you can still get discounts and buy them cheaply – around $15.

Always be eager to learn

I think learning is very important. This is a subject that changes every day. What was an ideal solution a year ago may now be obsolete. I bought an Angular2 book last year to expand my field of work, but I still hadn’t read it, and then suddenly I found out that Angular6 had been released a few months ago.

I enjoy teaching and consider it an important aspect of progress. Loving what I do allows me to learn something new every day, while learning something that doesn’t interest me or is mandatory makes me feel bad. I don’t think it’s time to study and study for a few hours. I notice myself reading new articles, getting the latest information, and making apps for his fun, testing my own challenges, just because he’s fun.

To be honest, it takes a lot of time to learn, to keep up and learn, but if you enjoy doing it, it’s not hard.

How long it takes to “become a developer”

“Being a developer” is one topic that needs to be discussed, while the other has no answer.

What I can tell you is how long it usually takes on average to get to a level where you can start working.

It depends on the learner, but it takes at least a year to learn any language well. But remember, once you “become a developer,” you never stop learning.

Fixed number of year Levels of knowledge
1 year With a year’s knowledge, you should be able to create simple applications and have at least some experience with popular technologies and frameworks relevant to your chosen language.
2 years I think it takes at least 2 years of study to be considered a junior developer who can really be responsible for the development of a project.
3-4 years In 3-4 years, you can be considered a mature developer, or intermediate developer.
4 years or above It’s up to you, but I often see developers over 4 years old referred to as advanced developers.

Remember, just investing your time doesn’t make you a developer. Add to that the effort you put in. Sometimes someone with two years of experience might be better than someone with three years. This means that my table is used only as a reference, or as an idea of how much time you might invest in the near future, to see some results.

failure

It’s common to get something wrong, whether it’s making online platforms or AI, videos or games or anything else.

When I feel like I can’t do anything, I’m always tired, I’m stuck in a “programming dead zone” where I’m always stuck with the same mistakes, sometimes for days. It makes me feel desperate. I have to admit, it’s not always easy, but when you finally get rid of him, you get a sense of what it’s like to have a good time. Going through these ups and downs is a fundamental part of making progress in any field. After all, you have to learn to live with them.

Focus on one thing

Becoming a master of one language, rather than an apprentice in all fields, would be a good place to start. Trends like DevOps are popular and unify many fields within one profession, but I wouldn’t recommend it for beginners. If you want to be able to do what regular teams do, be my guest, but it takes a lot of knowledge, willingness and experience to do that.

practice

Practice allows you to identify problems, which is a very important feature of programming. Once you start programming, the practice will also improve your skills.

In my experience, CodeWars is a great place for training and practice.

CodeWars provides countless challenges for Java, PHP, Python, Ruby, JavaScript, C#, Clojure, Go, SQL, Swift, TypeScript, C, C++ and a host of different languages.

He is made from a traditional Oriental style image that I am passionate about, and I love the honor system of Katas (personal training/challenges) and Kumite (accompanying/challenging others) that they introduce, which he adds with each completed Kata or Kumite. You went all the way from 8kyu to 1kyu, just like a rookie who finally became a famous master.

CodeWars has a huge community and you can learn a lot.

In short, all things are difficult before they are easy, so don’t be discouraged. These Katas are not easy to solve and require your knowledge and wisdom.

No need to reinvent the wheel

In most cases, there is no need to reinvent the wheel. You can find most solutions online, ready to use. Using someone else’s solution allows you to focus on your own work. While doing everything from scratch can be helpful, it can also blur your vision and take you off track.

Try reading someone else’s source code

Even though everyone has their own coding style (naming, formatting, etc.), you should try to read and understand everyone else’s source code.

When you go into an office or team development environment, you have to work with other people, and you have to be able to understand their code. Teamwork can help you better maintain and upgrade existing code, and that can change your own style, and only when you change your style can you reinvent the wheel.

Learn to walk before you can run

If you’re new to something, build a solid foundation before you try some advanced uses of it.

If you try to force it to run, the CPU will explode.

Please lay the foundation for the future high-rise building.

Be a part of the community

Being part of a community is a quintessential human trait. We like to organize and organize things that interest or benefit us. If your city holds parties about computer science or some programming language you’re interested in, what are you waiting for?

No matter what level of knowledge you have, it should not prevent you from communicating and discussing with others. You may find others with similar interests. I often trade books and classes with friends, and we each buy and share material in bulk, so even if you’re on a tight budget, it’s not hard to get useful material this way.

Writing comment documentation is a good thing

It’s not the most fun, but it’s very rewarding for you and your team. If you’ve written a feature and haven’t used it in a while, you might forget how it works. When that happened to me, it was like, ‘What did I do here? ‘.

This can result in a lot of time wasted trying to understand what the old code does, but simply writing a few comment documents will save everyone time.

And I have to tell you that this habit is very, very useful.

conclusion

Having said all that, it’s time to call it a day. I hope this blog can help anyone who takes the path, and I hope my personal experiences can give back to the community in this way. I hope you found it useful.

Good Luck!