algorithmic thinking Archives - SoftUni Global https://softuni.org/tag/algorithmic-thinking/ Learn Programming and Start a Developer Job Thu, 08 Dec 2022 11:13:39 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.3 https://softuni.org/wp-content/uploads/2022/04/cropped-SoftUni-Global-Logo-Square-notext-32x32.png algorithmic thinking Archives - SoftUni Global https://softuni.org/tag/algorithmic-thinking/ 32 32 Starting Your First Job in The Software Industry https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/ https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/#respond Thu, 17 Mar 2022 06:00:00 +0000 https://softuni.org/?p=14099 In this article, we will talk about all the steps to starting a developer job. Be of the 5% of job candidates that go to an interview.

The post Starting Your First Job in The Software Industry appeared first on SoftUni Global.

]]>

In this blog post, we will talk about starting your first job in the software industry. There are a lot of steps you need to do before you go to an interview and get hired. You need to study hard and educate yourself, to learn concepts like coding, algorithmic thinking, software development, and different frameworks. Even if you are highly skilled, you can lose your opportunity because someone sent a better job application. We will look at all the steps required for a successful start.

Video: How to Start Your First Tech Job? Tips and Tricks from Svetlin Nakov

In this video lesson, we cover the following topics about preparing and starting your first developer job:

  • Steps to Start a Developer Job
  • Defining Your Career Goals
  • Learn the Software Engineering Profession
  • Prove Your Experience
  • Your GitHub Portfolio: Tips and Tricks
  • Find Junior Tech Job Positions
  • Prepare to Apply for a Dev Job
  • The Job Application
  • The Job Interview

How Can You Learn Software Development?

You can learn from many resources such as tutorials, books, video courses, and code camps. Nevertheless your studying material, you need to do your hands-on exercises and projects. You learn nothing with just watching.

It takes from 2 to 3 years if you are learning in parallel with your daily job, and it may take 6 to 12 months if you study 12 hours per day. From 2000 to 3000 hours of practice is enough for starting a junior dev job.

How Do You Prove Your Developer Experience without a Previous Job?

For starting any tech job, you will be required to have experience. Employers will typically ask for 1-2 years of experience for a junior developer. You can build your portfolio on GitHub. You can add your projects there and write good documentation about them. If you have no experience with GitHub, you can read our blog post about it here.

These are a few sample developer portfolios of our students from SoftUni, who have learned programming, created several practical projects in GitHub to prove their skills and started their first dev job in the software industry:

This is how you should document and showcase your portfolio projects (description + tech stack + screenshots + live demo):

Where Can You Find Tech Job Positions?

It is hard to find a junior job that will match your skills. On every job site, you can search:

your skills + “junior” or “intern”

In addition, you can ask your friends, colleague, and social networks. Now is the time to create a good LinkedIn profile. You can add Education, projects, and certificates to your bio and ask for endorsements. LinkedIn allows easy search for jobs.

search-job

How Can You Prepare to Apply for a Job?

If you are preparing to apply, your skills need to match the market needs. First, analyze the job market for junior positions. Seek what skills employers require and what you need to learn. Analyze each specific job position you want to apply for.

What Should My Job Application contain?

For a strong job application regarding a tech position your application should consist of:

  • Email
  • Portfolio of projects
  • Resume (CV)
  • Cover letter (CL)

You should carefully apply for a specific job. The letter should be individual for a specific position. You shouldn’t copy/paste your cover letter, or application message. You need to slightly adjust your CV to match the target position. You need to always write your cover letter from scratch for each position.

Will They Hire Me If I'm Invited to a Job Interview?

You should never rely on the job interview. Only 5% of the candidates are invited to an interview. If you don’t want to be from the 95%, you need to focus on the preparation. Study hard and build an impressive portfolio. Select your job position and apply carefully.

In case you are invited to an interview, you need to be prepared:

  • Research the company and learn as much as possible
  • Research the technologies from the job advertisement
  • Research typical questions for a job interview.

No matter how your applications go, you should not give up. Take note of each failure and prepare for your next interview. If you follow all our recommendations, in the end, you will most likely end up with a good starting job.

Lesson Slides

The post Starting Your First Job in The Software Industry appeared first on SoftUni Global.

]]>
https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/feed/ 0
How to Become a Software Engineer? The 4 Groups of Developer Skills https://softuni.org/blog/become-a-software-engineer-developer-skills/ Wed, 04 Aug 2021 19:08:00 +0000 http://demo.themegrill.com/colormag/?p=123 Every software engineer holds 4 major skill groups: Coding skills: 20% Algorithmic thinking and problem solving: 30% Software engineering and computer science: 25% Languages, technologies, frameworks: 25% The first 3 groups of skills are fundamental and change slowly over time. The last group is changed frequently and is bound to certain programming languages, APIs, or …

How to Become a Software Engineer? The 4 Groups of Developer Skills Read More »

The post How to Become a Software Engineer? The 4 Groups of Developer Skills appeared first on SoftUni Global.

]]>

Every software engineer holds 4 major skill groups:

  • Coding skills: 20%
  • Algorithmic thinking and problem solving: 30%
  • Software engineering and computer science: 25%
  • Languages, technologies, frameworks: 25%

The first 3 groups of skills are fundamental and change slowly over time. The last group is changed frequently and is bound to certain programming languages, APIs, or frameworks.

Video: How to Become a Software Engineer?

Watch the video below, in which Dr. Svetlin Nakov explains the skills of software engineers and how to develop them, how much time it takes, etc.

If you want to be a developer, focus on the fundamental skills and don’t start with the technologies (the last category). First learn to code, then develop algorithmic thinking, then start learning technologies and frameworks and mix them with computer science fundamentals.

The post How to Become a Software Engineer? The 4 Groups of Developer Skills appeared first on SoftUni Global.

]]>
What Do You Need To Become A Programmer? https://softuni.org/blog/what-it-really-means-to-be-a-programmer/ Fri, 07 May 2021 15:33:00 +0000 https://blog.softuni.org/?p=574 Many of you may ask yourself the question: “What do I need to become a programmer?” And immediately after that follows the answer: “A programming language, of course!” But is the programming language enough? What Does It Really Mean To Be A Programmer? To be a programmer means to have the ability to find solutions …

What Do You Need To Become A Programmer? Read More »

The post What Do You Need To Become A Programmer? appeared first on SoftUni Global.

]]>

Many of you may ask yourself the question: “What do I need to become a programmer?” And immediately after that follows the answer: “A programming language, of course!” But is the programming language enough?

What Does It Really Mean To Be A Programmer?

To be a programmer means to have the ability to find solutions for different problems and tasks by creating mathematical and logical constructions. This ability by itself consists of a few key components: a coding skill, developing your algorithmic thinking, and fundamental knowledge in the professional department in which you want to develop – programming language.

The Coding Skills

To some of you, “coding” at first sight may only mean learning a particular programming language. In reality, in order to be able to code, you need the have some technical skills like:

  • Work with variables, loops, and conditional statements;
  • Using functions, methods, and objects;
  • Skills for working with arrays, lists, associative arrays, and etc.

Exactly the acquirement of this knowledge is what gives you the ability to code. And all the programming languages are just another way of showing these abilities and expressing them in code.

Algorithmic Thinking

Algorithmic thinking (also called “engineering thinking”, “mathematical thinking” or “logical thinking”) is another very important trait of a good programmer. What it is? This is the ability to find different mathematical relations in a particular problem and use it as a provider for the information needed to solve that problem. This skill lowers down only to your logical thinking. You can develop that skill by solving different mathematical, and physical (not obligatory), but mandatory by solving many programming problems. Why? Because a programming task is just a huge problem, the solution to which consists of understanding the problem and splitting it into smaller problems, finding the correlation between them, and constructing a solution.
If we want to be more exact – you have to solve a minimum of 1000 programming problems a year. This way you will gain experience in problem-solving using mathematical means – something crucial in programming. In the process of developing that skill, the programming language does not matter.

Basic Knowledge Of The Profession

Here we can already tell that the programming language does matter. Why? Different kinds of problems are solved with different technologies (or programming languages). And those technologies follow different mathematical and logical models called “paradigms“. Different programming languages are based on different paradigms. Here are some of them:

  • Imperative programming – this is a programming paradigm, in which the programming languages are called “statements” that influence a particular program and its current condition. Shortly, in imperative programming using the code we write, we give directions to our program for how to operate. The imperative programming is exactly the opposite of Declarative programming. Popular paradigms which are part of imperative programming are the Object-Oriented-Programming (OOP) and procedural programming.
    • OOP – object-oriented-programming. In this paradigm, in the code we write, we differentiate groups, called “classes” and “objects”, which interact with each other. Popular programming languages, which include this paradigm, are Java, C++, and C#.
    • Procedural programming – unlike the OOP, procedural programming is built on top of the “procedural call”. The procedures (also known as “programs”, “subprograms” and “functions”) represent a sequence of calculated/command steps that are being executed. Each procedure can be called at a given time during the execution of the program, including from other procedures or from itself. The first popular procedural languages appear in the 50s and some of them are Fortran, ALGOL, COBOL, and BASIC. Some of the most popular procedural languages like Pascal and C appear around a decade later.
  • Declarative programming – this is a programming paradigm, which covers the way of constructing the structure and the elements of a computer program – it expresses programming logic that has to be executed without affecting the “control flow”. The paradigm for declarative programming is in the complete opposite of the paradigm for imperative programming. A popular paradigm based on declarative programming is “functional programming”
    • Functional programming – this is a programming paradigm built on top of the concept of declarative programming. The output of a given function depends only on the input parameters that it is provided with. The functional programming is suitable for cases, in which working with imperative paradigms would lead to wrong results.

There are many paradigms and they are all different, here I mentioned only the most popular ones. They however are only a part of successfully acquiring computer technology. You should also know:

  • Data bases – this is a collection of logically connected data, which is part of a specific area. Each data base should be structured in a specific way. There are many existing applications and frameworks, which combined, ease the process of acquiring, structuring, and maintaining the created data bases.
  • Web technologies – here are included the languages for designing different kinds of online functionalities like HTML, CSS, JavaScript, DOM, AJAX, and others.
  • Networks – network programming, network protocols, and network communication – here we talk about the way computers connect to each other.

But why I mentioned that here the programming language does matter? Because different languages follow different paradigms and are designed for different purposes. You cannot expect a language that was created for WEB Design, to cope with problems, which are solvable by OOP or functional programming, and the opposite is also valid. You have to be able to decide what kind of problems you are going to solve and choose the programming language in which to invest your time and effort. However, you must first build the fundamental knowledge described above.

Programming Language

We arrived at the question about the programming language. Since we already specified what the different paradigms аre, now we are going to talk about their other aspect – the “level” of each of them. We use the term “level” to describe whether the coding in that language requires closer contact with the hardware. If the language originates from a lower level, that means that you need to define which sections of your memory your program will use and which not. Meaning that apart from the programming, you need to spend time acquiring skills that are needed for optimizing your program. This leads to the need for more lines of code for describing the action you are taking. On the other side, the programming languages which are on a higher level do not require any optimization from your side and the code you need to write is less.

What Programming Language To Choose As My First?

It depends on you. First, you need to be aware of yourself. If you have some specific interest in the IT sector, find the most appropriate language for that. Languages that are not suitable for beginners are those like Swift, Objective, C, and others. Moreover the languages on lower levels like C++, C and not to mention Assembly. They are extremely difficult and it will be hard for you to gain the needed qualification as a beginner.

If you however are just seeking qualification, or just want to see if programming is your thing, keep in mind that the industry is mostly searching for developers in high-level languages like C#, Java, and Python, and if you are interested in web development: HTML, CSS, JavaScript, and PHP.

Where Can I Improve My Knowledge?

The software engineering program in SoftUni will help you acquire all of the needed knowledge and skills that you need to start your career. If you are interested in Web Development with C# or Java, you will need around 2 years to successfully complete the program and become a wealthy Web Developer with those technologies and around one, one and a half years for starting a job.
If you choose Python or JavaScript your education will be shorter – around 18 months and on the 12th you will be ready to start a job.

The post What Do You Need To Become A Programmer? appeared first on SoftUni Global.

]]>