CodeCademy and FrontendMasters and Linkedin Learning and Udemy and Pluralsight
At least 50% off from FlexSub

Subscribe Now

I am sure I am not the only individual whose entry into software engineering was delayed due to a lack of knowledge about where to begin.

The abundance of materials offers a wonderful opportunity, but can also make taking the initial steps difficult. Here are ten things I wish I had known before I began for those of you who are contemplating taking your initial steps or are already in the process.


Choosing a Language is Important

There are numerous programming languages available. Each language has its own advantages, disadvantages, and optimal usage contexts.

Despite the fact that your first language will almost probably be the most difficult to learn and that many of the most fundamental concepts will be similar across languages (variables, iteration, etc.), it is worthwhile to conduct research and determine which language you want to begin with.

Programming simplicity is a factor that must be considered. Be honest with yourself about your level of confidence or intimidation. If choosing a more difficult language will ultimately prevent you from growing with it, it may be preferable to choose one with which you can first achieve and experience success.

The reason why you are learning software engineering is also a significant component. If you have a concept for an app that you wish to develop, you should first consider the app's logistics in its early phases and at scale, and then investigate which programming languages and technologies are best suited to your needs.

Make a list of 10–20 organisations that you would want to join as a software engineer, research their job advertisements for software engineering opportunities, and take note of the languages they use.


Languages All Have Official Documentation

Languages are not just created and sent out into the ecosphere with the hopes they’ll be understood. Languages, frameworks, and libraries are thoroughly documented online, from the most basic concepts to the most complicated applications. I have listed the links to a few below so you can see what these look like:

Python.org

RubyonRails.org

Reactjs.org


Google is Your Friend, and You’ll Only Grow Closer

Google is used by every single software engineer when he or she gets stuck. This is not something done only by beginners, nor is it something that disappears over time. There is a good chance that you are not the only person to encounter the error message or bug you are experiencing, and if you are lucky, others have used StackOverflow.com or a similar website to obtain feedback and resolve their issues.

Without Google and other tools, there is no sense in software engineering in navigating from A to B. There are only points awarded for effectively travelling from A to B utilising clean code, best practises, and scalable algorithms.


It’s Not Magic — It’s Problem-Solving, and It Can Be Learned

So many people consider web applications to be nothing short of magic.

They aren't. Hundreds of thousands of lines of code have been meticulously developed to fulfil individual functions and function flawlessly as a whole.

It may be learned like any other language or skill. Initially, it makes no sense, much as French or Chinese makes no sense to a non-native speaker at first. Similar to these languages, however, you gradually learn how to describe your message using its syntax and vocabulary and how to convey any message you desire using it.


You’ll Never Know Everything

You can never know everything about software engineering or even a single language.

This is partly due to the fact that there is simply too much information. But it's also because knowledge is constantly evolving.

New versions of languages with various capabilities and modifications are routinely published. New frameworks and libraries are introduced and quickly become the framework of the moment, with everyone wishing to utilise them. Discovering superior practises to replace the present best practises.

The only constant in software engineering is that it is constantly changing and evolving, and it is essential to accept this truth from the outset.


GitHub is a Thing

Git, a local version-control system, is compatible with GitHub, a remote version-control system.

You should have an account from the beginning and become familiar with both platforms.

Throughout a project, there will frequently be occasions when you need to solve a problem but are unsure of how or simply want to experiment.

Git enables you to do so without jeopardising the integrity of your code. It accomplishes this by letting you to branch off of the master project, thereby establishing a different version of the code that you can experiment with while leaving the master, working branch intact, and by allowing you to pick what you commit to the project.

You can attempt several methods to solve a problem, and the file will save, but it will not be saved to the master git branch until you perform a git commit.

GitHub is only a remote repository hosting service for your local Git repositories (this also means that, yes, for each project, you need a local Git repo and a GitHub repo). Consider it DropBox for code. Thus, if something were to happen to your computer, none of your valuable code would be lost.


HackerRank, LeetCode, and Codewars are Also Things

There are innumerable code challenges on these three websites (among others) that allow you to polish your skills.

Once you feel comfortable writing even the most fundamental code, you can visit one or all three of these resources to begin learning how to solve issues using code. They enhance not just your grasp of syntax and writing, but also your ability to solve problems.

Personally, I adore LeetCode since it provides feedback on the quality of your solution, not just on whether or not you've solved the problem. I also utilise HackerRank frequently since I enjoy the challenges it presents.


Practice Makes Perfect—Or at Least an Able Software Engineer

You will never be flawless, nor will you ever know everything. However, I cannot underscore the significance of practise enough.

There have been instances when I, like everyone else, felt like I was attempting to understand something that was simply not clicking. It can make you feel demoralised and desire to give up and go on to the next endeavour. But I guarantee that if you persist — if you continue to practise, even if it feels like you're making no progress — you will ultimately experience the moment of clarity. Suddenly, everything will make perfect sense. It can be difficult to get there, but it is well worth the effort.


Languages Are Not the Same as Frameworks Which Are Not the Same as Libraries

The terms language, framework, and library are frequently used in extremely similar contexts, although they are not synonymous. A language is the most primitive kind of programming (aside from binary). It is what is ultimately converted into 1s and 0s. Languages such as Ruby, Java, Python, and JavaScript are examples.

Libraries and frameworks are based upon and employ languages, although they are not identical. They both give solutions to common problems by abstracting the language on which they're constructed. Typically, this takes the form of reusable methods or a command-line option for producing the skeleton of a new application. The primary distinction is who is in charge.

Using a library, the software engineer retains control and determines where the library will be utilised. He or she is in charge of the application's flow. React.js and Redux are examples of libraries; they are both JavaScript libraries. With a framework, the application's flow is predetermined. Rails and Django are popular frameworks for Ruby and Python, respectively.


It Is So, So, So Much More Than Memorizing Syntax

Software engineering involves much more than memory and syntax knowledge.

When it works as intended, coding is simple. Knowing how to debug when you're certain that the code you've written is correct. It involves solving a difficult task. This is the tough and enjoyable phase.

To accomplish this, you must comprehend not only that a+b=c, but also why a+b=c. If you don't, you will one day add a and b and receive d with no idea why and no tools to figure out why.

The intricacies of each programming language and how a line of code operates are of the utmost importance, as they can occasionally result in unexpected outcomes.

CodeCademy and FrontendMasters and Linkedin Learning and Udemy and Pluralsight
At least 50% off from FlexSub

Better, flexible and cheaper subscriptions for a wide range of services in just a click of a button.

Get started now