For a beginner, who is trying to start a career as a programmer the question you should be asking yourself is, what should I learn? where should I start from? what should I know to be a very good programmer? Often beginners are stuck at the choice, there isn’t a straight path to become a good programmer and the community isn’t so warm in welcoming the newbie, the path to a successful programming career is even more complex than before. Supposing you are a beginner, you should choose between C++, Java, C#, PHP , Python, Node.js, JavaScript, (with Angular, React) and so on.
As a programmer you must know what you want to do, are you interested in building mobile apps, a website, or do you want to build a desktop application like PageMaker or maybe you are interested in game development.
If you may ask “what should I know to get hired at a tech company as a software engineer ?” is to find out the main skills you should master to successfully pass the technical interview. As a programmer you may want to delve into one or more of these three programming designs which includes; web, mobile and desktop designs.
The web can be split or divided into front-end and back-end. Front-end is what you see, back-end is what need to be in place for you to see the front-end. Again, front-end client (web browser)is the look and feel, back-end is the servers running the application which processes user requests, handles database queries and so forth.
Front-end client (web browser), to build websites that are so beautiful that users will like so much, you should be conversant with HTML, CSS, Jquery, JavaScript and bootstrap. This isn’t just enough, using pure JavaScript is not enough in the technology crazy world, so you have to choose the right framework, currently popular Angular, React. Which one to choose is mostly based on the company you like the most, Google or Facebook? The framework you choose will depend on what you like, for instance one will be tempted to go with Angular if you like Google, and with React if you like Facebook a lot. Being a front-end developer means you get the data to render from the back-end, at least you should know what an API is and how it works.
The Back-end, the unseen truth, when Microsoft introduced ASP.NET. They were fighting each other until Node.js came and put things in their best order. Some concepts of event-driven development are best applied at Node.js, if you embrace it, you are definitely on way of making sure your design looks great.
You might want to use any language you want at the back-end, the point is, “back-end” is a short name to query database, process data, respond to client and do it as efficient as you can. While some developers go with Relational Databases like MySQL , newcomers choose the dark side, NoSQL (like Cassandra or MongoDB). If you have a strict schema for your data and it won’t change in the near future, then go for or choose Relational Database.
If you want to go for NoSQL, you should know that it’s tricky. It really depends on your service and data architecture.
It should be noted that the database holds all the necessary data, you should define an API through which your clients can request and read/write to the database. The most useful option here is Node.js, though you can go with PHP or ASP.NET or Ruby or Python, my personal recommendation would be Node.js. Well, Facebook uses PHP at its backend, kind of. It’s true that you can use almost any language at the back-end, for instance, Google uses C++, Java and Python. For low-level data processing, C++ fits the best, for background jobs like updating user’s friend recommendations, Java is a good option. For data analysis or natural language processing or for nowadays highly popular AI-related tasks you most probably will go for Python.
Furthermore apart from other programming languages, frameworks, databases at back-end, there are some core concepts that you have to learn or take note of.
Caching is predominantly used everywhere, for high load services like Google Search or Facebook, caching is extremely necessary, starting from the CPU cache and ending with browser cache.
For the back-end developer server means the web server. Popular web server nowadays is Nginx and knowing how to setup and configure it will pay highly in your future endeavors.
Knowing low-level details of socket programming should also be a good bonus in your skills inventory i.e. knowing difference between TCP sockets, UDP sockets and what are WebSockets is a huge plus.
Regardless of the DBMS you choose or have to work with, operating with data will be one of your main tasks i.e. ability to see the complete picture, visualize data and connections between data units is a skill you will master during your whole programming career.
For the security aspect , you should at least be familiar with some of the best practices such as storing password hashes rather than as plain texts. Checking requests via API token, authorizing, authenticating and verifying user permissions for each request.
Desktop platforms that need specific skill set, for instance, Photoshop is working with images, and knowing image processing algorithms and techniques is a must if you want to write something like Photoshop. For you to write something like Dropbox socket programming is a must. Knowing how to engineer a compiler is a must if you want to build a compiler or IDE like Visual Studio.
In choosing languages for desktop applications, programmers are having a hard time choosing among C++, Java or C#. You might want to use C# if you like Microsoft. For those that are in love with Oracle use Java.
When Java is being mentioned, the first thing that comes to mind is Android. Long before Kotlin has been introduced to the world, Java was the de facto language in order to implement Android apps. Nowadays, Kotlin takes hearts of developers and allows even better experience of developing apps for Android platform. One should be able to make the choice between Java and Kotlin if one wishes to design an android app. Objective-C for so many years was the dominant language for iOS and to be frank, mastering Objective-C required a serious approach, tough look and some good perseverance. That was the main issue of relatively small number of Objective-C developers out there and Apple finally made the right move by introducing Swift . Swift is much easier to master than Objective-C, which lead to increase in the number of iOS developers.
As a programmer you should have a good knowledge of at least one programming language. Knowing all the pros and cons, best practices of your favorite language will always help you write efficient, elegant and readable code. Knowing Object-Oriented Programming is a must for a modern programmer.
Designing a System means thinking about the whole system, being able to design its architecture, dissect it into classes, define object interactions and also how the system will work.
For those programmers that are junior developers, they are mostly expected or required to have good problem solving skills.
You should be able to differentiate between a Composite and a Decorator. The use of the correct design patterns is highly recommended.