<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>software development Archives - SoftUni Global</title>
	<atom:link href="https://softuni.org/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>https://softuni.org/tag/software-development/</link>
	<description>Learn Programming and Start a Developer Job</description>
	<lastBuildDate>Fri, 25 Nov 2022 09:16:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://softuni.org/wp-content/uploads/2022/04/cropped-SoftUni-Global-Logo-Square-notext-32x32.png</url>
	<title>software development Archives - SoftUni Global</title>
	<link>https://softuni.org/tag/software-development/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Making A Sliding Puzzle in Java: Step-by-step Guide [Project Tutorials]</title>
		<link>https://softuni.org/project-tutorials/making-a-sliding-puzzle-in-java/</link>
					<comments>https://softuni.org/project-tutorials/making-a-sliding-puzzle-in-java/#comments</comments>
		
		<dc:creator><![CDATA[Nikol Ruseva]]></dc:creator>
		<pubDate>Mon, 17 Oct 2022 13:05:04 +0000</pubDate>
				<category><![CDATA[Step-by-Step Project Tutorials]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[Java programming]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[puzzle]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[step-by-step]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=23354</guid>

					<description><![CDATA[<p>In this edition of the Project Tutorial series, we will create a simple sliding puzzle game in Java.</p>
<p>The post <a href="https://softuni.org/project-tutorials/making-a-sliding-puzzle-in-java/">Making A Sliding Puzzle in Java: Step-by-step Guide [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="23354" class="elementor elementor-23354" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Sliding puzzles are mechanical devices made of blocks of wood or plastic set into a frame as well as simple but addictive computer games that improve your problem-solving skills. The pieces are usually simple shapes or imprinted with colors, patterns, sections of a bigger picture, numbers, or letters.  </span><span style="font-weight: 400;">Sliding puzzles, also known as sliders or sliding-block puzzles, are different from rearrangement puzzles in that the pieces cannot be lifted or removed from the frame. To win, you have to arrange them in a specific pattern by sliding them into certain routes on the board. Each move opens a new path and rearranges the pieces, so you have to plan carefully in order to achieve the end configuration.</span></p><p><span style="font-weight: 400;">Following this tutorial, you will make <strong>your own 3&#215;3 sliding puzzle</strong> using Java.</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-ac60dbc elementor-widget elementor-widget-image" data-id="ac60dbc" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" src="https://softuni.org/wp-content/uploads/2022/10/Puzzle.gif" title="Sliding-Puzzle-Gameplay" alt="Sliding-Puzzle-Gameplay" loading="lazy" />															</div>
				</div>
				<div class="elementor-element elementor-element-34fb39a elementor-widget elementor-widget-text-editor" data-id="34fb39a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;"><strong>Note: To create the game, you can use more advanced implementations like arrays and matrices. The method used in this tutorial is simple and targets absolute beginners.</strong><br />Let’s begin.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2041cf4 elementor-widget elementor-widget-heading" data-id="2041cf4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Before You Start</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-1b467b7 elementor-widget elementor-widget-text-editor" data-id="1b467b7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">For the user interface, you use <strong>Swing</strong>. </span>Swing<span style="font-weight: 400;"> is a <strong>GUI (Graphical User Interface)</strong> widget toolkit for Java.</span><span style="font-weight: 400;"> It is built on top of the AWT (Abstract Windowing Toolkit) API. Unlike AWT, Java Swing provides platform-independent and lightweight components.</span></p><p><span style="font-weight: 400;">The javax.swing package provides classes for the Java Swing API such as <strong>JButton, JTextField, JLabel, JMenu</strong>, etc. You will use the Main method to start the program, but the programming logic will be written in a separate class.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-3c4f9e1 elementor-widget elementor-widget-heading" data-id="3c4f9e1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">
Preparing Variables
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c74cf06 elementor-widget elementor-widget-text-editor" data-id="c74cf06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Create a new project and give it a descriptive and meaningful name. </span></p><p><span style="font-weight: 400;">Your <strong>Main</strong> <strong>method</strong> should look like this:</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-6a49652 elementor-widget elementor-widget-code-highlight" data-id="6a49652" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>public class Main {
   public static void main(String[] args){
       new Puzzle();
   }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-411639f elementor-widget elementor-widget-text-editor" data-id="411639f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Right-click on your project folder and create a new Java class &#8211; </span><b>Puzzle</b><span style="font-weight: 400;">. To use the functionalities (methods) of Swing, the class should </span><b>extend JFrame. </b><span style="font-weight: 400;">To make certain actions happen when you click on the puzzle pieces, you also need an event listener. Make the class </span><b>implement ActionListener.</b><b><br /></b></p>								</div>
				</div>
				<div class="elementor-element elementor-element-f4a4827 elementor-widget elementor-widget-code-highlight" data-id="f4a4827" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Puzzle extends JFrame implements ActionListener{
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b3697b2 elementor-widget elementor-widget-text-editor" data-id="b3697b2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Your puzzle will be <strong>3&#215;3</strong> so you need to declare </span><b>9 buttons </b><span style="font-weight: 400;">for each of the puzzle pieces, as well as a </span><b>shuffle </b><span style="font-weight: 400;">button to rearrange them. You can also implement a </span><b>counter </b><span style="font-weight: 400;">for the number of clicks the user has performed. To make the counter, you need an </span><b>integer </b><span style="font-weight: 400;">and a </span><b>label </b><span style="font-weight: 400;">to visualize the number.</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-4b97940 elementor-widget elementor-widget-code-highlight" data-id="4b97940" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,shuffle;
int counter = 0;
JLabel counterLabel;</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-000838a elementor-widget elementor-widget-heading" data-id="000838a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Creating Constructor
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-138d7ce elementor-widget elementor-widget-text-editor" data-id="138d7ce" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">When you start the game, the first thing you will see is a new <strong>game</strong> <strong>window</strong>. Let’s set it up. Because the Puzzle class inherits (extends) from JFrame, it can call JFrame methods like <strong>setSize()</strong> and <strong>add(element)</strong>.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-ecc7ef9 elementor-widget elementor-widget-code-highlight" data-id="ecc7ef9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>Puzzle(){
   setSize(400,400);
   setLayout(null);
   setVisible(true);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-550d174 elementor-widget elementor-widget-text-editor" data-id="550d174" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">It is <strong>400&#215;400 pixels</strong> in size (which you can customize to your preference) and will close when you click the<strong> X button</strong> on the top right.</span></p><p><span style="font-weight: 400;">Next, you need to initialize all the elements.</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-7dbb766 elementor-widget elementor-widget-code-highlight" data-id="7dbb766" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>b1 = new JButton("1");
b2 = new JButton(" ");
b3 = new JButton("3");
b4 = new JButton("4");
b5 = new JButton("5");
b6 = new JButton("6");
b7 = new JButton("7");
b8 = new JButton("8");
b9 = new JButton("2");
shuffle = new JButton("Shuffle!");
counterLabel = new JLabel("Clicks: 0");</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-cde3b5f elementor-widget elementor-widget-text-editor" data-id="cde3b5f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Then <strong>add</strong> these elements <strong>to the window</strong> and set proper <strong>bounds</strong>.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-ee2595f elementor-widget elementor-widget-code-highlight" data-id="ee2595f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9); add(shuffle);
Container contentPane = this.getContentPane();
contentPane.add(counterLabel);

b1.setBounds(90,60,50,40);
b2.setBounds(160,60,50,40);
b3.setBounds(230,60,50,40);
b4.setBounds(90,115,50,40);
b5.setBounds(160,115,50,40);
b6.setBounds(230,115,50,40);
b7.setBounds(90,170,50,40);
b8.setBounds(160,170,50,40);
b9.setBounds(230,170,50,40);
shuffle.setBounds(135,245,100,40);
counterLabel.setBounds(145,15,180,40);</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-473d62c elementor-widget elementor-widget-text-editor" data-id="473d62c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Now run the program. It should look like this:</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2fe425a elementor-widget elementor-widget-image" data-id="2fe425a" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img fetchpriority="high" decoding="async" width="476" height="484" src="https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle.png" class="attachment-large size-large wp-image-23359" alt="Sliding-Puzzle" srcset="https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle.png 476w, https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle-295x300.png 295w" sizes="(max-width: 476px) 100vw, 476px" />															</div>
				</div>
				<div class="elementor-element elementor-element-2a20d4a elementor-widget elementor-widget-text-editor" data-id="2a20d4a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">The next step is <strong>optional</strong>, but it will improve the <strong>visual appeal</strong> of your game. It involves changing the background color of the puzzle pieces, the font, and the font size. You can select your own or use the ones from this example.</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-886c880 elementor-widget elementor-widget-code-highlight" data-id="886c880" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>shuffle.setBackground(Color.LIGHT_GRAY);

b1.setBackground(Color.decode("#5adbb5"));
b2.setBackground(Color.decode("#5adbb5"));
b3.setBackground(Color.decode("#5adbb5"));
b4.setBackground(Color.decode("#5adbb5"));
b5.setBackground(Color.decode("#5adbb5"));
b6.setBackground(Color.decode("#5adbb5"));
b7.setBackground(Color.decode("#5adbb5"));
b8.setBackground(Color.decode("#5adbb5"));
b9.setBackground(Color.decode("#5adbb5"));

b1.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b2.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b3.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b4.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b5.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b6.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b7.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b8.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
b9.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
shuffle.setFont(new Font(Font.DIALOG, Font.PLAIN, 18));
counterLabel.setFont(new Font(Font.DIALOG, Font.PLAIN, 18));
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-bcddbdc elementor-widget elementor-widget-spacer" data-id="bcddbdc" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-6ab465e elementor-widget elementor-widget-text-editor" data-id="6ab465e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">In the end, you get:</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-389ed4c elementor-widget elementor-widget-image" data-id="389ed4c" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="474" height="485" src="https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle-Customized.png" class="attachment-large size-large wp-image-23360" alt="" srcset="https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle-Customized.png 474w, https://softuni.org/wp-content/uploads/2022/10/Sliding-Puzzle-Customized-293x300.png 293w" sizes="(max-width: 474px) 100vw, 474px" />															</div>
				</div>
				<div class="elementor-element elementor-element-e6e05a0 elementor-widget elementor-widget-text-editor" data-id="e6e05a0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Finally, attach an action listener to every button:</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-1265ac8 elementor-widget elementor-widget-code-highlight" data-id="1265ac8" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
shuffle.addActionListener(this);
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-0330f2b elementor-widget elementor-widget-text-editor" data-id="0330f2b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">And the Puzzle <strong>constructor</strong> is done.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-097e0c9 elementor-widget elementor-widget-heading" data-id="097e0c9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Adding Action</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-6ac099f elementor-widget elementor-widget-text-editor" data-id="6ac099f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">The Action Listener is a simple event handler with only one method &#8211; <strong>actionPerformed </strong></span><span style="font-weight: 400;"><strong>(ActionEvent e)</strong>. It is used to define what should happen when a user performs a certain operation. It <strong>registers</strong> <strong>the</strong> <strong>event</strong> of clicking a button, for example. The ActionListener is one for all buttons, so you have to make a separate if statement for each one of them in the actionPerformed method. Let’s start with the </span><b>Shuffle </b><span style="font-weight: 400;">button.</span><span style="font-weight: 400;"><br /></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-ce1e1d9 elementor-widget elementor-widget-code-highlight" data-id="ce1e1d9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>public void actionPerformed(ActionEvent e){
   if(e.getSource() == shuffle){
       String s = b4.getText();
       b4.setText(b9.getText());
       b9.setText(s);
       s = b1.getText();
       b1.setText(b5.getText());
       b5.setText(s);
       s = b2.getText();
       b2.setText(b7.getText());
       b7.setText(s);
       counter = -1;
       counterLabel.setText("Clicks: 0");
   }</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-91f92b4 elementor-widget elementor-widget-text-editor" data-id="91f92b4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;"><strong>The logic</strong> of moving puzzle pieces is simple: instead of physically moving the pieces around the board, you simply <strong>change</strong> <strong>their</strong> <strong>text</strong>.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e3f817b elementor-widget elementor-widget-code-highlight" data-id="e3f817b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>if(e.getSource() == b1){
   String s = b1.getText();
   if(b2.getText().equals(" ")){ b2.setText(s); b1.setText(" ");}
   else if(b4.getText().equals(" ")){ b4.setText(s); b1.setText(" ");}
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b36e965 elementor-widget elementor-widget-text-editor" data-id="b36e965" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Let’s break the process into a <strong>few steps</strong>:</span><span style="font-weight: 400;"><br /></span></p><ol><li><span style="font-weight: 400;"> Extract the text from the current button;</span></li><li><span style="font-weight: 400;"> Determine which of the adjacent buttons has no text;</span></li><li><span style="font-weight: 400;"> Substitute the empty text with the extracted one;</span></li><li><span style="font-weight: 400;"> Set the text of the current button to an empty string.</span></li></ol><p><span style="font-weight: 400;">Follow this logic for the other pieces as well.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-48b1c62 elementor-widget elementor-widget-code-highlight" data-id="48b1c62" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>if(e.getSource() == b2){
   String s=b2.getText();
   if(b1.getText().equals(" ")){ b1.setText(s); b2.setText(" ");}
   else if(b3.getText().equals(" ")){ b3.setText(s); b2.setText(" ");}
   else if(b5.getText().equals(" ")){ b5.setText(s); b2.setText(" ");}
}
if(e.getSource() == b3){
   String s=b3.getText();
   if(b2.getText().equals(" ")){ b2.setText(s); b3.setText(" ");}
   else if(b6.getText().equals(" ")){ b6.setText(s); b3.setText(" ");}
}
if(e.getSource() == b4){
   String s=b4.getText();
   if(b1.getText().equals(" ")){ b1.setText(s); b4.setText(" ");}
   else if(b7.getText().equals(" ")){ b7.setText(s); b4.setText(" ");}
   else if(b5.getText().equals(" ")){ b5.setText(s); b4.setText(" ");}
}
if(e.getSource() == b5){
   String s=b5.getText();
   if(b2.getText().equals(" ")){ b2.setText(s); b5.setText(" ");}
   else if(b4.getText().equals(" ")){ b4.setText(s); b5.setText(" ");}
   else if(b6.getText().equals(" ")){ b6.setText(s); b5.setText(" ");}
   else if(b8.getText().equals(" ")){ b8.setText(s); b5.setText(" ");}
}
if(e.getSource() == b6){

   String s=b6.getText();
   if(b9.getText().equals(" ")){ b9.setText(s); b6.setText(" ");}
   else if(b3.getText().equals(" ")){ b3.setText(s); b6.setText(" ");}
   else if(b5.getText().equals(" ")){ b5.setText(s); b6.setText(" ");}

}
if(e.getSource() == b7){
   String s=b7.getText();
   if(b4.getText().equals(" ")){ b4.setText(s); b7.setText(" ");}
   else if(b8.getText().equals(" ")){ b8.setText(s); b7.setText(" ");}

}
if(e.getSource() == b8){
   String s=b8.getText();
   if(b7.getText().equals(" ")){ b7.setText(s); b8.setText(" ");}
   else if(b9.getText().equals(" ")){ b9.setText(s); b8.setText(" ");}
   else if(b5.getText().equals(" ")){ b5.setText(s); b8.setText(" ");}
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-5ebe135 elementor-widget elementor-widget-text-editor" data-id="5ebe135" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">The last button marks the end of the puzzle, so it should also include a statement that checks whether it has been solved. For that to happen, the pieces must be put in the following order: </span><span style="font-weight: 400;"><br /></span><strong>1 2 3<br />4 5 6<br />7 8 empty</strong></p><p><span style="font-weight: 400;">Therefore, the simplest way to verify this order is to check the text on each button.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e158015 elementor-widget elementor-widget-code-highlight" data-id="e158015" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>if(e.getSource() == b9){
   String s=b9.getText();
   if(b6.getText().equals(" ")){ b6.setText(s); b9.setText(" ");}
   else if(b8.getText().equals(" ")){ b8.setText(s); b9.setText(" ");}

   if(b1.getText().equals("1")&&b2.getText().equals("2")&&b3.getText()
           .equals("3")&&b4.getText().equals("4")&&b5.getText().equals("5")
           &&b6.getText().equals("6")&&b7.getText().equals("7")&&b8.getText()
           .equals("8")&&b9.getText().equals(" ")){
       JOptionPane.showMessageDialog(Puzzle.this,"YOU WON!\n" + "You clicked: " + counter + " times.");
   }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c26a37f elementor-widget elementor-widget-text-editor" data-id="c26a37f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">You can add a <strong>dialog box</strong> with a custom message that will <strong>pop up when the puzzle is solved</strong>. To do that, use the JOptionPane.showMessageDialog() method.</span></p><p><span style="font-weight: 400;">Finally, <strong>increase</strong> the <strong>counter integer</strong> and <strong>update the label&#8217;s text</strong> to the new value at the end of the if statements.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-1c61d54 elementor-widget elementor-widget-code-highlight" data-id="1c61d54" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>counter++;
counterLabel.setText("Clicks: " + counter);</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-2d2541e elementor-widget elementor-widget-text-editor" data-id="2d2541e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Your sliding puzzle is ready!</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-c3b578a elementor-widget elementor-widget-heading" data-id="c3b578a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Conclusion</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-6f56a8e elementor-widget elementor-widget-text-editor" data-id="6f56a8e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">By following this tutorial, you have programmed your own sliding puzzle in Java using simple if statements and some basic functionality of the Swing library. Explore the library’s other features and think of ways to <strong>expand your project</strong> by adding, for example, a scoreboard, an option to switch between different puzzle sizes, randomization of the shuffle, etc. And don’t forget to <strong>upload</strong> it to your <a href="https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/">GitHub</a> profile.</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">To check out <strong>the final code</strong> and compare it to yours, </span><b>click the link below</b><span style="font-weight: 400;">.</span></p><p><span style="font-weight: 400;">If you need any help or advice, <strong>leave a comment.</strong></span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-0c72984 elementor-widget elementor-widget-spacer" data-id="0c72984" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following steps:</div></div><ul><li><strong>Preparing Variables</strong></li><li><strong>Creating Constructor</strong></li><li><strong>Adding Logic to Action Listener</strong></li></ul></div>								</div>
				</div>
				<div class="elementor-element elementor-element-93d53ef elementor-widget elementor-widget-spacer" data-id="93d53ef" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-dc263e9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="dc263e9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f88ff6" data-id="2f88ff6" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-96efd1f elementor-align-center elementor-widget elementor-widget-button" data-id="96efd1f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-lg" href="https://github.com/SoftUni/SoftUni-Project-Tutorials-Puzzle-Game-Java" target="_blank">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-laptop-code" viewBox="0 0 640 512" xmlns="http://www.w3.org/2000/svg"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg>			</span>
									<span class="elementor-button-text">Download Project</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3cd15ec elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3cd15ec" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-56bfdb0" data-id="56bfdb0" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/project-tutorials/making-a-sliding-puzzle-in-java/">Making A Sliding Puzzle in Java: Step-by-step Guide [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/project-tutorials/making-a-sliding-puzzle-in-java/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Acing The Web Developer Interview &#8211; A Guide [Dev Talks]</title>
		<link>https://softuni.org/dev-talks/web-developer-interview-guide/</link>
					<comments>https://softuni.org/dev-talks/web-developer-interview-guide/#comments</comments>
		
		<dc:creator><![CDATA[Nikol Ruseva]]></dc:creator>
		<pubDate>Fri, 30 Sep 2022 14:26:57 +0000</pubDate>
				<category><![CDATA[Dev Talks]]></category>
		<category><![CDATA[coding challenges]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[interview process]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[tech job]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=23287</guid>

					<description><![CDATA[<p>This article will walk you through the steps of the interview process, giving you some samples of the questions you can expect and advice on how to answer them.</p>
<p>The post <a href="https://softuni.org/dev-talks/web-developer-interview-guide/">Acing The Web Developer Interview &#8211; A Guide [Dev Talks]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="23287" class="elementor elementor-23287" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">There are a lot of <strong><a href="https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/">steps</a> </strong>you need to take before going to an interview. Even when you complete them all,</span> <span style="font-weight: 400;">applying for your first programming job can be an intimidating process, especially when you do not have any professional experience to back up your technical knowledge. A good way to showcase your practical competence is to set up a <strong><a href="https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/">GitHub</a> </strong>profile with all the projects you have completed so far.  </span><span style="font-weight: 400;">In addition to assessing your coding skills, an interview serves as an opportunity for the recruiter to get to know you better and determine whether or not you would fit well into the company culture. </span></p><p><span style="font-weight: 400;">Although every organization has a different interviewing policy, the process usually includes the following steps: </span></p><ul><li><span style="font-weight: 400;">Initial Conversation with a hiring manager;</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Technical Interview with a software developer;</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Coding Challenges.</span></li></ul><p><span style="font-weight: 400;">There are three general groups of questions corresponding to each stage of the interview process &#8211; <strong>personal, technical, and practical</strong>. To give you a better idea of what to expect, we made a list of the most common ones and included hints on how to best answer them. </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2041cf4 elementor-widget elementor-widget-heading" data-id="2041cf4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Personal Questions</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c74cf06 elementor-widget elementor-widget-text-editor" data-id="c74cf06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">In most cases, you will first speak with a hiring manager, who </span><span style="font-weight: 400;">will ask you open-ended questions common to most job interviews, irrespective of the industry:</span></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;"><strong>Tell me about yourself.</strong><br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;">Hint: </span></i><span style="font-weight: 400;">You do not have to go into too many personal details. After all, you are there on a business matter. Share what sparked your interest in programming and what you expect to gain</span><span style="font-weight: 400;"> from </span><span style="font-weight: 400;">the role you are applying for. Explain why you are a good fit for this position, and which of your skills and abilities would benefit the company and make you stand out as a candidate. </span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>Where do you see yourself in five (or ten) years time?</strong><i style="font-weight: inherit;"><span style="font-weight: 400;"><br />Hint:</span></i><span style="font-weight: 400;"> The purpose of this question is to find out if you plan in the long term and whether your goals align with the position you are applying for. </span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>How did you hear about our company?</strong><span style="font-weight: 400;"><br /></span><i><span style="font-weight: 400;">Hint:</span></i> <span style="font-weight: 400;">Be prepared with specific information about the company. </span><span style="font-weight: 400;">Look for information in forums, blogs, on the company&#8217;s Web site, etc. Research their goals and mission and the position you are applying for and mention how they align with your future plans.</span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>What are your greatest strengths and weaknesses?</strong><span style="font-weight: 400;"><br /></span><i><span style="font-weight: 400;">Hint:</span></i> <span style="font-weight: 400;">Mention actual personal qualities that are relevant to the current position. Give context, details, and an example from your own experience or a potential situation in which you would use these strengths to get through a challenge. </span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">When talking about your weaknesses you want to give a well-thought answer that does not sound too rehearsed. The best way is to give an example of a small shortcoming you are working on overcoming. Share what you have learnt from the process and how you will use the experience in your future work.</span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>What are your hobbies and interests?</strong><span style="font-weight: 400;"><br /></span><i><span style="font-weight: 400;">Hint:</span></i><span style="font-weight: 400;"> To dig deeper into your character, the hiring manager might ask you about your interests outside of work. Mention hobbies that you are really into, but make sure to clarify that they will not affect your dedication to the job. Sharing your interests outside of work is a genuine way to show your personality and connect with the interviewer. </span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-000838a elementor-widget elementor-widget-heading" data-id="000838a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Technical Questions</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-550d174 elementor-widget elementor-widget-text-editor" data-id="550d174" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">The interview will continue with a test of your technical knowledge in the form of some <strong>behavioral</strong> and <strong>theoretical</strong> <strong>questions</strong>. At this stage, you are likely to have a software engineer who will ask you progressively harder theoretical questions. Although the technical part of an interview is highly dependent on the job requirements, there are some general questions at the start, like:</span></p><p><img decoding="async" class="size-medium wp-image-23295 alignright" src="https://softuni.org/wp-content/uploads/2022/09/Coding-Person-300x300.png" alt="" width="300" height="300" data-wp-editing="1" srcset="https://softuni.org/wp-content/uploads/2022/09/Coding-Person-300x300.png 300w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person-1024x1024.png 1024w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person-150x150.png 150w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person-768x768.png 768w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person-600x600.png 600w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person-100x100.png 100w, https://softuni.org/wp-content/uploads/2022/09/elementor/thumbs/Coding-Person-pviyi7nm2iq7hqrdk2sfrv5isfxwdrf22t0poc8s3o.png 250w, https://softuni.org/wp-content/uploads/2022/09/Coding-Person.png 1080w" sizes="(max-width: 300px) 100vw, 300px" /></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;"><strong>Why did you choose this programming language, and what interests you about it?</strong><br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> Express your understanding of the technology you chose. Describe its features, advantages, and disadvantages, as well as the applications you can develop with it. To show that you have at least a basic understanding of other languages, you can also draw comparisons with some of them.</span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;"><strong>Describe the steps you take to develop a program, from getting the assignment or an initial idea to its final execution.</strong><br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> Explain the actual sequence of steps you take when developing a program. Interviewers are particularly interested in your project planning process, what coding techniques you use, and whether you follow the best practices that guarantee high-quality and readable code.</span></li></ul><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>How do you debug your code and approach problems?<br /></strong><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>: </span></i><span style="font-weight: 400;">Since troubleshooting and debugging are crucial components of a software engineer&#8217;s work, it is important to describe how you handle issues. This will demonstrate your level of logical and algorithmic thinking and problem-solving skills.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-dceee3d elementor-widget elementor-widget-text-editor" data-id="dceee3d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">The more in-depth questions are usually theoretical, so it is entirely up to you to be prepared beforehand. </span><span style="font-weight: 400;">This is a sample list of technical questions for four of the most popular <strong>programming</strong> <strong>languages</strong> for <strong>web development</strong>, as well as a separate section about <strong>Object Oriented Programming (OOP)</strong>.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-5b722a9 elementor-widget elementor-widget-text-editor" data-id="5b722a9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Java</strong></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the main features of Java?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">Why is Java platform-independent?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between the JDK, JRE, and JVM?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">How do Heap and Stack memory differ?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">Explain the access modifiers used in Java.</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the role of the garbage collector?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is Final word in Java used for?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between Stack and Queue?</span></li></ul><p><strong>C#</strong></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the main features of C#?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">How is C# compiled?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between managed and unmanaged code?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">Explain the different types of classes.</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">Explain the access modifiers used in C#.</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are boxing and unboxing in C#?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the main differences between Array and ArrayList in C#?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between throw exception and throw clause? </span></li></ul><p><strong>Python</strong></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the main features of Python?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between list and tuples?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the built-in data types?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is a namespace?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is PEP?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">How is Python interpreted?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are local and global variables?</span><span style="font-weight: 400;"><br /></span></li></ul><p><strong>JavaScript</strong></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the main features of JavaScript?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the data types in JS?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between ViewState and SessionState?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are JavaScript Cookies?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between pop() and shift() method?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the disadvantages of using innerHTML?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the different types of errors in JavaScript?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the Strict Mode in JavaScript, and how can it be enabled?</span></li></ul><p><strong>OOP</strong></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the principles of OOP?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What are the features of OOP?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the Singleton Class and how to implement it?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is inheritance?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between a class and an object?</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">Explain superclass and subclass.</span></li><li style="font-weight: 400;" aria-level="1" aria-checked="false"><span style="font-weight: 400;">What is the difference between method overloading and method overriding?</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-30b8a38 elementor-widget elementor-widget-text-editor" data-id="30b8a38" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">These questions can be asked specifically about your projects, in case you have any uploaded on your <strong>GitHub</strong> <strong>profile</strong>. The interviewer might be interested in discussing the <strong>technologies</strong> and <strong>practices</strong> that you used to develop them.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-91b4156 elementor-widget elementor-widget-heading" data-id="91b4156" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Coding Challenges</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-06be0a6 elementor-widget elementor-widget-text-editor" data-id="06be0a6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">In addition to the theoretical questions, you might be given a problem to solve. It can be a <strong>take-home assignment</strong> or a coding challenge to <strong>do live during the interview</strong>. Make sure you are familiar with the syntax of the programming language required for the position you are applying for, because a coding challenge may require you to <strong>debug</strong> <strong>a</strong> <strong>block</strong> <strong>of code</strong> or determine what its result would be. It is possible that the code is intentionally made confusing in order to gauge how you would respond when faced with a challenge or in a stressful situation. In this case, the most important things are to stay calm, fight off any anxiety, and try to find a <strong>logical</strong> and <strong>well-structured</strong> <strong>solution</strong> to the problem. </span><span style="font-weight: 400;"><strong>Demonstrating</strong> genuine <strong>enthusiasm</strong> for coding, algorithmic thinking, and a desire to learn is sometimes <strong>more important</strong> <strong>than</strong> coming up with the <strong>right answer</strong>.<br /></span></p><p><span style="font-weight: 400;">Listed b</span><span style="font-weight: 400;">elow are some basic <strong>junior coding challenges</strong> and <strong>hints</strong> on how to resolve them:</span></p><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>Factorial<br /></strong><span style="font-weight: 400;">The factorial of a positive integer is the sum of the multiplication of all the integers smaller than that positive integer. For example:</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">4! = 4*3*2*1 = 24</span><span style="font-weight: 400;"><br /></span>5! = 5*4*3*2*1 = 120<br /><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Task</strong>:</span></i> <span style="font-weight: 400;">Write a program that takes a positive integer as an input and calculates the factorial of that number.<br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> To solve this problem, use either a </span><b style="font-style: inherit;">loop </b><span style="font-weight: 400;">or </span><b style="font-style: inherit;">recursion</b><span style="font-weight: 400;">.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-b43f368 elementor-widget elementor-widget-image" data-id="b43f368" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="576" src="https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-1024x576.png" class="attachment-large size-large wp-image-23296" alt="Factorial-Formula" srcset="https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-1024x576.png 1024w, https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-e1664544249914-300x169.png 300w, https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-e1664544249914-768x432.png 768w, https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-1536x864.png 1536w, https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-e1664544249914-600x338.png 600w, https://softuni.org/wp-content/uploads/2022/09/Factorial-Formula-e1664544249914.png 960w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-080879e elementor-widget elementor-widget-text-editor" data-id="080879e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>Palindrome</strong><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">A palindrome is a sequence of characters which reads the same backward as forward. For example, “radar”, “rotator”, and even longer phrases like “pull up if I pull up”. <br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Task</strong>:</span></i><span style="font-weight: 400;"> Write a program that takes a string as an input and returns if it is a palindrome. <br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> You can: </span></li></ul><ol><li style="list-style-type: none;"><ol><li style="list-style-type: none;"><ol><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Check if the input is a </span><b>string</b><span style="font-weight: 400;">;</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Turn it to </span><b>lower or uppercase</b><span style="font-weight: 400;">;</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Reverse it (using </span><b>a method or a loop</b><span style="font-weight: 400;">);</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Check if the </span><b>reversed string is equal to the input string;</b></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Return the result.</span></li></ol></li></ol></li></ol><ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>FizzBuzz<br /></strong><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Task</strong>:</span></i><span style="font-weight: 400;"> Write a program that counts the numbers from 1 to 100 on a new line.<br /></span>If the number is divisible by 3, print “Fizz”.<br />If the number is divisible by 5, print “Buzz”.<br />If the number is divisible by both 3 and 5, print “FizzBuzz”.<br />Otherwise, print the number.<br /><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> Make a </span><b style="font-style: inherit;">loop</b><span style="font-weight: 400;"> that iterates over the numbers, and for every number, check the given conditions using the </span><b style="font-style: inherit;">remainder operator.</b><span style="font-weight: 400;"><span style="font-weight: 400;"> Be careful with the order of conditions because it can be crucial to the end result.<br /><br /></span></span></li><li aria-level="1" aria-checked="false"><strong>Fibonacci<br /></strong>The Fibonacci sequence is a series of integers (the Fibonacci numbers) like the following one:<br />0, 1, 1, <b style="font-style: inherit;">2</b><span style="font-weight: 400;">, 3, 5, 8, 13, 21, 34<br /></span>Every number after the first two (0 and 1) is the sum of the two preceding ones:<br />2 is the sum of the preceding two numbers &#8211; 1+1<br />0, 1, 1, 2, <b style="font-style: inherit;">3</b><span style="font-weight: 400;">, 5, 8, 13, 21, 34<br /></span>3 is the sum of the preceding two numbers &#8211; 1+2<br />And so on.<br /><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Task</strong>: </span></i><span style="font-weight: 400;">Write a program that takes a positive integer N as an input and returns the N-th element of the Fibonacci sequence.<br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"> The easiest way to solve this is to use </span><b style="font-style: inherit;">recursion, </b><span style="font-weight: 400;">like in this example of Java code:</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-94ad81e elementor-widget elementor-widget-code-highlight" data-id="94ad81e" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-java line-numbers">
				<code readonly="true" class="language-java">
					<xmp>public int fib(int n){

if (n<2) return n;

return fib(n-1) + fib(n-2);
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-dbc96aa elementor-widget elementor-widget-text-editor" data-id="dbc96aa" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li style="font-weight: 400;" aria-level="1" aria-checked="false"><strong>Anagram<br /></strong>Anagrams are words with the same number of letters, but they may be arranged differently. For example, race and care, listen and silent.<br /><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Task</strong>:</span></i><span style="font-weight: 400;"> Write a program that receives two strings as an input and returns true if they are anagrams.<br /></span><i style="font-weight: inherit;"><span style="font-weight: 400;"><strong>Hint</strong>:</span></i><span style="font-weight: 400;"><strong> Sorting</strong> the two words and then comparing them is the quickest way, but it is not the best solution because usually sorting algorithms are time- and memory-consuming.<br /></span>Another approach is to generate <strong>HashMaps</strong> of both words and then <strong>compare them</strong>. Use the HashMaps to check if they contain the same elements and if these elements occurred the same number of times in both maps.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-097e0c9 elementor-widget elementor-widget-heading" data-id="097e0c9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Conclusion</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-e6e05a0 elementor-widget elementor-widget-text-editor" data-id="e6e05a0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Most people are anxious when going to an interview, especially if it is their first time. <br /><strong>Preparing in advance</strong> will always work in your favor giving you a <strong>leg up</strong> over the other candidates and the chance to make a good impression. Having an idea of the general process will help you come up with the best answers to the most common personal, technical, and practical questions when interviewing for a software engineer position.</span></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3cd15ec elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3cd15ec" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-56bfdb0" data-id="56bfdb0" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-talks/web-developer-interview-guide/">Acing The Web Developer Interview &#8211; A Guide [Dev Talks]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-talks/web-developer-interview-guide/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>How To Make A Pong Game in C#: Step-by-step Guide [Project Tutorials]</title>
		<link>https://softuni.org/project-tutorials/how-to-make-a-pong-game-in-csharp-guide/</link>
					<comments>https://softuni.org/project-tutorials/how-to-make-a-pong-game-in-csharp-guide/#comments</comments>
		
		<dc:creator><![CDATA[Nikol Ruseva]]></dc:creator>
		<pubDate>Thu, 01 Sep 2022 14:15:30 +0000</pubDate>
				<category><![CDATA[Step-by-Step Project Tutorials]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[step-by-step]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=23082</guid>

					<description><![CDATA[<p>In this edition of the Project Tutorial series, we will create a simple Pong game with C#.</p>
<p>The post <a href="https://softuni.org/project-tutorials/how-to-make-a-pong-game-in-csharp-guide/">How To Make A Pong Game in C#: Step-by-step Guide [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="23082" class="elementor elementor-23082" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Pong is a two-dimensional sports game that is similar to table tennis. It is one of the earliest video games, first released in 1972. Since then, it has been recreated multiple times in different programming languages. Today, you will learn how to make <strong>your own version</strong> of the game using <strong>simple</strong> <strong>programming concepts in C#</strong>.</p><p>Let’s begin.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-2041cf4 elementor-widget elementor-widget-heading" data-id="2041cf4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Creating the Field</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c74cf06 elementor-widget elementor-widget-text-editor" data-id="c74cf06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>First, you need to prepare the field with an upper and a lower border and two rackets. Declare two constants of type int that define the dimensions of the field &#8211; <b>fieldWidth </b>and <b>fieldLength. </b>To visualize the upper and the lower border, use the string method <b>Repeat </b>on the <b>fieldTile </b>character variable.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-6a49652 elementor-widget elementor-widget-code-highlight" data-id="6a49652" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>const int fieldLength = 50, fieldWidth = 15;
const char fieldTile = '#';
string line = string.Concat(Enumerable.Repeat(fieldTile, fieldLength));</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-411639f elementor-widget elementor-widget-text-editor" data-id="411639f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Then create the game loop and <b>print </b>the borders on the console. The first line starts from coordinates <b>0,0</b> and the second one &#8211; <b>0, fieldWidth</b>(15).</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f4a4827 elementor-widget elementor-widget-code-highlight" data-id="f4a4827" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>while(true) 
{ 
    Console.SetCursorPosition(0,0);
    Console.WriteLine(line);

    Console.SetCursorPosition(0,fieldWidth);
    Console.WriteLine(line);
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b3697b2 elementor-widget elementor-widget-text-editor" data-id="b3697b2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Next, make a variable for the rackets’ size &#8211; <b>racketLength, </b>for the character used to visualize them &#8211; <b>racketTile, </b>and for their positions &#8211; <b>leftRacketHeight </b>and <b>rightRacketHeight</b>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-4b97940 elementor-widget elementor-widget-code-highlight" data-id="4b97940" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>const int racketLength = fieldWidth / 4;
const char racketTile = '|';
            
int leftRacketHeight = 0;
int rightRacketHeight = 0;</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-138d7ce elementor-widget elementor-widget-text-editor" data-id="138d7ce" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>To make the rackets appear on the field,add a <b>for loop </b>in the game loop.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ecc7ef9 elementor-widget elementor-widget-code-highlight" data-id="ecc7ef9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>for(int i = 0; i < racketLength; i++)
{
    Console.SetCursorPosition(0, i + 1 + leftRacketHeight);
    Console.WriteLine(racketTile);
    Console.SetCursorPosition(fieldLength - 1, i + 1 + rightRacketHeight);
    Console.WriteLine(racketTile);
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-0853386 elementor-widget elementor-widget-spacer" data-id="0853386" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-000838a elementor-widget elementor-widget-heading" data-id="000838a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Player Movement</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-550d174 elementor-widget elementor-widget-text-editor" data-id="550d174" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Make a loop that will continue until a key is pressed. After the loop, check <b>which key has been pressed</b> using a switch and <b>update the rackets’ positions</b> based on that. C<b>lear the previous positions</b> with another for loop.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7dbb766 elementor-widget elementor-widget-code-highlight" data-id="7dbb766" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>while(!Console.KeyAvailable)
{
    
}
           
//Check which key has been pressed
switch(Console.ReadKey().Key)
{
    case ConsoleKey.UpArrow:
    if(rightRacketHeight > 0)
    {
        rightRacketHeight--;
    }
    break;

    case ConsoleKey.DownArrow:
    if(rightRacketHeight < fieldWidth - racketLength - 1)
    {
        rightRacketHeight++;
    }
    break;

    case ConsoleKey.W:
    if(leftRacketHeight > 0)
    {
        leftRacketHeight--;
    }
    break;
    
    case ConsoleKey.S:
    if(leftRacketHeight < fieldWidth - racketLength - 1)
    {
        leftRacketHeight++;
    }
    break;
}

//Clear the rackets’ previous positions
for(int i = 1; i < fieldWidth; i++)             
{
Console.SetCursorPosition(0,i);
Console.WriteLine(" ");
Console.SetCursorPosition(fieldLength - 1,i);
Console.WriteLine(" ");
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-3e05056 elementor-widget elementor-widget-spacer" data-id="3e05056" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-91b4156 elementor-widget elementor-widget-heading" data-id="91b4156" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Adding a Ball</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-06be0a6 elementor-widget elementor-widget-text-editor" data-id="06be0a6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>What you need to know about the ball is its <b>coordinates</b>, the <b>character representation </b>on the field, and its <b>direction</b>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ee2595f elementor-widget elementor-widget-code-highlight" data-id="ee2595f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>int ballX = fieldLength / 2;
    int ballY = fieldWidth / 2;
    const char ballTile = 'O';

    bool isBallGoingDown = true;
    bool isBallGoingRight = true;</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-473d62c elementor-widget elementor-widget-text-editor" data-id="473d62c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Let’s go back to the empty while loop that waits for a key to be pressed. It has to <strong>update the ball’s position.</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-886c880 elementor-widget elementor-widget-code-highlight" data-id="886c880" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>while(!Console.KeyAvailable)
{
    Console.SetCursorPosition(ballX, ballY);
    Console.WriteLine(ballTile);
    Thread.Sleep(100); //Adds a timer so that the players have time to react
    
    Console.SetCursorPosition(ballX, ballY);
    Console.WriteLine(" "); //Clears the previous position of the ball
    
    //Update position of the ball
    if(isBallGoingDown)
    {
    ballY++;
    } else
    {
    ballY--;
    }
    if(isBallGoingRight)
    {
    ballX++;
    } else
    {
    ballX--;
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-2a20d4a elementor-widget elementor-widget-text-editor" data-id="2a20d4a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>However, this code does not limit the movement of the ball to the borders of the field. You need to add more conditions to the same while loop and declare variables to store the players’ points.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-be03d22 elementor-widget elementor-widget-code-highlight" data-id="be03d22" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>int leftPlayerPoints = 0;
int rightPlayerPoints = 0;
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-798a6f4 elementor-widget elementor-widget-code-highlight" data-id="798a6f4" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>if(ballY == 1 || ballY == fieldWidth - 1)
{
isBallGoingDown = !isBallGoingDown; //Change direction
}

if(ballX == 1)
{
    //Left racket hits the ball and it bounces
   if(ballY >= leftRacketHeight + 1 && ballY <= leftRacketHeight + racketLength) 
   {
       isBallGoingRight = !isBallGoingRight;
   }
   else //Ball goes out of the field; Right player scores
   {
      rightPlayerPoints++;
      ballY = fieldWidth / 2;
      ballX = fieldLength / 2;
      Console.SetCursorPosition(scoreboardX, scoreboardY);
      Console.WriteLine($"{leftPlayerPoints} | {rightPlayerPoints}");
      if(rightPlayerPoints == 10)
      {
          goto outer;
      }
   }
}

if(ballX == fieldLength - 2)
{
    //Right racket hits the ball and it bounces
   if(ballY >= rightRacketHeight + 1 && ballY <= rightRacketHeight + racketLength) 
   {
       isBallGoingRight = !isBallGoingRight;
   }
   else //Ball goes out of the field; Left player scores
   {
      leftPlayerPoints++;
      ballY = fieldWidth / 2;
      ballX = fieldLength / 2;
      Console.SetCursorPosition(scoreboardX, scoreboardY);
      Console.WriteLine($"{leftPlayerPoints} | {rightPlayerPoints}");
      if(leftPlayerPoints == 10)
      {
          goto outer;
      }
       
   }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-bcddbdc elementor-widget elementor-widget-spacer" data-id="bcddbdc" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-097e0c9 elementor-widget elementor-widget-heading" data-id="097e0c9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Scoreboard Visualization</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-e6e05a0 elementor-widget elementor-widget-text-editor" data-id="e6e05a0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>To add a scoreboard, you need variables that store its position.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1265ac8 elementor-widget elementor-widget-code-highlight" data-id="1265ac8" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>int scoreboardX = fieldLength / 2 -2;
int scoreboardY = fieldWidth + 1;
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-6ac099f elementor-widget elementor-widget-text-editor" data-id="6ac099f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The scoreboard is printed on the console every time a player increases their score. Let’s say the game ends when one of the players reaches <strong>10 points</strong>. You need to break out of the game loop with the <b>goto</b> command.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ce1e1d9 elementor-widget elementor-widget-code-highlight" data-id="ce1e1d9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>//Left Player
leftPlayerPoints++;
ballY = fieldWidth / 2;
ballX = fieldLength / 2;
Console.SetCursorPosition(scoreboardX, scoreboardY);
Console.WriteLine("${leftPlayerPoints} | {rightPlayerPoints}")

if(leftPlayerPoints == 10)
{
      goto outer;
}

//Right Player
rightPlayerPoints++;
ballY = fieldWidth / 2;
ballX = fieldLength / 2;
Console.SetCursorPosition(scoreboardX, scoreboardY);
Console.WriteLine("${leftPlayerPoints} | {rightPlayerPoints}")
if(rightPlayerPoints == 10)
{
      goto outer;
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-91f92b4 elementor-widget elementor-widget-text-editor" data-id="91f92b4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Outside of the game loop put a <strong>marker</strong>, clear the console and reset the cursor. Check who the winner is and print the appropriate message.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-e3f817b elementor-widget elementor-widget-code-highlight" data-id="e3f817b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>outer:;
        Console.Clear();
        Console.SetCursorPosition(0,0);
        
        if(rightPlayerPoints == 10)
        {
        Console.WriteLine("Right player won!");
        } 
        else 
        {
        Console.WriteLine("Left player won!");
        }</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b36e965 elementor-widget elementor-widget-text-editor" data-id="b36e965" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>If you’ve followed all the steps your project should be finished and working now. You can always <strong>adjust the values</strong> of the variables. For example, you can make the field bigger or smaller or increase the speed of the ball to make the game more challenging.</p><p>To check out the final code and compare it to yours <strong>click the link below</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0c72984 elementor-widget elementor-widget-spacer" data-id="0c72984" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/K0hh_4Lp6_A&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-3738a62 elementor-widget elementor-widget-spacer" data-id="3738a62" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following steps:</div></div><ul><li><strong>Creating a Field</strong></li><li><strong>Implementing Player Movement</strong></li><li><strong>Adding a Ball</strong></li><li><strong>Scoreboard Visualization</strong></li></ul></div>								</div>
				</div>
				<div class="elementor-element elementor-element-93d53ef elementor-widget elementor-widget-spacer" data-id="93d53ef" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-dc263e9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="dc263e9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f88ff6" data-id="2f88ff6" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-96efd1f elementor-align-center elementor-widget elementor-widget-button" data-id="96efd1f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-lg" href="https://github.com/SoftUni/SoftUni-Project-Tutorials---Pong-Game-C-Sharp/" target="_blank">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-laptop-code" viewBox="0 0 640 512" xmlns="http://www.w3.org/2000/svg"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg>			</span>
									<span class="elementor-button-text">Download Project</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3cd15ec elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3cd15ec" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-56bfdb0" data-id="56bfdb0" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/project-tutorials/how-to-make-a-pong-game-in-csharp-guide/">How To Make A Pong Game in C#: Step-by-step Guide [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/project-tutorials/how-to-make-a-pong-game-in-csharp-guide/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>All The New JavaScript Features Coming Up with ECMAScript 2022</title>
		<link>https://softuni.org/dev-talks/all-the-new-javascript-features-coming-up-with-ecmascript-2022/</link>
					<comments>https://softuni.org/dev-talks/all-the-new-javascript-features-coming-up-with-ecmascript-2022/#respond</comments>
		
		<dc:creator><![CDATA[Nikol Ruseva]]></dc:creator>
		<pubDate>Thu, 25 Aug 2022 08:48:25 +0000</pubDate>
				<category><![CDATA[Dev Talks]]></category>
		<category><![CDATA[ecmascript]]></category>
		<category><![CDATA[ecmascript2022]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js2022]]></category>
		<category><![CDATA[jsfeatures]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=22801</guid>

					<description><![CDATA[<p>In this article, you will learn about the new JavaScript features of 2022 and how to use them to ease your work as a software developer.</p>
<p>The post <a href="https://softuni.org/dev-talks/all-the-new-javascript-features-coming-up-with-ecmascript-2022/">All The New JavaScript Features Coming Up with ECMAScript 2022</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="22801" class="elementor elementor-22801" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d002d1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d002d1" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8a58875" data-id="8a58875" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ef0ae54 elementor-widget elementor-widget-text-editor" data-id="ef0ae54" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The thirteenth edition of ECMAScript Language specification was officially approved on June 22, 2022. With its release, new features were added to the JavaScript language:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-33f28ac elementor-widget elementor-widget-text-editor" data-id="33f28ac" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>Method .at();</li><li>Object.hasOwn();</li><li>RegExp: match indices(‘d’ flag);</li><li>Error: .cause;</li><li>New members of Classes;</li><li>Private Slot Checks;</li><li>Top-level Await.</li></ul><p>Now let’s find out more about each new feature.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-6323310 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6323310" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f007326" data-id="f007326" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ad329c3 elementor-widget elementor-widget-heading" data-id="ad329c3" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Method .at()</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-a1dc8e1 elementor-widget elementor-widget-text-editor" data-id="a1dc8e1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The method .at() is supported by indexable values like <strong>Array</strong>, <strong>String</strong>, or <strong>TypedArray</strong>. It takes a <strong>positive or negative</strong> integer value and returns the element at the given index. </p><p>In this example, there is an array with three elements, which means that its length is 3. The first element is at index 0 and the last is at index array length -1 (in this example at index 2).</p><p>To check what the element at a certain index is, use the bracket operator (<strong>animals[0]</strong>). For indexes out of the range, the program returns <strong>“Undefined“</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-dd680b8 elementor-widget elementor-widget-code-highlight" data-id="dd680b8" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let animals = ["Cat", "Dog", "Cow"];

console.log(animals[0]);
console.log(animals[animals.length - 1]) 
console.log(animals[animals.length])

//Cat
//Cow
//undefined
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-08e0f24 elementor-widget elementor-widget-text-editor" data-id="08e0f24" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The new feature works exactly like the bracket operator but it allows <strong>negative</strong> <strong>indexing</strong> of elements. The last element is accessed easily by replacing <strong>animals[animals.length &#8211; 1]</strong> with <strong>animals.at(-1)</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-7de01d9 elementor-widget elementor-widget-code-highlight" data-id="7de01d9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let animals = ["Cat", "Dog", "Cow"];

console.log(animals.at(0));
console.log(animals.at(-1));

//Cat
//Cow
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-df93b30 elementor-widget elementor-widget-code-highlight" data-id="df93b30" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>//Example with a String
let string = "Hello, World!";

console.log(string.at(-1));

//!
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-fc46f4b elementor-widget elementor-widget-spacer" data-id="fc46f4b" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-9ab65d9 elementor-widget elementor-widget-heading" data-id="9ab65d9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Object: .hasOwn()</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-f4ef827 elementor-widget elementor-widget-text-editor" data-id="f4ef827" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Object.hasOwn() returns <strong>true</strong> if the specified object has the indicated property as its own property. If the property is inherited or does not exist, the method returns <strong>false</strong>.</p><p>Object.hasOwn() is intended as a <strong>replacement</strong> of Object.hasOwnProperty()</p>								</div>
				</div>
				<div class="elementor-element elementor-element-fce8012 elementor-widget elementor-widget-text-editor" data-id="fce8012" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Before:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-106ce0b elementor-widget elementor-widget-code-highlight" data-id="106ce0b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let user = {
name: 'John Doe',
role: 'Admin'
};

console.log(user.hasOwnProperty('role'));
console.log(user.hasOwnProperty('age'));

//true
//false

</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-1c4266a elementor-widget elementor-widget-text-editor" data-id="1c4266a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>After:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-176f2ab elementor-widget elementor-widget-code-highlight" data-id="176f2ab" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let user = {
name: 'John Doe',
role: 'Admin'
};

console.log(Object.hasOwn(user, 'role'));
console.log(Object.hasOwn(user, 'age'));

//true
//false
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-3af7b62 elementor-widget elementor-widget-spacer" data-id="3af7b62" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-d09faa1 elementor-widget elementor-widget-heading" data-id="d09faa1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">RegExp: match indices(‘d’ flag)
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-2c54e67 elementor-widget elementor-widget-text-editor" data-id="2c54e67" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>ECMA Script 2022 introduced a new <strong>/d flag</strong> for Regular Expressions. It provides some <strong>additional</strong> <strong>information</strong> about the start and indices position end of each match in the input string.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-281192f elementor-widget elementor-widget-text-editor" data-id="281192f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Without the new feature the following information has been provided:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a4bc05d elementor-widget elementor-widget-code-highlight" data-id="a4bc05d" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let string = 'hello1helloAll';
let regEx = /hello(\w)/g;
let result = [...string.matchAll(regEx)];
console.log(result[0]);
//[ 'hello1', '1', index: 0, input: 'hello1helloAll', groups: undefined ]

let string = 'hello1helloAll';
let regEx = /hello(\w)/g;
let result = [...string.matchAll(regEx)];
let regEx2 = /hello(\w)/dg;
let result2 = [...string.matchAll(regEx2)];
console.log(result2[0]);

</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-2182bd2 elementor-widget elementor-widget-text-editor" data-id="2182bd2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>With the /d flag there is an array with the indices of the different elements that match the regex:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-c698c39 elementor-widget elementor-widget-code-highlight" data-id="c698c39" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>[
  'hello1',
  '1',
  index: 0,
  input: 'hello1helloAll',
  groups: undefined,
  indices: [ [ 0, 6 ], [ 5, 6 ], groups: undefined ]
]

</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-8252814 elementor-widget elementor-widget-spacer" data-id="8252814" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-d07cf8b elementor-widget elementor-widget-heading" data-id="d07cf8b" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Error: .cause</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-68bcdf6 elementor-widget elementor-widget-text-editor" data-id="68bcdf6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>With the Error .cause, you can add <strong>more</strong> <strong>essential</strong> <strong>information</strong> <strong>to the errors</strong> you receive. You should specify the error options as a second parameter, and with the “cause“ key you can pass the error that you want to chain.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b2ba546 elementor-widget elementor-widget-text-editor" data-id="b2ba546" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Before:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-9e71db4 elementor-widget elementor-widget-code-highlight" data-id="9e71db4" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>const weatherNow = async (city) => {
    try {
      const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=67a20d293903cbcf9aab38633b30fbf9`);
      const info = await response.json();
      const description = info.weather[0].description;
      return description;
    } catch (error) {
throw new Error('Something went wrong')
    }
  }
 
try {
    await weatherNow('');           //Empty string
} catch(error) {
    console.log(error);
}

//Error: Something went wrong
    //at weatherNow (<anonymous>:8:7)
    //at async <anonymous>:13:5
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b3726fb elementor-widget elementor-widget-text-editor" data-id="b3726fb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>After:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-19a810c elementor-widget elementor-widget-code-highlight" data-id="19a810c" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>const weatherNow = async (city) => {
    try {
      const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=67a20d293903cbcf9aab38633b30fbf9`);
      const info = await response.json();
      const description = info.weather[0].description;
      return description;
    } catch (error) {
throw new Error('Something went wrong', { cause: error })
    }
  }
 
try {
    await weatherNow('');        //Empty String
} catch(error) {
    console.log(error.cause);
}

//TypeError: Cannot read properties of undefined (reading '0')
    //at weatherNow (<anonymous>:5:39)
    //at async <anonymous>:13:5

</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4fef07b elementor-widget elementor-widget-spacer" data-id="4fef07b" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-e27eba3 elementor-widget elementor-widget-heading" data-id="e27eba3" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">New Members of Classes </h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4fa378f elementor-widget elementor-widget-text-editor" data-id="4fa378f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Static class fields and methods are not used on instances of a class. Instead, they can be called on the <strong>class</strong> <strong>itself</strong> and are declared using the <strong>static</strong> <strong>keyword</strong>. Static methods are often utility functions and helpers, whereas static properties are useful for <strong>caches</strong>, <strong>fixed-configuration</strong>, or any other data we do not need to be replicated across instances.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-60562d3 elementor-widget elementor-widget-text-editor" data-id="60562d3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Before:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e6cd331 elementor-widget elementor-widget-code-highlight" data-id="e6cd331" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>class User {
    firstName = 'Jon';
};
  
console.log(User.firstName); 
  
//undefined
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-46722af elementor-widget elementor-widget-text-editor" data-id="46722af" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>After:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-16da158 elementor-widget elementor-widget-code-highlight" data-id="16da158" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>class User {
    static firstName = 'Jon';
};

console.log(User.firstName); 
  
//Jon
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-ce1c637 elementor-widget elementor-widget-spacer" data-id="ce1c637" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c5073ab elementor-widget elementor-widget-heading" data-id="c5073ab" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Private Slot Checks</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-da6cbf6 elementor-widget elementor-widget-text-editor" data-id="da6cbf6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>EcmaScript 2022 added new features such as <strong>private instance fields</strong>, <strong>methods</strong>, and <strong>accessors</strong>. To initialize a private method or a field before you had to add an underscore at the beginning of its name, but this did not guarantee that the method/field will be private. Now, you just need to add a <strong>#</strong> at the beginning of the method name to have it declared as <strong>private</strong>.</p><p>It looks like this:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-baf627c elementor-widget elementor-widget-code-highlight" data-id="baf627c" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>class User {
    firstName = 'John';
    lastName = 'Doe';
    #role = 'Admin';
}
 
const adminUser = new User();
console.log(adminUser.role); 
  
//undefined</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4ce8580 elementor-widget elementor-widget-code-highlight" data-id="4ce8580" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>class User {
    firstName = 'John';
    lastName = 'Doe';
    role = 'Admin';
    #sayHi() {
        return this.firstName + ' ' + this.lastName + ' with role ' + this.role + ' says Hi!';
    }
}
 
  const adminUser = new User();
  console.log(adminUser.sayHi());      
  
//TypeError: adminUser.sayHi is not a function
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-16571d8 elementor-widget elementor-widget-spacer" data-id="16571d8" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-cc381cf elementor-widget elementor-widget-heading" data-id="cc381cf" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Top-level Await 
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4f978e3 elementor-widget elementor-widget-text-editor" data-id="4f978e3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Before ECMAScript 2022 await could only be used in the scope of asynchronous functions. Now the await keyword can be used <strong>outside of an async function</strong> within a JavaScript module. This means that a module waits for its child modules that use await to execute before it runs itself.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b6b7e1a elementor-widget elementor-widget-code-highlight" data-id="b6b7e1a" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=london&appid=67a20d293903cbcf9aab38633b30fbf9`);
const info = await response.json();
const description = info.weather[0].description;
console.log(description);</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-7550496 elementor-widget elementor-widget-text-editor" data-id="7550496" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>We will receive an error:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-6fc07b7 elementor-widget elementor-widget-code-highlight" data-id="6fc07b7" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>SyntaxError: await is only validin async functions and the top-level bodies of modules</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4259b60 elementor-widget elementor-widget-text-editor" data-id="4259b60" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>With ECMAScript 2022  it works fine and you will see the following:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-fe5b0da elementor-widget elementor-widget-code-highlight" data-id="fe5b0da" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>//clear sky</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4c289cd elementor-widget elementor-widget-spacer" data-id="4c289cd" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-ebe98e9 elementor-widget elementor-widget-heading" data-id="ebe98e9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-xl">Conclusion</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-8d43d09 elementor-widget elementor-widget-text-editor" data-id="8d43d09" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nowadays when technology is rapidly evolving being <strong>up to date</strong> is an important part of working as a software developer.</p><p>The EcmaScript specification for 2022 contains some <strong>significant</strong> <strong>changes</strong> that aim to provide convenience and efficiency in programming by allowing you to write more <strong>expressive</strong> and <strong>concise</strong> <strong>code</strong>. After reading this post, you are now familiar with all of the new features and it is up to you to choose which of them to use into your JavaScript programming.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-5ef077c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5ef077c" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c75d272" data-id="c75d272" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-talks/all-the-new-javascript-features-coming-up-with-ecmascript-2022/">All The New JavaScript Features Coming Up with ECMAScript 2022</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-talks/all-the-new-javascript-features-coming-up-with-ecmascript-2022/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Java or Kotlin &#8211; What Is Better for Android Development?</title>
		<link>https://softuni.org/dev-talks/java-or-kotlin-what-is-better-for-android-development/</link>
					<comments>https://softuni.org/dev-talks/java-or-kotlin-what-is-better-for-android-development/#respond</comments>
		
		<dc:creator><![CDATA[Nikol Ruseva]]></dc:creator>
		<pubDate>Fri, 29 Jul 2022 14:24:52 +0000</pubDate>
				<category><![CDATA[Dev Talks]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[android development]]></category>
		<category><![CDATA[androiddvelopment]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java programming]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=22752</guid>

					<description><![CDATA[<p>In this article, we examine the differences between Java and Kotlin and their strengths and weaknesses to help you make a decision when choosing a programming language for Android development.</p>
<p>The post <a href="https://softuni.org/dev-talks/java-or-kotlin-what-is-better-for-android-development/">Java or Kotlin &#8211; What Is Better for Android Development?</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="22752" class="elementor elementor-22752" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-36e9adb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="36e9adb" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-52e3c27" data-id="52e3c27" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3b02f7e elementor-widget elementor-widget-text-editor" data-id="3b02f7e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>When it comes to Android development, two of the most popular programming languages are Java and Kotlin. While Kotlin, which was released in 2011, is still being developed, Java has been around since 1995 and is open source, making it one of the most widely used languages. However, Kotlin has been taking off since 2017 when Google included it as an official Android development language along with Java.</p><p>If you’re new to Android development, the question of whether to use Kotlin or Java will probably not be on your mind at first. You will most likely opt to use Java until you become more familiar with the platform and decide what language would better suit your needs. But once you start becoming more confident with your Android development skills, choosing between Kotlin and Java will be a bit more difficult as both languages have some advantages and drawbacks, which we will examine in this article.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-279dc43 elementor-widget elementor-widget-heading" data-id="279dc43" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Java</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c62c4b2 elementor-widget elementor-widget-text-editor" data-id="c62c4b2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Java is a <strong>versatile</strong> and powerful programming language that can be used for a wide range of purposes. It is <strong>platform-independent</strong> and <strong>object-oriented</strong>. Platform independency is possible since the language uses <strong>byte-code</strong> and once compiled, the code can be run on <strong>any machine</strong> irrespective of its operating system. Also, using the principles of object-oriented programming increases the <strong>flexibility</strong> and <strong>reusability</strong> of the code.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-128971f elementor-widget elementor-widget-image" data-id="128971f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="576" src="https://softuni.org/wp-content/uploads/2022/07/Java-vs-Kotlin.png" class="attachment-large size-large wp-image-22784" alt="Benefits-Of-Java-Infograph" srcset="https://softuni.org/wp-content/uploads/2022/07/Java-vs-Kotlin.png 1024w, https://softuni.org/wp-content/uploads/2022/07/Java-vs-Kotlin-300x169.png 300w, https://softuni.org/wp-content/uploads/2022/07/Java-vs-Kotlin-768x432.png 768w, https://softuni.org/wp-content/uploads/2022/07/Java-vs-Kotlin-600x338.png 600w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-ad97bf8 elementor-widget elementor-widget-text-editor" data-id="ad97bf8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Java does <strong>not use</strong> explicit pointers. This means that developers can not access the memory directly from the code. Also, programs are executed inside the<strong> Java Virtual Machine (JVM)</strong>, providing additional <strong>security</strong> to the code. If an unauthorized method tries to access a private variable, the program fails to compile and prevents the system from a crash.</p><p>Java is widely used and has a large community of developers who are continuously creating new <strong>libraries</strong> and <strong>tools</strong> to make development easier. Moreover, Android Studio, the official IDE for Android development, is based on JetBrains&#8217; IntelliJ IDEA, which also supports Java development.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3a8abb2 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3a8abb2" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07eef48" data-id="07eef48" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f72d542 elementor-widget elementor-widget-heading" data-id="f72d542" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Kotlin</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-537fb80 elementor-widget elementor-widget-text-editor" data-id="537fb80" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kotlin is a new language developed by <strong>JetBrains</strong>. It is a <strong>statically</strong> typed programming language. Just like Java, it uses byte-code which can be executed on the JVM. It can also be <strong>compiled into JavaScript</strong>. It has intuitive, easy-to-learn syntax. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-773925e elementor-widget elementor-widget-image" data-id="773925e" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="576" src="https://softuni.org/wp-content/uploads/2022/07/Benefits-Kotlin.png" class="attachment-large size-large wp-image-22757" alt="Benefits-Of-Kotlin-Infograph" srcset="https://softuni.org/wp-content/uploads/2022/07/Benefits-Kotlin.png 1024w, https://softuni.org/wp-content/uploads/2022/07/Benefits-Kotlin-300x169.png 300w, https://softuni.org/wp-content/uploads/2022/07/Benefits-Kotlin-768x432.png 768w, https://softuni.org/wp-content/uploads/2022/07/Benefits-Kotlin-600x338.png 600w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-8481772 elementor-widget elementor-widget-text-editor" data-id="8481772" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kotlin is <strong>compatible</strong> with Java and can be used alongside existing Java code. In fact, its purpose is to <strong>interoperate</strong> with code written in Java and improve it while using Java libraries and frameworks. This leads to <strong>reducing the boilerplate code</strong>, making it simpler, easier to read and understand, and safer in terms of potential bugs. Moreover, you can write Gradle code in Kotlin, allowing you to build<strong> iOS applications</strong>.</p><p>Kotlin is concise and expressive, meaning that you can write <strong>less code</strong> to accomplish the <strong>same</strong> <strong>task</strong>. This can lead to fewer errors and a faster development process overall. An example of reducing the boilerplate code is using the <strong>Data</strong> <strong>Classes</strong>.<br />You can see a side-by-side comparison of code written in Java and in Kotlin on the graphic below.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9d85b43 elementor-widget elementor-widget-image" data-id="9d85b43" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="576" src="https://softuni.org/wp-content/uploads/2022/07/Class-Definition-Java-Kotlin.png" class="attachment-large size-large wp-image-22758" alt="Class-Definition-Java-Kotlin-Comparison" srcset="https://softuni.org/wp-content/uploads/2022/07/Class-Definition-Java-Kotlin.png 1024w, https://softuni.org/wp-content/uploads/2022/07/Class-Definition-Java-Kotlin-300x169.png 300w, https://softuni.org/wp-content/uploads/2022/07/Class-Definition-Java-Kotlin-768x432.png 768w, https://softuni.org/wp-content/uploads/2022/07/Class-Definition-Java-Kotlin-600x338.png 600w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-e70bb82 elementor-widget elementor-widget-text-editor" data-id="e70bb82" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kotlin has <strong>null safety built-in</strong>, which eliminates the risk of NullPointerException (NPE) errors since it fails to compile whenever an NPE may be thrown. It also supports higher-order functions, lambda expressions, and operator overloading, making the language a combination of <strong>functional</strong> and <strong>procedural</strong> <strong>programming</strong>.</p><p>Although it is a new language, it is gaining a lot of popularity in the development community. However, there are still some drawbacks to using Kotlin for Android development. The language is not yet as widely adopted as Java. This means that the learning resources are limited. Also, the community of Kotlin users is smaller so finding help and support, or experienced developers for your business may be more difficult. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-6d67235 elementor-widget elementor-widget-heading" data-id="6d67235" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Conclusion</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-58ecb02 elementor-widget elementor-widget-text-editor" data-id="58ecb02" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kotlin and Java are both great options for Android development. They each have their own strengths and weaknesses that should be considered. Kotlin is a younger language, but it has many features that make it a great choice for developers. However, the concepts of Android SDK are based on Java so learning the basics might be useful. Moreover, it is still the most popular language for Android development and additional knowledge would definitely will be an advantage to you. </p><p>The answer to the question “Java or Kotlin?” depends on your preferences and what you are looking for in a programming language. One thing is certain &#8211; learning both will benefit you by expanding your tech stack and improving your coding abilities.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-talks/java-or-kotlin-what-is-better-for-android-development/">Java or Kotlin &#8211; What Is Better for Android Development?</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-talks/java-or-kotlin-what-is-better-for-android-development/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>An Insider&#8217;s Perspective on the IT Industry</title>
		<link>https://softuni.org/dev-talks/an-insider-perspective-on-the-it-industry/</link>
					<comments>https://softuni.org/dev-talks/an-insider-perspective-on-the-it-industry/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Thu, 14 Apr 2022 15:00:00 +0000</pubDate>
				<category><![CDATA[Dev Talks]]></category>
		<category><![CDATA[innovative]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[modern]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[senior developer]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software technologies]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=18039</guid>

					<description><![CDATA[<p>In this article, we will meet you with William Abboud. He is a software engineer with more than 8 years of experience. Today he is here to answer your questions.</p>
<p>The post <a href="https://softuni.org/dev-talks/an-insider-perspective-on-the-it-industry/">An Insider&#8217;s Perspective on the IT Industry</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="18039" class="elementor elementor-18039" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Meet <strong>William Abboud</strong>. He is a <strong>senior software engineer </strong>that decided to talk about his path as a developer so far. We asked <strong>William </strong>some questions that might help you <strong>start your career as a programmer</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-719e8cd elementor-widget elementor-widget-heading" data-id="719e8cd" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">How did you get into programming?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/boj1BgZbGXI&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-3d7dddf elementor-widget elementor-widget-text-editor" data-id="3d7dddf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As a student, I liked computer networking. In 12th grade, I first had to write programs with <strong>C++</strong> and <strong>Pascal</strong>. The materials were not enough, and I watched a few <strong>youtube video tutorials</strong> and got hooked. After I graduated, I moved to the United Kingdom and started learning <strong>computer science</strong> there.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-aa30ea3 elementor-widget elementor-widget-heading" data-id="aa30ea3" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Which language to choose if you are a beginner?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-2cc4070 elementor-widget elementor-widget-text-editor" data-id="2cc4070" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The thing is, after years of programming development, it doesn&#8217;t matter. You need to learn <strong>Algorithms</strong> and <strong>Data Structures</strong>, and from there, it will be easy. The real question is, <strong>what do you want to do with programming</strong>? It depends on what you want to do. But still, I will prefer<strong> C#</strong> and <strong>Python</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-21ed6a0 elementor-widget elementor-widget-heading" data-id="21ed6a0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Would you recommend JavaScript for beginners?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-06696d9 elementor-widget elementor-widget-text-editor" data-id="06696d9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Yes. With <strong>JS</strong>, you can quickly see results on your screen. You usually <strong>program web apps</strong>, and you can see your results <strong>almost immediately</strong>. In <strong>C#</strong> or <strong>Java</strong>, your first tasks are <strong>mathematical equations</strong>, but in JS, the problems are more interesting. For example, you will have to <strong>move a box</strong> from the <strong>left</strong> to the <strong>right part</strong> of your screen. <strong>JavaScript</strong> is easy to start with, but it is hard to master. There is a great community and good tools. You can debug with chrome and so on. There are a lot of solved problems on the web.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f429804 elementor-widget elementor-widget-heading" data-id="f429804" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">What is the difference between a front and back-end developer?
</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-658c681 elementor-widget elementor-widget-text-editor" data-id="658c681" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>A <strong>front-end developer</strong> creates a <strong>user interface</strong> that the user interacts with. Everything that the user <strong>clicks and see</strong> is what a front-end dev does. The <strong>back-end developer</strong> works with data and ensures that the users see the <strong>correct data</strong>. There is a lot behind the scene logic. You cannot make a site without the two sides.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0b36ca8 elementor-widget elementor-widget-heading" data-id="0b36ca8" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">What are the perks of a programmer's job?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-e434a06 elementor-widget elementor-widget-text-editor" data-id="e434a06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>One of the main perks is <strong>flexibility</strong>. You can work remotely the job from another country. Most companies are ok with you <strong>not going</strong> to the physical location. The job pays well. It can be a very <strong>creative</strong> and <strong>satisfying job</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-de4bcb6 elementor-widget elementor-widget-heading" data-id="de4bcb6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Is it true that for each new project, you have to learn something?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-dc597af elementor-widget elementor-widget-text-editor" data-id="dc597af" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Yeah. You have to constantly be on your feet and <strong>search for new techniques</strong> and <strong>tools</strong>. It&#8217;s a field where things can change very fast in a matter of a year. You always <strong>need to learn</strong>. You have to be wary of what is <strong>trending</strong> and the <strong>best tools</strong> to solve programming problems.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9327764 elementor-widget elementor-widget-heading" data-id="9327764" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Will Machine Learning replace Software Engineering?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-54c205f elementor-widget elementor-widget-text-editor" data-id="54c205f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Partly yes. It&#8217;s a great tool, but I don&#8217;t think it will happen fully. In the next 10-15 years, I don&#8217;t believe that it will happen. It will <strong>make my job</strong> easier but <strong>not take my job</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-967a3e7 elementor-widget elementor-widget-heading" data-id="967a3e7" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">What would you say recruiters look for when hiring?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-ef2c78b elementor-widget elementor-widget-text-editor" data-id="ef2c78b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>They always look for <strong>experienced people</strong>. They don&#8217;t want to hire inexperienced, but some companies <strong>have to hire junior developers</strong>. There is a <strong>deficit</strong> for junior developers. For me, the <strong>most necessary quality</strong> is <strong>passion</strong> and <strong>motivation</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-da8e1f3 elementor-widget elementor-widget-heading" data-id="da8e1f3" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">How can you best prepare for a job interview?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-ffc906d elementor-widget elementor-widget-text-editor" data-id="ffc906d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Every company has a <strong>different interview process</strong>. What I would say, <strong>research a company</strong> and the <strong>position</strong> you apply for. <strong>Ask</strong> the recruiters questions. <strong>Search</strong> for <strong>typical interview questions</strong> on the web, and I believe that you will be ready for the <strong>interview</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a095132 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="a095132" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-250c6ac elementor-widget elementor-widget-text-editor" data-id="250c6ac" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Do you want to be like him? Become a <strong>programmer</strong> with <strong>comprehensive</strong>, <strong>up-to-date online classes led by an expert</strong>. Study in your <strong>own time</strong> and at your <strong>own pace</strong>. Go back any time and rewatch the lessons, if needed. <strong>Click</strong> the button below, and <strong>start your journey today</strong>!</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3381a86 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3381a86" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0cf09e3" data-id="0cf09e3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-62e6adb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="62e6adb" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6a7e7aa" data-id="6a7e7aa" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4a0f072 elementor-widget elementor-widget-text-editor" data-id="4a0f072" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Video Topics</h2><div><div><div>In the video, William talks about the following topics:</div></div><ul><li><strong>How did you get into programming?</strong></li><li><strong>Which language to choose if you are a beginner?</strong></li><li><strong>Would you recommend JavaScript for beginners?</strong></li><li><strong>What is the difference between a front and back-end developer?</strong></li><li><strong>What are the perks of a programmer&#8217;s job?</strong></li><li><strong>Is it true that for each new project, you have to learn something?</strong></li><li><strong>Will Machine Learning replace Software Engineering?</strong></li><li><strong>What would you say recruiters look for when hiring?</strong></li><li><strong>How can you best prepare for a job interview?</strong></li></ul></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-talks/an-insider-perspective-on-the-it-industry/">An Insider&#8217;s Perspective on the IT Industry</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-talks/an-insider-perspective-on-the-it-industry/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>An Interview with One of Our Graduates &#8211; Ani Sarambelieva</title>
		<link>https://softuni.org/interviews/interview-with-one-of-our-graduates-ani/</link>
					<comments>https://softuni.org/interviews/interview-with-one-of-our-graduates-ani/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Thu, 07 Apr 2022 15:00:00 +0000</pubDate>
				<category><![CDATA[Interviews]]></category>
		<category><![CDATA[innovative]]></category>
		<category><![CDATA[modern]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software technologies]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=17474</guid>

					<description><![CDATA[<p>In this article, we will meet you with one of our graduates - Ani. Read how she became a software engineer and landed her dream job.</p>
<p>The post <a href="https://softuni.org/interviews/interview-with-one-of-our-graduates-ani/">An Interview with One of Our Graduates &#8211; Ani Sarambelieva</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="17474" class="elementor elementor-17474" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Meet <strong>Ani Sarambelieva</strong>. She is a <strong>software engineer </strong>that was brave enough to talk about her path as a developer so far. We asked Ani some questions that might help you <strong>start your career as a programmer</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/xBZarSdznMI&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-719e8cd elementor-widget elementor-widget-heading" data-id="719e8cd" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">How and when did you start programming?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-3d7dddf elementor-widget elementor-widget-text-editor" data-id="3d7dddf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>It was never my dream job. It all started in 11th grade when I went to a <strong>programming presentation</strong> with my boyfriend. I was wondering where to<strong> study from</strong>, and the hardest part is to <strong>find out</strong> which is <strong>the best place</strong>. It was really interesting, but I didn&#8217;t know <strong>where to study</strong>. The hardest part was finding out, which is <strong>the best place to study from</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ee7b161 elementor-widget elementor-widget-heading" data-id="ee7b161" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Why did you choose SoftUni?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-16a99d0 elementor-widget elementor-widget-text-editor" data-id="16a99d0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class="size-medium wp-image-14638 alignleft" src="https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web-300x157.jpg" alt="" width="300" height="157" srcset="https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web-300x157.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web-1024x536.jpg 1024w, https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web-768x402.jpg 768w, https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web-600x314.jpg 600w, https://softuni.org/wp-content/uploads/2022/03/assessmentfeatureimage-web.jpg 1200w" sizes="(max-width: 300px) 100vw, 300px" />I was very <strong>insecure</strong> and had trouble with the basics. SoftUni starts from the <strong>basics</strong>, and <strong>the community is friendly with novices</strong>. There were a lot of colleagues that helped me with my exercises. One of the things that motivated me was the fact that there were a lot of people that <strong>found their dream job here</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7a1f941 elementor-widget elementor-widget-heading" data-id="7a1f941" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">What is the thing you love most about being a software engineer?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-ad46426 elementor-widget elementor-widget-text-editor" data-id="ad46426" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-14226 alignright" src="https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-300x200.jpg" alt="" width="337" height="224" srcset="https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-300x200.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-1024x684.jpg 1024w, https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-768x513.jpg 768w, https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-1536x1025.jpg 1536w, https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-2048x1367.jpg 2048w, https://softuni.org/wp-content/uploads/2022/03/Educational-Software-3-600x401.jpg 600w" sizes="(max-width: 337px) 100vw, 337px" />It will sound strange but for me, it was the ability to <strong>fall easily into the flow of work</strong>. It is the state of, <strong>being one with your surrounding</strong>. Time passes and you don&#8217;t even notice it. For example, at 9 am I start working, and I sometimes forget lunchtime. The work is <strong>interesting</strong>, and <strong>challenging</strong> and can <strong>bring the best out of you</strong>. It is <strong>creative</strong> and you can <strong>add your ideas and logic</strong>, for the specific task.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-d26ac75 elementor-widget elementor-widget-heading" data-id="d26ac75" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Do you remember your first working experience as a programmer?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-d7997de elementor-widget elementor-widget-text-editor" data-id="d7997de" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>I was <strong>nervous</strong> and <strong>anxious</strong>. There was that feeling of<strong> not being ready for the job</strong>. My first tasks were not as hard as I thought that they would be and <strong>managed to do them</strong>. My work colleagues give me <strong>hints and guidelines</strong> that <strong>helped me later on</strong>. As time goes, my tasks become harder, and<strong> this is how I developed</strong>. The one thing that helped me was <strong>asking a lot of questions</strong> and <strong>communicating</strong> <strong>with the team</strong>.</p><p><img loading="lazy" decoding="async" class="alignnone  wp-image-15277" src="https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web-300x59.png" alt="" width="806" height="159" srcset="https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web-300x59.png 300w, https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web-1024x201.png 1024w, https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web-1536x301.png 1536w, https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web-600x118.png 600w, https://softuni.org/wp-content/uploads/2022/03/Online-Learning-Page-Header-Coworkers-web.png 1920w" sizes="(max-width: 806px) 100vw, 806px" /></p><p> </p>								</div>
				</div>
				<div class="elementor-element elementor-element-b5ebf0a elementor-widget elementor-widget-heading" data-id="b5ebf0a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">What is the most important thing you learn in SoftUni?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-0ccfb4a elementor-widget elementor-widget-text-editor" data-id="0ccfb4a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Consistency</strong>. It is one of the most important things. Having <strong>regular homeworks</strong>, <strong>exercise sessions</strong>, and having to <strong>write code every day</strong>. Studying is a <strong>never-ending process</strong>, even after graduating and starting a job.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7a81a50 elementor-widget elementor-widget-heading" data-id="7a81a50" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Do you have advice for our students?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-2e73566 elementor-widget elementor-widget-text-editor" data-id="2e73566" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong><img loading="lazy" decoding="async" class="wp-image-13866 alignright" src="https://softuni.org/wp-content/uploads/2022/03/coding-instructors-1-300x147.jpg" alt="Coding Instructors" width="344" height="168" srcset="https://softuni.org/wp-content/uploads/2022/03/coding-instructors-1-300x147.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/coding-instructors-1.jpg 450w" sizes="(max-width: 344px) 100vw, 344px" />Never give up</strong> when you have a bad day! When you start learning something new, there is the <strong>void</strong> that you are missing some parts. By <strong>studying consistently</strong>, you will <strong>succeed</strong>. You <strong>learn by doing</strong>, and it will <strong>take some time</strong>. Give yourself <strong>time</strong> and be <strong>patient</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-89809c4 elementor-widget elementor-widget-heading" data-id="89809c4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-medium">Where do you recommend for a beginner to start their career path?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-96b8c0d elementor-widget elementor-widget-text-editor" data-id="96b8c0d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Without a doubt, it is at <strong>SoftUni</strong>. I wish <strong>good luck</strong> to all of you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a095132 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="a095132" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-250c6ac elementor-widget elementor-widget-text-editor" data-id="250c6ac" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Do you want to be like her? Become a <strong>programmer</strong> with <strong>comprehensive</strong>, <strong>up-to-date online classes led by an expert</strong>. Study in your <strong>own time</strong> and at your <strong>own pace</strong>. Go back any time and rewatch the lessons, if needed. <strong>Click</strong> the button below, and <strong>start your journey today</strong>!</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3381a86 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3381a86" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0cf09e3" data-id="0cf09e3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-62e6adb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="62e6adb" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6a7e7aa" data-id="6a7e7aa" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4a0f072 elementor-widget elementor-widget-text-editor" data-id="4a0f072" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Video Topics</h2><div><div><div>In the video, Ani talks about the following topics:</div></div><ul><li><p><strong>Brief Introduction</strong></p></li><li><p><strong>How and when did you start programming?</strong></p></li><li><p><strong>Why did you choose SoftUni?</strong></p></li><li><p><strong>What is the thing you love most about being a software engineer?</strong></p></li><li><strong>Do you remember your first working experience as a programmer?</strong></li><li><strong>What is the most important thing you learn in SoftUni?</strong></li><li><strong>Do you have advice for our students?</strong></li><li><strong>Where should your career begin?</strong></li></ul></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/interviews/interview-with-one-of-our-graduates-ani/">An Interview with One of Our Graduates &#8211; Ani Sarambelieva</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/interviews/interview-with-one-of-our-graduates-ani/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Starting Your First Job in The Software Industry</title>
		<link>https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/</link>
					<comments>https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Thu, 17 Mar 2022 06:00:00 +0000</pubDate>
				<category><![CDATA[Dev Talks]]></category>
		<category><![CDATA[algorithmic thinking]]></category>
		<category><![CDATA[career goals]]></category>
		<category><![CDATA[coding skills]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[junior positions]]></category>
		<category><![CDATA[portfolio of projects]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[skills]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[tech job]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=14099</guid>

					<description><![CDATA[<p>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.</p>
<p>The post <a href="https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/">Starting Your First Job in The Software Industry</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="14099" class="elementor elementor-14099" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In this blog post, we will talk about <strong>starting your first job</strong> in the <strong>software industry</strong>. There are a lot of <strong>steps</strong> you need to do before you go to an <strong>interview</strong> and get <strong>hired</strong>. You need to <strong>study hard</strong> and <strong>educate yourself</strong>, to learn concepts like <strong>coding</strong>, <strong>algorithmic thinking</strong>, <strong>software development</strong>, and <strong>different frameworks</strong>. Even if you are <strong>highly skilled</strong>, you can lose your opportunity because someone sent a better <strong>job application</strong>. We will look at all the steps required for a successful start.</p><p><img loading="lazy" decoding="async" class="wp-image-14129 aligncenter" src="https://softuni.org/wp-content/uploads/2022/03/steps-to-start-a-tech-job-300x100.png" alt="" width="519" height="173" srcset="https://softuni.org/wp-content/uploads/2022/03/steps-to-start-a-tech-job-300x100.png 300w, https://softuni.org/wp-content/uploads/2022/03/steps-to-start-a-tech-job-768x256.png 768w, https://softuni.org/wp-content/uploads/2022/03/steps-to-start-a-tech-job-600x200.png 600w, https://softuni.org/wp-content/uploads/2022/03/steps-to-start-a-tech-job.png 840w" sizes="(max-width: 519px) 100vw, 519px" /></p>								</div>
				</div>
				<div class="elementor-element elementor-element-1e9d6c0 elementor-widget elementor-widget-heading" data-id="1e9d6c0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">Video: How to Start Your First Tech Job? Tips and Tricks from Svetlin Nakov</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/ZvlSFUsVQ2g&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-8dd30fa elementor-widget elementor-widget-text-editor" data-id="8dd30fa" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In this <b>video lesson</b>, we cover the following topics about <b>preparing and starting your first developer job</b>:</p><ul><li>Steps to Start a Developer Job</li><li>Defining Your Career Goals</li><li>Learn the Software Engineering Profession</li><li>Prove Your Experience</li><li>Your GitHub Portfolio: Tips and Tricks</li><li>Find Junior Tech Job Positions</li><li>Prepare to Apply for a Dev Job</li><li>The Job Application</li><li>The Job Interview</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-1ee0303 elementor-widget elementor-widget-heading" data-id="1ee0303" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">How Can You Learn Software Development?
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d875b65 elementor-widget elementor-widget-text-editor" data-id="d875b65" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class="wp-image-14219 alignright" src="https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-300x225.jpg" alt="" width="346" height="260" srcset="https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-300x225.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-1024x768.jpg 1024w, https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-768x576.jpg 768w, https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-1536x1152.jpg 1536w, https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-2048x1536.jpg 2048w, https://softuni.org/wp-content/uploads/2022/03/Educational_Services_Asset2-600x450.jpg 600w" sizes="(max-width: 346px) 100vw, 346px" />You can <strong>learn</strong> from many <strong>resources</strong> such as <strong>tutorials</strong>, <strong>books</strong>, <strong>video courses</strong>, and <strong>code camps</strong>. Nevertheless your <strong>studying material</strong>, you need to <strong>do your hands-on exercises</strong> and <strong>projects</strong>. You learn nothing with just <strong>watching</strong>.</p><p>It takes from <strong>2</strong> to <strong>3</strong> <strong>years</strong> if you are learning in parallel with your daily job, and it may take <strong>6</strong> to <strong>12</strong> <strong>months</strong> if you study <strong>12</strong> <strong>hours</strong> per day. From <strong>2000</strong> to <strong>3000</strong> hours of <strong><span data-preserver-spaces="true">practice</span></strong><span data-preserver-spaces="true"> is enough</span> for <strong>starting a junior dev job</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-e5ff8c8 elementor-widget elementor-widget-heading" data-id="e5ff8c8" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">How Do You Prove Your Developer Experience without a Previous Job?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4c53b2d elementor-widget elementor-widget-text-editor" data-id="4c53b2d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: left;"><img loading="lazy" decoding="async" class="alignleft" src="https://softuni.org/wp-content/uploads/2022/03/Educatioanl-Software-300x200.jpg" alt="" width="250" height="167" /></p><p>For starting any <strong>tech job</strong>, you will be <strong>required</strong> to have <b>experience</b>. Employers will typically ask for <strong>1-2</strong> years of experience for a <strong>junior developer</strong>. You can build your <strong>portfolio </strong>on <strong>GitHub</strong>. You can <strong>add</strong> your <strong>projects</strong> there and <strong>write</strong> good <strong>documentation</strong> about them. If you have no experience with <strong>GitHub</strong>, you can read our blog post about it <a href="https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/">here</a>.</p><p>These are a few sample <b>developer portfolios</b> of our <b>students from SoftUni</b>, who have learned programming, created several <b>practical projects in GitHub</b> to prove their skills and <b>started their first dev job </b>in the software industry:</p><ul><li><a href="https://github.com/TodorBelchev">https://github.com/TodorBelchev</a></li><li><a href="https://github.com/tsonewa">https://github.com/tsonewa</a></li><li><a href="https://github.com/mischelll">https://github.com/mischelll</a></li><li><a href="https://github.com/alexmehandzhiyska">https://github.com/alexmehandzhiyska</a></li><li><a href="https://github.com/Sineastra">https://github.com/Sineastra</a></li></ul><div>This is <b>how you should document and showcase your portfolio projects</b> (description + tech stack + screenshots + live demo):</div><ul><li><a href="https://github.com/nakov/ContactBook">https://github.com/nakov/ContactBook</a></li><li><a href="https://github.com/nakov/Eventures">https://github.com/nakov/Eventures</a></li><li><a href="https://github.com/nakov/ShortURL">https://github.com/nakov/ShortURL</a></li><li><a href="https://github.com/nakov/TaskBoard">https://github.com/nakov/TaskBoard </a></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-68aa873 elementor-widget elementor-widget-heading" data-id="68aa873" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">Where Can You Find Tech Job Positions?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-cc1c7d3 elementor-widget elementor-widget-text-editor" data-id="cc1c7d3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>It is hard to find a <strong>junior job</strong> that will match your skills. On every job site, you can search:</p><p style="text-align: center; font-size: 20px;"><strong>your skills + &#8220;junior&#8221; or &#8220;intern&#8221;</strong></p><p style="text-align: left;">In addition, you can ask your friends, colleague, and social networks. Now is the time to create a good <strong>LinkedIn profile</strong>. You can add <strong>Education</strong>, <strong>projects</strong>, and <strong>certificates</strong> to your bio and ask for endorsements. <strong>LinkedIn</strong> allows easy search for jobs.</p><p style="text-align: left;"><img loading="lazy" decoding="async" class=" wp-image-14146 aligncenter" src="https://softuni.org/wp-content/uploads/2022/03/search-job-300x234.png" alt="search-job" width="536" height="417" srcset="https://softuni.org/wp-content/uploads/2022/03/search-job-300x234.png 300w, https://softuni.org/wp-content/uploads/2022/03/search-job.png 596w" sizes="(max-width: 536px) 100vw, 536px" /></p><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-7f69298 elementor-widget elementor-widget-heading" data-id="7f69298" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">How Can You Prepare to Apply for a Job?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-a90a26b elementor-widget elementor-widget-text-editor" data-id="a90a26b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-14079 alignleft" src="https://softuni.org/wp-content/uploads/2022/03/1-300x147.jpg" alt="" width="284" height="139" srcset="https://softuni.org/wp-content/uploads/2022/03/1-300x147.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/1.jpg 450w" sizes="(max-width: 284px) 100vw, 284px" />If you are <strong>preparing</strong> to <strong>apply</strong>, your skills need to <strong>match</strong> the market needs. First, <strong>analyze</strong> the job market for junior positions. Seek what skills employers <strong>require</strong> and what you need to learn. Analyze each <strong>specific job</strong> position you want to apply for.</p><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-93359dc elementor-widget elementor-widget-heading" data-id="93359dc" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">What Should My Job Application contain?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-76871e4 elementor-widget elementor-widget-text-editor" data-id="76871e4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>For a strong job application regarding a <strong>tech</strong> <strong>position</strong> your application should consist of:</p><ul><li>Email</li><li>Portfolio of projects</li><li>Resume (CV)</li><li>Cover letter (CL)</li></ul><p><img loading="lazy" decoding="async" class=" wp-image-14081 alignright" src="https://softuni.org/wp-content/uploads/2022/03/3-300x147.jpg" alt="" width="338" height="166" srcset="https://softuni.org/wp-content/uploads/2022/03/3-300x147.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/3.jpg 450w" sizes="(max-width: 338px) 100vw, 338px" />You should <strong>carefully</strong> apply for a specific job. The letter should be <strong>individual</strong> for a specific position. You shouldn&#8217;t <strong>copy/paste</strong> your cover letter, or application message. You need to <strong>slightly adjust</strong> your CV to <strong>match the target position</strong>. You need to always write your cover letter <strong>from scratch</strong> for each position.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-824c8bc elementor-widget elementor-widget-heading" data-id="824c8bc" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-medium">Will They Hire Me If I'm Invited to a Job Interview?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-849816f elementor-widget elementor-widget-text-editor" data-id="849816f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-13878 alignleft" src="https://softuni.org/wp-content/uploads/2022/03/vdo-bg-img02-300x158.jpg" alt="" width="267" height="141" srcset="https://softuni.org/wp-content/uploads/2022/03/vdo-bg-img02-300x158.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/vdo-bg-img02-768x405.jpg 768w, https://softuni.org/wp-content/uploads/2022/03/vdo-bg-img02-600x317.jpg 600w, https://softuni.org/wp-content/uploads/2022/03/vdo-bg-img02.jpg 849w" sizes="(max-width: 267px) 100vw, 267px" />You should <strong>never rely</strong> on the<strong> job interview</strong>. Only <strong>5%</strong> of the candidates are <strong>invited</strong> to an interview. If you don&#8217;t want to be from the <strong>95%</strong>, you need to focus on the <strong>preparation</strong>. <strong>Study hard</strong> and <strong>build </strong>an <strong>impressive portfolio</strong>. Select your job position and <strong>apply carefully</strong>.</p><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-cd0d6f6 elementor-widget elementor-widget-text-editor" data-id="cd0d6f6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-13879 alignright" src="https://softuni.org/wp-content/uploads/2022/03/vdo-box-bg-1-300x208.jpg" alt="" width="294" height="204" srcset="https://softuni.org/wp-content/uploads/2022/03/vdo-box-bg-1-300x208.jpg 300w, https://softuni.org/wp-content/uploads/2022/03/vdo-box-bg-1-600x417.jpg 600w, https://softuni.org/wp-content/uploads/2022/03/vdo-box-bg-1.jpg 724w" sizes="(max-width: 294px) 100vw, 294px" />In case you are <strong>invited to an interview</strong>, you need to be prepared:</p><ul><li>Research the company and learn as much as possible</li><li>Research the technologies from the job advertisement</li><li>Research typical questions for a job interview.</li></ul><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-139ee28 elementor-widget elementor-widget-text-editor" data-id="139ee28" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>No matter how your <strong>applications go</strong>, you should not give up. <strong>Take note of each failure</strong> and <strong>prepare</strong> for your next interview. If you follow all our recommendations, in the end, you will most likely end up with a <strong>good starting job</strong>.</p><div id="malwarebytes-root"></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-80db6cf elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="80db6cf" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-59b938e" data-id="59b938e" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a0aff0b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a0aff0b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48c6c18" data-id="48c6c18" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f972417 elementor-widget elementor-widget-heading" data-id="f972417" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Lesson Slides</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-37e6760 elementor-widget elementor-widget-pdfjs_viewer" data-id="37e6760" data-element_type="widget" data-widget_type="pdfjs_viewer.default">
				<div class="elementor-widget-container">
					<iframe src="https://softuni.org/wp-content/plugins/pdf-viewer-for-elementor/assets/pdfjs/web/viewer.html?file=https://softuni.org/wp-content/uploads/2022/03/First-Job-in-the-Software-Industry-Nakov-March-2022.pdf&amp;embedded=true" style="display: block; margin-left: auto; margin-right: auto; width: 100%; height: 800px;" frameborder="1" marginheight="0px" marginwidth="0px" allowfullscreen></iframe>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/">Starting Your First Job in The Software Industry</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-talks/starting-your-first-job-in-the-software-industry/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>URL Shortener Project &#8211; Adding Views, Layout + CSS Styling [Part 2]</title>
		<link>https://softuni.org/project-tutorials/url-shortener-project-adding-views-layout-css-styling/</link>
					<comments>https://softuni.org/project-tutorials/url-shortener-project-adding-views-layout-css-styling/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Fri, 18 Feb 2022 06:00:00 +0000</pubDate>
				<category><![CDATA[Step-by-Step Project Tutorials]]></category>
		<category><![CDATA[control systems]]></category>
		<category><![CDATA[express]]></category>
		<category><![CDATA[Express.js]]></category>
		<category><![CDATA[Kanban Boards]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[part 2]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[pug]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[step-by-step]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=12378</guid>

					<description><![CDATA[<p>In our second part of the URL Shortener series, we continue with developing our project. We will create all the views, CSS, and layout page for the project.</p>
<p>The post <a href="https://softuni.org/project-tutorials/url-shortener-project-adding-views-layout-css-styling/">URL Shortener Project &#8211; Adding Views, Layout + CSS Styling [Part 2]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="12378" class="elementor elementor-12378" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In the <strong>second part</strong> of the tutorial, we will create the <strong>user interface</strong> for our web application. This will include all the <strong>views</strong>, <strong>CSS</strong>, and the <strong>layout page</strong>. If you haven&#8217;t read our previous <strong>blog post</strong>, where we created our project, you can do it from <a href="https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/">here</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b058b4f elementor-widget elementor-widget-text-editor" data-id="b058b4f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>We start with building the <strong>layout page</strong>. It allows us to define a common <strong>site template</strong> that can be <strong>inherited</strong> in multiple <strong>views</strong> to provide a <strong>consistent look</strong> and feel in multiple pages of an application. The <strong>layout view</strong> eliminates <strong>duplicate coding</strong> and <strong>enhances development</strong> speed and easy maintenance.</p><ul><li>Inside the views folder, we create a <strong>layout.pug</strong>.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-e972c9d elementor-widget elementor-widget-heading" data-id="e972c9d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">layout.pug</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-2dd9888 elementor-widget elementor-widget-code-highlight" data-id="2dd9888" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp><!DOCTYPE html>
html(lang='en')
  head
    block head
    link(rel='stylesheet', href='/styles.css')
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  body
    header
      a(href='/') Home
      span  | 
      a(href='/urls') Short URLs
      span  | 
      a(href='/add-url') Add URL

    main
      block content
    
    footer
      div © 2022 - URL Shortener</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-dc9cfa9 elementor-widget elementor-widget-text-editor" data-id="dc9cfa9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>In the <strong>head section</strong>, we import the <strong>.css file</strong> that will include our styling. We will create it later inside the public folder.</li><li>For the body part, we have a <strong>header</strong> with the <strong>navigation</strong> of our application. Each <strong>anchor tag</strong> will lead us to another route.</li><li>In the main block is the <strong>block content</strong> that every time will re-render differently depending on our <strong>route</strong>.</li><li>We will create a <strong>styles.css</strong> in our <strong>public folder</strong> that we made in our previous part.</li></ul><div id="malwarebytes-root"> </div>								</div>
				</div>
				<div class="elementor-element elementor-element-7c67021 elementor-widget elementor-widget-heading" data-id="7c67021" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">styles.css</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-76f3707 elementor-widget elementor-widget-code-highlight" data-id="76f3707" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-css line-numbers">
				<code readonly="true" class="language-css">
					<xmp>body {
  font-family: Arial, Helvetica, sans-serif;
}

header, footer {
  background:rgb(212, 233, 164);
  padding: 8px;
  border-radius: 3px; 
}

footer {
  margin-top: 15px;
}

main {
  margin-left: 10px;
}


table {
  width: 100%;
  border-collapse: collapse;
  background-color: #f5fff5;
}

table th, table td {
  border: 1px solid #ddd;
}

table th {
  padding: 12px 8px;
  text-align: left;
  background-color: rgb(107, 182, 109);
  color: white;    
}

table td {
  padding: 8px;
  overflow-wrap: anywhere;
}

table tr:nth-child(even) {
  background-color: #dff0de;
}

table tr:hover {
  background-color: rgb(198, 207, 180);
}


form table {
  width: 100%;
  max-width: 600px;
}

form table td:nth-child(1) {
  width: 10%;
  white-space: nowrap;
}

main form input {
  width: 100%;
  min-width: 100px;
  box-sizing: border-box;
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-8d64e71 elementor-widget elementor-widget-text-editor" data-id="8d64e71" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>If we want to add more pages, we need to set up the <strong>routes</strong> in our <strong>controller</strong>. As we did in the previous part, we create different <strong>functions</strong> for each  <strong>route</strong>. In the <strong>mvc-controller.js</strong>, we  will <strong>expand</strong> the <strong>functionality</strong> with new functions.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-c93bd3b elementor-widget elementor-widget-heading" data-id="c93bd3b" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">mvc-controller.js</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d243029 elementor-widget elementor-widget-code-highlight" data-id="d243029" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>function setup(app, data) {
  app.get('/', function(req, res) {
        //  Same as before
  });

  app.get('/urls', function(req, res) {
    let model = { urls: data.urls };
    res.render('urls', model);
  });

  app.get('/add-url', function(req, res) {
    let model = { url: "", code: "newCode" };
    res.render('add-url', model);
  });

  app.post('/add-url', function(req, res) {
    res.redirect('/urls');
  });

}

function date2text(inputDate) {
  let date = inputDate.toISOString().split('.')[0];
  date = date.replace('T', ' ');
  return date;
}

module.exports = { setup };</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-0b720f7 elementor-widget elementor-widget-text-editor" data-id="0b720f7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>With the <strong>first</strong> function, we will <strong>get</strong> the <strong>view</strong> with all the URLs. It will be the same as the home view functionality.</li><li>The <strong>second</strong> function will load the <strong>view</strong> for the create page. We will access it with the &#8220;<strong>/add-url</strong>&#8221; <strong>route</strong>.</li><li>The next <strong>third</strong> function will have the same <strong>route</strong> as the previous but with a <strong>different type</strong> of <strong>request</strong>. In the<em> app.get(&#8216;/add-url&#8217;, &#8230; )</em> we <strong>request</strong> the <strong>view</strong>, but with <em>app.post(&#8216;/add-url, &#8230;)</em> we will <strong>send data</strong> to the server. They are on the same <strong>route</strong>, but we <strong>send different types of requests</strong>.</li><li>We will add a helping function <strong>data2text()</strong> that will be outside of the <strong>setup()</strong> function. It will help us later.</li><li>What we need to do next is to <strong>create .pug</strong> view. First, we will add the <strong>urls.pug</strong> inside our <strong>views</strong> folder. We add the following <strong>code</strong> inside it:</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-53a7244 elementor-widget elementor-widget-heading" data-id="53a7244" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">urls.pug</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-f33f165 elementor-widget elementor-widget-code-highlight" data-id="f33f165" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>extends layout.pug

block append head
  title='Short URLs'

block content
  h1 Short URLs
  table
    thead
      tr
        th Original URL
        th Short URL
        th Date Created
        th Visits
    tbody
      each url in urls
        tr
          td 
            a(href=`${url.url}` target="_blank") #{url.url}
          td
            a(href=`${url.shortUrl}` target="_blank") #{url.shortUrl}
          td #{url.dateCreated}
          td #{url.visits}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-bdfc1b3 elementor-widget elementor-widget-text-editor" data-id="bdfc1b3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>In this <strong>view</strong>, we will have an <strong>HTML</strong> <strong>table</strong> featuring all the records that we <strong>request</strong> from the server. They are bound to the <strong>urls</strong> variable. To <strong>access</strong> each element <strong>separately </strong>we need to <strong>iterate</strong> <strong>over</strong> the <strong>collection</strong> with a <strong>for-each loop</strong>. Each <strong>row</strong> will be with data for a <strong>specific record</strong>, and every cell with a value for a specific property of the object.</li></ul><p>If we <strong>start the project</strong> and go to the &#8216;<strong>/urls</strong>&#8216; <strong>route</strong>, this will visualize: </p>								</div>
				</div>
				<div class="elementor-element elementor-element-f63554d elementor-widget elementor-widget-text-editor" data-id="f63554d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class="wp-image-12426 aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/urls-view-300x119.png" alt="urls-view" width="487" height="193" srcset="https://softuni.org/wp-content/uploads/2022/02/urls-view-300x119.png 300w, https://softuni.org/wp-content/uploads/2022/02/urls-view-1024x405.png 1024w, https://softuni.org/wp-content/uploads/2022/02/urls-view-768x304.png 768w, https://softuni.org/wp-content/uploads/2022/02/urls-view-600x237.png 600w, https://softuni.org/wp-content/uploads/2022/02/urls-view.png 1186w" sizes="(max-width: 487px) 100vw, 487px" /></p>								</div>
				</div>
				<div class="elementor-element elementor-element-eccb188 elementor-widget elementor-widget-text-editor" data-id="eccb188" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>In next part we will add the <strong>add-url.pug</strong> <strong>view</strong>. We add it inside the <strong>views</strong> folder.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-ff025eb elementor-widget elementor-widget-heading" data-id="ff025eb" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">add-url.pug</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-0190a15 elementor-widget elementor-widget-code-highlight" data-id="0190a15" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>extends layout.pug

block append head
  title='Add Short URL'

block content
  h1 Add Short URL
  form(method='POST' action='/add-url')
    table
      tr
        td
          label(for='url') URL: 
        td
          input#url(type='text', name='url', value=`${url}`)
      tr
        td
          label(for='code') Short Code: 
        td
          input#code(type='text', name='code', value=`${code}`)
      tr
        td(colspan="2")
          button(type='submit') Create</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-abdff4c elementor-widget elementor-widget-text-editor" data-id="abdff4c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>In this <strong>view</strong>, we add a <strong>form</strong> that is with a <strong>POST</strong> <strong>method</strong>, and an <strong>action</strong> points to &#8216;<strong>/add-url</strong>&#8216;. To explain what this does, after pressing the <strong>submit button</strong>, the server will request the <em>app.post(&#8216;/add-url&#8217;, &#8230;)</em> function that we have typed inside our mvc-controller.  In the next parts, we will add the <strong>functionality</strong> that <strong>saves</strong> the <strong>record inside</strong> the <strong>database</strong>.</li><li>Inside the <strong>form</strong>, we have two <strong>input fields</strong>. Inside each <strong>field</strong>, the <strong>user</strong> will type the values for the <strong>URL</strong> he needs to <strong>create</strong>.</li><li>In the end, it is important for the button to be of type <strong>submit</strong>. This will <strong>submit</strong> the form to the <strong>server</strong>.</li></ul><p>If you have done everything correctly, going to the &#8216;<strong>/add-urls</strong>&#8216; route will display you this page:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-c99c30e elementor-widget elementor-widget-text-editor" data-id="c99c30e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-12427 aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/add-url-view-300x228.png" alt="add-url-view" width="335" height="254" srcset="https://softuni.org/wp-content/uploads/2022/02/add-url-view-300x228.png 300w, https://softuni.org/wp-content/uploads/2022/02/add-url-view.png 531w" sizes="(max-width: 335px) 100vw, 335px" /></p>								</div>
				</div>
				<div class="elementor-element elementor-element-d810adb elementor-widget elementor-widget-text-editor" data-id="d810adb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>After completing all the steps, your project will have a <strong>user interface</strong> that supports different <strong>types of screens</strong>. If we go to our two new routes &#8216;<strong>/urls</strong>&#8216;, and &#8216;<strong>/add-urls</strong>&#8216; you will access the two new pages that we have added. On the &#8216;<strong>/add-urls</strong>&#8216; route, if you <strong>submit</strong> the form with the required data, you will send a <strong>POST request</strong> to the <strong>server</strong>. In the next parts, we will be able to save this information on the <strong>server</strong> and display it inside the &#8216;<strong>/urls</strong>&#8216; <strong>route</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/4jOZhNaJAl4&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following topics:</div></div><ul><li><strong>Building the Layout Template in Pug</strong></li><li><strong>Adding CSS Styles</strong></li><li><strong>Implementing the &#8220;View Short URLs Table&#8221;</strong></li><li><strong>Styling the Table</strong></li><li><strong>Implementing the &#8220;Add URL&#8221; Form</strong></li><li><strong>CSS Styling for Small Screens</strong></li></ul></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-564ddaf elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="564ddaf" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-03f3f8d" data-id="03f3f8d" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a0aff0b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a0aff0b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48c6c18" data-id="48c6c18" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1495bc9 elementor-align-center elementor-widget elementor-widget-button" data-id="1495bc9" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-xl" href="https://replit.com/@nakov/URLShortener-Part-2">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-angle-right" viewBox="0 0 256 512" xmlns="http://www.w3.org/2000/svg"><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path></svg>			</span>
									<span class="elementor-button-text">Source code Part 2</span>
					</span>
					</a>
				</div>
								</div>
				</div>
				<div class="elementor-element elementor-element-f972417 elementor-widget elementor-widget-heading" data-id="f972417" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Lesson Slides</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-37e6760 elementor-widget elementor-widget-pdfjs_viewer" data-id="37e6760" data-element_type="widget" data-widget_type="pdfjs_viewer.default">
				<div class="elementor-widget-container">
					<iframe src="https://softuni.org/wp-content/plugins/pdf-viewer-for-elementor/assets/pdfjs/web/viewer.html?file=https://softuni.org/wp-content/uploads/2022/02/ShortURL-Project-Tutorial-Part-2-App-UI.pdf&amp;embedded=true" style="display: block; margin-left: auto; margin-right: auto; width: 100%; height: 800px;" frameborder="1" marginheight="0px" marginwidth="0px" allowfullscreen></iframe>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/project-tutorials/url-shortener-project-adding-views-layout-css-styling/">URL Shortener Project &#8211; Adding Views, Layout + CSS Styling [Part 2]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/project-tutorials/url-shortener-project-adding-views-layout-css-styling/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Software Engineering Overview [Dev Concepts #30]</title>
		<link>https://softuni.org/dev-concepts/software-engineering-overview/</link>
					<comments>https://softuni.org/dev-concepts/software-engineering-overview/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Thu, 10 Feb 2022 06:00:00 +0000</pubDate>
				<category><![CDATA[Dev Concepts]]></category>
		<category><![CDATA[control systems]]></category>
		<category><![CDATA[devconcepts]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Kanban Boards]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[testing frameworks]]></category>
		<category><![CDATA[Trello]]></category>
		<category><![CDATA[unit testing]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=11933</guid>

					<description><![CDATA[<p>In this article of the series Dev Concepts, we take a look at Software Engineering, Quality Assurance, Unit Testing, Source Control and Project Tracking.</p>
<p>The post <a href="https://softuni.org/dev-concepts/software-engineering-overview/">Software Engineering Overview [Dev Concepts #30]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="11933" class="elementor elementor-11933" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>For this article, we will make an overview of <strong>software engineering</strong> concepts like <strong>software development lifecycle</strong>, <strong>software quality assurance</strong>, <strong>unit testing</strong>, <strong>source control system</strong>, and <strong>project trackers</strong>. Each concept is essential for your <strong>development</strong> as a <strong>software engineer</strong>. You should have a <strong>basic knowledge</strong> of each area because they are <strong>daily used</strong> in <strong>software companies</strong>. Even if the technologies <strong>differ</strong>, the concept is still the same but with a different <strong>GUI</strong> and <strong>software</strong>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b89f472 elementor-widget elementor-widget-text-editor" data-id="b89f472" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-10777 alignright" src="https://softuni.org/wp-content/uploads/2022/01/sdlc-300x282.png" alt="sdlc-diagram" width="253" height="238" srcset="https://softuni.org/wp-content/uploads/2022/01/sdlc-300x282.png 300w, https://softuni.org/wp-content/uploads/2022/01/sdlc.png 531w" sizes="(max-width: 253px) 100vw, 253px" /></p><ul><li style="text-align: left;"><span style="font-size: 16px;"><strong>The Software Development Lifecycle</strong> is a process used by the software industry to <strong>design</strong>, <strong>develop,</strong> and <strong>test</strong> high-quality <strong>software</strong>. It aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates.</span><span style="font-size: 16px;"> The benefits of using it only exist if the plan is followed </span><strong style="font-size: 16px;">faithfully</strong><span style="font-size: 16px;">. Read our blog post about them <a href="https://softuni.org/dev-concepts/what-is-software-development-lifecycle/">here</a>.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-468211f elementor-widget elementor-widget-text-editor" data-id="468211f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong><strong><img loading="lazy" decoding="async" class=" wp-image-10797 alignleft" src="https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector-300x250.jpg" alt="designer-work-with-internet-vector" width="242" height="202" srcset="https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector-300x250.jpg 300w, https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector-600x500.jpg 600w, https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector-1024x853.jpg 1024w, https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector-768x640.jpg 768w, https://softuni.org/wp-content/uploads/2022/01/designer-work-with-internet-free-vector.jpg 1176w" sizes="(max-width: 242px) 100vw, 242px" /></strong></strong></p><ul><li><strong><strong>Software Quality Assurance </strong></strong>is a term that covers all aspects of guaranteeing a <strong style="font-size: 16px;">high-quality</strong><span style="font-size: 16px;"> software product. It includes </span><strong style="font-size: 16px;">creating processes</strong><span style="font-size: 16px;"> for each stage of development to reduce </span><strong style="font-size: 16px;">bugs</strong><span style="font-size: 16px;"> and </span><strong style="font-size: 16px;">flaws</strong><span style="font-size: 16px;"> during the build. Companies need it to measure the </span><strong style="font-size: 16px;">quality</strong><span style="font-size: 16px;"> of the software. At the heart of the <b>QA process</b> is <b>software testing</b>. Read more about them in our separate blog post <a href="https://softuni.org/dev-concepts/is-software-qa-important-for-developers/">here</a>.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-95a2089 elementor-widget elementor-widget-text-editor" data-id="95a2089" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><strong>Unit testing</strong> is an important concept and practice in <strong>software development</strong>. As a term, <strong>unit tests</strong> are pieces of code that <strong>test</strong> specific functionality in a certain software component.  <strong style="font-size: 16px;">Unit testing frameworks</strong><span style="font-size: 16px;"> simplify, structure, and organize the </span><strong style="font-size: 16px;">unit testing process</strong><span style="font-size: 16px;">. It executes the </span><strong style="font-size: 16px;">test</strong><span style="font-size: 16px;"> and generates </span><strong style="font-size: 16px;">reports</strong><span style="font-size: 16px;">. </span><span style="font-size: 16px;">Examples of </span><strong style="font-size: 16px;">unit testing frameworks</strong><span style="font-size: 16px;"> are </span><strong style="font-size: 16px;">JUnit</strong><span style="font-size: 16px;"> for Java and </span><strong style="font-size: 16px;">Mocha</strong><span style="font-size: 16px;"> for JavaScript. </span>Read more <a href="https://softuni.org/dev-concepts/what-you-need-to-know-about-unit-testing/">here</a>.</li></ul><p><img loading="lazy" decoding="async" class=" wp-image-11076 aligncenter" src="https://softuni.org/wp-content/uploads/2022/01/unit_testing_guidelines-300x135.jpg" alt="unit_testing_guidelines" width="460" height="207" srcset="https://softuni.org/wp-content/uploads/2022/01/unit_testing_guidelines-300x135.jpg 300w, https://softuni.org/wp-content/uploads/2022/01/unit_testing_guidelines-600x270.jpg 600w, https://softuni.org/wp-content/uploads/2022/01/unit_testing_guidelines-768x345.jpg 768w, https://softuni.org/wp-content/uploads/2022/01/unit_testing_guidelines.jpg 890w" sizes="(max-width: 460px) 100vw, 460px" /></p>								</div>
				</div>
				<div class="elementor-element elementor-element-b35a0b4 elementor-widget elementor-widget-text-editor" data-id="b35a0b4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default"><div class="elementor-widget-container"><ul><li><strong>Git</strong> is the most popular <strong>source control system</strong> in modern software development. It is a powerful tool for <strong>version control</strong> and <strong>team collaboration</strong> at the <strong>source code level</strong>. In our article, we work with <strong>Git</strong> and <strong>GitHub</strong> by showing a few examples. We <strong>clone</strong> the <strong>repository</strong>, <strong>edit</strong> a local file, <strong>commit</strong> the local changes, and then <strong>publish</strong> the commit. You can read it <a href="https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/">here</a>.</li></ul><p><img loading="lazy" decoding="async" class=" wp-image-11434 aligncenter" src="https://softuni.org/wp-content/uploads/2022/01/blog-What-is-github-and-why-you-should-use-it.-300x147.png" alt="github-architecture" width="461" height="226" srcset="https://softuni.org/wp-content/uploads/2022/01/blog-What-is-github-and-why-you-should-use-it.-300x147.png 300w, https://softuni.org/wp-content/uploads/2022/01/blog-What-is-github-and-why-you-should-use-it.-768x377.png 768w, https://softuni.org/wp-content/uploads/2022/01/blog-What-is-github-and-why-you-should-use-it.-600x295.png 600w, https://softuni.org/wp-content/uploads/2022/01/blog-What-is-github-and-why-you-should-use-it..png 876w" sizes="(max-width: 461px) 100vw, 461px" /></p></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-bc65bc0 elementor-widget elementor-widget-text-editor" data-id="bc65bc0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><strong>Project trackers</strong>, as a term, are a simple <strong>tool</strong> that manages the project schedule, <strong>plan</strong>, <strong>assign</strong>, <strong>arrange</strong>, <strong>track</strong> and <strong>visualize</strong> project <strong>tasks</strong>. They are a great way to make your <strong>tasks</strong> come to life and <strong>visualize</strong> your upcoming week or month’s tasks. You can read more about them in our blog post <a href="https://softuni.org/dev-concepts/understanding-project-trackers-kanban-boards-and-trello/">here</a>.</li></ul><p><img loading="lazy" decoding="async" class="wp-image-11574 aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/trello-design-300x187.png" alt="trello-design" width="462" height="288" srcset="https://softuni.org/wp-content/uploads/2022/02/trello-design-300x187.png 300w, https://softuni.org/wp-content/uploads/2022/02/trello-design-1024x639.png 1024w, https://softuni.org/wp-content/uploads/2022/02/trello-design-768x479.png 768w, https://softuni.org/wp-content/uploads/2022/02/trello-design-1536x958.png 1536w, https://softuni.org/wp-content/uploads/2022/02/trello-design-600x374.png 600w, https://softuni.org/wp-content/uploads/2022/02/trello-design.png 1824w" sizes="(max-width: 462px) 100vw, 462px" /></p>								</div>
				</div>
				<div class="elementor-element elementor-element-b6e834e elementor-widget elementor-widget-text-editor" data-id="b6e834e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>All of these concepts are important for your future development as a <strong>software engineer</strong>. Each <strong>topic</strong> can be separated into a <strong>course</strong> and studied in detail. Even if you are indifferent to all the <strong>concepts</strong>, you should know at least the <strong>basics</strong> <strong>about each topic</strong>. In almost every interview for a <strong>software developer</strong>, you will be asked if you are familiar with these areas. <span data-preserver-spaces="true">Each </span><strong><span data-preserver-spaces="true">software company</span></strong><span data-preserver-spaces="true"> uses different </span><strong><span data-preserver-spaces="true">technologies,</span></strong><span data-preserver-spaces="true"> but the concepts are the same.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/CvpNG5luKsA&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following topics:</div></div><ul><li><b style="font-style: inherit; color: var( --e-global-color-text );">Software Development LifeCycle</b></li><li style="font-size: 15px;"><b>Software Quality Assurance (QA)</b></li><li style="font-size: 15px;"><b>Unit Testing and Testing Frameworks</b></li><li><b>Overview of Git and GitHub</b></li><li><p><b>Project Trackers, Kanban Boards, and Trello</b></p></li></ul></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-71088dc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="71088dc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7b32a03" data-id="7b32a03" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a0aff0b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a0aff0b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48c6c18" data-id="48c6c18" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f972417 elementor-widget elementor-widget-heading" data-id="f972417" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Lesson Slides</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-37e6760 elementor-widget elementor-widget-pdfjs_viewer" data-id="37e6760" data-element_type="widget" data-widget_type="pdfjs_viewer.default">
				<div class="elementor-widget-container">
					<iframe src="https://softuni.org/wp-content/plugins/pdf-viewer-for-elementor/assets/pdfjs/web/viewer.html?file=https://softuni.org/wp-content/uploads/2022/02/Dev-Concepts-Episode-30-Software-Engineering-Overview.pdf&amp;embedded=true" style="display: block; margin-left: auto; margin-right: auto; width: 100%; height: 800px;" frameborder="1" marginheight="0px" marginwidth="0px" allowfullscreen></iframe>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/dev-concepts/software-engineering-overview/">Software Engineering Overview [Dev Concepts #30]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/dev-concepts/software-engineering-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>URL Shortener Project &#8211; Creating the App Structure [Part 1]</title>
		<link>https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/</link>
					<comments>https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Thu, 10 Feb 2022 06:00:00 +0000</pubDate>
				<category><![CDATA[Step-by-Step Project Tutorials]]></category>
		<category><![CDATA[control systems]]></category>
		<category><![CDATA[express]]></category>
		<category><![CDATA[Express.js]]></category>
		<category><![CDATA[Kanban Boards]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[part 1]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[pug]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[step-by-step]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=12280</guid>

					<description><![CDATA[<p>In this article of the Project Tutorial series, we will create a simple URL Shortener, using JavaScript, Node.js, Express.js and Pug</p>
<p>The post <a href="https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/">URL Shortener Project &#8211; Creating the App Structure [Part 1]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="12280" class="elementor elementor-12280" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In this tutorial, we will create our <strong>URL Shortener</strong> using <strong>JavaScript</strong>. We will be using <strong>Expres.JS</strong> for creating the <strong>server-side web application</strong> and <strong>Pug</strong> as a <strong>template engine</strong>. This tutorial will be split into several parts, and in each part, we will further develop our project. In the end, we will have a fully working <strong>Multi Page Application</strong> (<strong>MPA</strong>).</p><p>After we <strong>initialize</strong> our project, we need to split our <strong>code logic</strong> into different folders. We create folders for:</p><ul><li><strong>data</strong></li><li><strong>controllers</strong></li><li><strong>views</strong></li><li><strong>public</strong></li></ul><p>In our main directory we have an <strong>index.js</strong> file that is automatically generated by <strong>repl.it</strong>. <span data-preserver-spaces="true">You don&#8217;t need to install manually any </span><strong><span data-preserver-spaces="true">libraries</span></strong><span data-preserver-spaces="true"> because they will be added </span><strong><span data-preserver-spaces="true">automatically</span></strong><span data-preserver-spaces="true"> when you start the project.</span></p><p>First, in our <strong>index.js</strong> we need to add the following code:</p><div id="malwarebytes-root"> </div>								</div>
				</div>
				<div class="elementor-element elementor-element-e972c9d elementor-widget elementor-widget-heading" data-id="e972c9d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">index.js</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-2dd9888 elementor-widget elementor-widget-code-highlight" data-id="2dd9888" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>const express = require('express');
const app = express();
app.use(express.static('public'))
app.set('view engine', 'pug');

const data = require("./data/app-data");
data.seedSampleData();

const mvcController = require(
  "./controllers/mvc-controller");
mvcController.setup(app, data);

let port = process.argv[2];
if (!port) port = process.env['PORT'];
if (!port) port = 8080;

app.listen(port, () => {
  console.log(`App started. Listening at http://localhost:${port}`);
})
.on('error', function(err) {
  if (err.errno === 'EADDRINUSE')
    console.error(`Port ${port} busy.`);
  else 
    throw err;
});</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-dc9cfa9 elementor-widget elementor-widget-text-editor" data-id="dc9cfa9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><span data-preserver-spaces="true">In the first row, we </span><strong><span data-preserver-spaces="true">import</span></strong><span data-preserver-spaces="true"> the <strong>E</strong></span><strong><span data-preserver-spaces="true">xpressJS</span></strong><span data-preserver-spaces="true"> </span><strong><span data-preserver-spaces="true">node module</span></strong><span data-preserver-spaces="true">. Then we bind it to a </span><strong><span data-preserver-spaces="true">constant</span></strong><span data-preserver-spaces="true"> and use it to make </span><strong><span data-preserver-spaces="true">static</span></strong><span data-preserver-spaces="true"> our public folder. Doing this will allow us to use the <strong>public</strong> folder from any part of our application.</span></li><li><span data-preserver-spaces="true">We will also set our </span><strong><span data-preserver-spaces="true">view engine</span></strong><span data-preserver-spaces="true"> to </span><strong><span data-preserver-spaces="true">pug</span></strong><span data-preserver-spaces="true">. This will render all <strong>.pug</strong> files we set as <strong>views</strong>.</span></li><li><span data-preserver-spaces="true">We define constant named <strong>data</strong> and invoke the function. <strong>seedSampleData()</strong> inside it. We will create them later. Every time our project is started this function will be <strong>initialized</strong>.</span></li><li><span data-preserver-spaces="true">Our next task is to tell the index.js that our <strong>MVC-controller</strong> exists and set up it.</span></li><li><span data-preserver-spaces="true">We set our virtual port for repl.it to <strong>8080</strong>, and tell the program to listen to this <strong>port</strong>.</span></li><li><span data-preserver-spaces="true">If there is an <strong>error</strong>, it will be automatically <strong>displayed</strong> on the server&#8217;s console.</span></li></ul><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-1ddcbde elementor-widget elementor-widget-heading" data-id="1ddcbde" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">app-data.js</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-8747339 elementor-widget elementor-widget-code-highlight" data-id="8747339" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>let urls = [];

function seedSampleData() {
  urls.length = 0; // cleanup
  urls.push({
    url: "https://softuni.org",
    shortCode: "su",
    dateCreated: new Date("2022-02-19T16:41:56"),
    visits: 86
  });
  urls.push({
    url: "https://nakov.com",
    shortCode: "nak", 
    dateCreated: new Date("2022-02-17T14:41:33"), 
    visits: 160
  });
}

module.exports = {
  urls,
  seedSampleData
};</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4c6a3fa elementor-widget elementor-widget-text-editor" data-id="4c6a3fa" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>In our <strong>data</strong> folder we create an <strong>app-data.js</strong> file. In it is we create our <strong>seed</strong> of <strong>data</strong>. We add an <strong>empty array</strong> that we fill with the <strong>seedSampleData()</strong> function.</li><li>In our function we have 2 different <strong>objects {}</strong> that we push into the <strong>urls</strong> array.</li><li>This is a <strong>temporary solution</strong> and in our next parts will be changed with a <strong>real database</strong>.</li></ul><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-34726c4 elementor-widget elementor-widget-heading" data-id="34726c4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">mvc-controller.js</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4054f70 elementor-widget elementor-widget-code-highlight" data-id="4054f70" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>function setup(app, data) {
  app.get('/', function(req, res) {
    let visitors = 0;
    for (const url of data.urls) {
      console.log(url);
      visitors += url.visits;
    }
    let model = { urls: data.urls, visitors };
    res.render('home', model);
  });
}

module.exports = { setup };</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-a842882 elementor-widget elementor-widget-text-editor" data-id="a842882" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><span data-preserver-spaces="true">Inside our <strong>controller</strong> folder we create the  <strong>mvc-controller.js</strong> file. Inside it, we add the function </span><strong><span data-preserver-spaces="true">setup()</span></strong><span data-preserver-spaces="true"> that receives the <strong>app</strong> and <strong>data</strong>. </span></li><li><span data-preserver-spaces="true">When our server recieves a <strong>GET</strong> request with a <strong>URL</strong> that equals<strong> &#8216;/&#8217;</strong>, it will <strong>invoke</strong> the following function.</span></li><li><span data-preserver-spaces="true"> We <strong>iterate</strong> over the <strong>collection of data</strong> and bind it into the <strong>model </strong>variable. </span></li><li><span data-preserver-spaces="true">Then, we <strong>render</strong> the following view with the <strong>data</strong> attached to it. </span></li><li><span data-preserver-spaces="true">After we are done, we <strong>export</strong> the function so that the <strong>index.js</strong> can run it correctly.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-3c39e95 elementor-widget elementor-widget-heading" data-id="3c39e95" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">home.pug</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d245384 elementor-widget elementor-widget-code-highlight" data-id="d245384" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>h1 URL Shortener
ul
  li Short URLs: <b>#{urls.length}</b>
  li URL visitors: <b>#{visitors}</b>    </xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b1c3462 elementor-widget elementor-widget-text-editor" data-id="b1c3462" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><span data-preserver-spaces="true">Finally, we create our <strong>home.pug</strong> view inside the <strong>views</strong> folder. That is the html <strong>page</strong> that will load when the user goes to the </span>&#8216;/&#8217; <span data-preserver-spaces="true"><strong>URL, that we </strong>defined in our controller.</span></li><li><span data-preserver-spaces="true">We have an <strong>unordered list( ul )</strong>, in which we have two <strong>rows( li )</strong>. The first is for the count of our <strong>URLs</strong>, and the next is the total sum of all visitors summed from all<strong> 2 records</strong>.</span></li><li><span data-preserver-spaces="true">If we want to print the data <strong>bound</strong> to the variable </span><strong><span data-preserver-spaces="true">visitors</span></strong><span data-preserver-spaces="true">, we must add hashtag <strong>#</strong> and braces<strong> { }</strong> around it so that our compiler knows that this isn&#8217;t a regular <strong>HTML</strong> text.</span></li></ul><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-74febac elementor-widget elementor-widget-text-editor" data-id="74febac" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><img loading="lazy" decoding="async" class=" wp-image-12324 aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/url-first-part-final-look-300x157.png" alt="url-first-part-final-look" width="332" height="174" srcset="https://softuni.org/wp-content/uploads/2022/02/url-first-part-final-look-300x157.png 300w, https://softuni.org/wp-content/uploads/2022/02/url-first-part-final-look.png 469w" sizes="(max-width: 332px) 100vw, 332px" />After completing all the steps you will have a simple working <strong>Multi Page Application</strong>. If you start your project, you will see that everything that we have done is working correctly. We are using the <strong>MVC architecture</strong>, and we have split the project into different folders and functions for better understanding. This way  you can clearly see where each part is located. Keep up with our parts and see how our project grows more.</p><div id="malwarebytes-root"></div>								</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/P7-tvKIOwVs&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following topics:</div></div><ul><li><strong>URL Shortener: App Walkthrough</strong></li><li><strong>Project Structure</strong></li><li><strong>Creating the App Structure</strong></li></ul></div>								</div>
				</div>
				<div class="elementor-element elementor-element-9fe4d6c elementor-widget elementor-widget-text-editor" data-id="9fe4d6c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: left;">Remember that <strong>coding is a skill</strong>, which should be practiced. To learn to code, you should <strong>write code</strong> every day for a long time. Watching tutorials is not enough. <strong>You should code! </strong></p><p style="text-align: left;">We would love to hear from you, so leave a comment below saying what topics you would like to see next.</p><p style="text-align: left;">Register now and take your <strong>free resources</strong> right away! Become a member of the <strong>SoftUni Global Community </strong>and communicate with other <strong>students</strong> and <strong>mentors </strong>and get help for <strong>FREE</strong>.</p><p>After registering, you will get access to thе<strong> project code.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-187b057 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="187b057" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a666564" data-id="a666564" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a0aff0b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a0aff0b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48c6c18" data-id="48c6c18" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1495bc9 elementor-align-center elementor-widget elementor-widget-button" data-id="1495bc9" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-xl" href="https://replit.com/@nakov/URLShortener-Part-1?v=1">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Source code Part 1</span>
					</span>
					</a>
				</div>
								</div>
				</div>
				<div class="elementor-element elementor-element-f972417 elementor-widget elementor-widget-heading" data-id="f972417" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Lesson Slides</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-37e6760 elementor-widget elementor-widget-pdfjs_viewer" data-id="37e6760" data-element_type="widget" data-widget_type="pdfjs_viewer.default">
				<div class="elementor-widget-container">
					<iframe src="https://softuni.org/wp-content/plugins/pdf-viewer-for-elementor/assets/pdfjs/web/viewer.html?file=https://softuni.org/wp-content/uploads/2022/02/ShortURL-Project-Tutorial-Part-1-App-Structure.pdf&amp;embedded=true" style="display: block; margin-left: auto; margin-right: auto; width: 100%; height: 800px;" frameborder="1" marginheight="0px" marginwidth="0px" allowfullscreen></iframe>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/">URL Shortener Project &#8211; Creating the App Structure [Part 1]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/project-tutorials/url-shortener-project-creating-the-app-structure/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Make Our Own Flappy Bird in Unity [Project Tutorials]</title>
		<link>https://softuni.org/project-tutorials/how-to-make-our-own-flappy-bird-in-unity/</link>
					<comments>https://softuni.org/project-tutorials/how-to-make-our-own-flappy-bird-in-unity/#respond</comments>
		
		<dc:creator><![CDATA[Aleksandar Peev]]></dc:creator>
		<pubDate>Tue, 08 Feb 2022 04:58:00 +0000</pubDate>
				<category><![CDATA[Step-by-Step Project Tutorials]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[flappy birds]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[step-by-step]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://softuni.org/?p=11648</guid>

					<description><![CDATA[<p>In this article of the Project Tutorial series, we will create a simple Flappy Bird game, using Unity.</p>
<p>The post <a href="https://softuni.org/project-tutorials/how-to-make-our-own-flappy-bird-in-unity/">How to Make Our Own Flappy Bird in Unity [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="11648" class="elementor elementor-11648" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5d5405e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5d5405e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d32134" data-id="0d32134" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9216798 elementor-widget elementor-widget-text-editor" data-id="9216798" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In this demo, we will create our own Flappy Bird game using <strong>Unity</strong> and <strong>C#</strong>.</p><ul><li>Unity is, essentially, a well-rounded game engine that truly does simplify game development. While there may be better engines to choose from, learning Unity will only help you grow as a game developer.</li></ul><p>For this project, we are using the <strong>2020.3 LTS</strong> <strong>table release</strong>. To create this project you will need to have <strong>Unity</strong> and <strong>Unity Hub</strong> installed. You can <strong>download</strong> them from <a href="https://unity3d.com/get-unity/download">here</a>. To get the completed project, you can download it from the link below. (Link is available after successful registration)</p><ul><li><p>First, we open the <strong>Unity Hub</strong> and <strong>Create</strong> a <strong>2D Project</strong>.<img loading="lazy" decoding="async" class=" wp-image-11661 aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/setup-path-300x160.png" alt="setup-path" width="677" height="361" srcset="https://softuni.org/wp-content/uploads/2022/02/setup-path-300x160.png 300w, https://softuni.org/wp-content/uploads/2022/02/setup-path-1024x545.png 1024w, https://softuni.org/wp-content/uploads/2022/02/setup-path-768x409.png 768w, https://softuni.org/wp-content/uploads/2022/02/setup-path-600x319.png 600w, https://softuni.org/wp-content/uploads/2022/02/setup-path.png 1101w" sizes="(max-width: 677px) 100vw, 677px" /></p></li><li><p>We create a <strong>Sprites</strong> folder in the game directory, and we import all the needed images for the game.</p></li><li>After we <strong>import</strong> the needed images, you can see that you have more than one bird. We slice it save it in a new folder called <strong>Animations</strong>.</li><li>We set it on the <strong>scheme</strong>, we can start the application and see if the bird will fall.</li><li>What we need to do next is create a script for our bird. We create a <strong>Bird.cs</strong> file in the Assets/Scripts folder. We <strong>create</strong> <strong>methods</strong> for the Bird to <strong>fly</strong> and <strong>set boundaries</strong> so it cannot fly outside our screen.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-6a49652 elementor-widget elementor-widget-code-highlight" data-id="6a49652" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>using System;
using UnityEngine;

public class Bird : MonoBehaviour
{
    [SerializeField] private Rigidbody2D _rigidbody;
    [SerializeField] private float _force;
    [SerializeField] private float _yBound;

    private void Update()
    {
        if (Input.GetMouseButtonDown(0) && _rigidbody.position.y < _yBound)
        {
            Flap();
        }
    }

    private void Flap()
    {
        _rigidbody.velocity = Vector2.zero;
        _rigidbody.AddForce(Vector2.up * _force);
    }
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-411639f elementor-widget elementor-widget-text-editor" data-id="411639f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>Now we need to <strong>create</strong> pipes. We create <strong>Upper</strong> and <strong>Lower </strong>pipes. If the bird hits them the game will be over.</li><li>After we are done we create a <strong>MovingObject</strong> <strong>infinity</strong> <strong>runner</strong>. We need to <strong>constantly</strong> move the objects to the left. The speed <strong>increased</strong> by one, for every second that passes. We <strong>set boundaries</strong> for when the object is <strong>destroyed</strong>. We <strong>attach</strong> the script to the pipe. We can check if our scripts work.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-f4a4827 elementor-widget elementor-widget-code-highlight" data-id="f4a4827" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>using UnityEngine;

public class MovingObject : MonoBehaviour
{
    [SerializeField] private float _speed;
    [SerializeField] private float _xBound;

    private void Update()
    {
        this.transform.position -= Vector3.right * _speed * Time.deltaTime;

        if (this.transform.position.x < _xBound)
        {
            Destroy(this.gameObject);
        }
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b3697b2 elementor-widget elementor-widget-text-editor" data-id="b3697b2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>We can move to the <strong>spawner </strong>script. We create the <strong>class</strong> in the same scripts folder. We need a <strong>prefab</strong> to be <strong>spawned, </strong>and a time interval arrange by <strong>1 axis</strong> with a name &#8211; _yClamp. If enough time has <strong>elapsed</strong>, the object will <strong>spawn</strong>, and the <strong>elapsed</strong> time will <strong>reset</strong>.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-4b97940 elementor-widget elementor-widget-code-highlight" data-id="4b97940" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>using System;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    [SerializeField] private GameObject _prefab;
    [SerializeField] private float _time;
    [SerializeField] private float _yClamp;

    private float _elapsedTime;

    private void Update()
    {
        _elapsedTime += Time.deltaTime;

        if (_elapsedTime > _time)
        {
            SpawnObject();

            _elapsedTime = 0f;
        }
    }

    private void SpawnObject()
    {
        float offsetY = UnityEngine.Random.Range(-_yClamp, _yClamp);

        Vector2 pos = new Vector2(this.transform.position.x, this.transform.position.y + offsetY);

        Instantiate(_prefab, pos, Quaternion.identity, this.transform);
    }
}
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-138d7ce elementor-widget elementor-widget-text-editor" data-id="138d7ce" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li>After we are done we can put the <strong>spawner</strong> into action.  We create a <strong>spawner</strong> to spawn pipes, evey 2 seconds in the <strong>y-axis</strong>.</li><li>We add the functionality to the <strong>ground</strong> as well. If we hit play we can see the pipes and ground <strong>spawning infinitely</strong>.</li><li>In our next step, we need to make the game <strong>end</strong>. We add <strong>events</strong> to the Bird inside the Bird.cs class. As a <strong>bonus</strong> you can add sounds for different events. With <strong>OnCollisionEnter2D</strong>, our bird dies and we <strong>freeze</strong> the time.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-ecc7ef9 elementor-widget elementor-widget-code-highlight" data-id="ecc7ef9" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>    [SerializeField] private AudioSource _audioSource;
    [SerializeField] private AudioClip _flapSound;
    [SerializeField] private AudioClip _hitSound;
    [SerializeField] private AudioClip _scoreSound;
    public static event Action OnDeath;

    private void OnCollisionEnter2D()
    {
        OnDeath?.Invoke();

        _audioSource.PlayOneShot(_hitSound);

        Time.timeScale = 0f;
    }
    
    private void Start()
    {
        Time.timeScale = 1f;
    }
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-550d174 elementor-widget elementor-widget-text-editor" data-id="550d174" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><p>We need to <strong>create</strong> a button,  which starts our game.</p></li><li>We use the <strong>Observer</strong> <strong>Design</strong> <strong>Pattern</strong> and it&#8217;s commonly used in <strong>game development</strong>.</li><li><p>We create a new class called <strong>UIManager</strong>. In our class we add the following play button <strong>logic</strong>:</p></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-7dbb766 elementor-widget elementor-widget-code-highlight" data-id="7dbb766" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>    [SerializeField] private GameObject _playButton;
    [SerializeField] private TMP_Text _score;

    private void Awake()
    {
        Bird.OnDeath += OnGameOver;
    }
    
    
    private void OnDestroy()
    {
        Bird.OnDeath -= OnGameOver;
    }

    public void RestartGame() => SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

    private void OnGameOver() => _playButton.SetActive(true);

</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b7f5a46 elementor-widget elementor-widget-text-editor" data-id="b7f5a46" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><span data-preserver-spaces="true">What we need to do is create a <strong>text mesh</strong> for the score on our screen. In the Bird <strong>class</strong>, we add <strong>functionality</strong> so that the score will change. The <strong>OnTrigger</strong> event will <strong>trigger</strong> and <strong>play a sound</strong>.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-ee2595f elementor-widget elementor-widget-code-highlight" data-id="ee2595f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>public static event Action OnScore;

    private void OnTriggerEnter2D()
    {
        OnScore?.Invoke();

        _audioSource.PlayOneShot(_scoreSound);
    }</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-473d62c elementor-widget elementor-widget-text-editor" data-id="473d62c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><span data-preserver-spaces="true">In the <strong>UI Manager</strong> we also need to add the <strong>functionality</strong> for the score. Each time the bird <strong>passes</strong> a pipe <strong>depending</strong> on the state we will get <strong>Awake()</strong> or <strong>OnDestroy()</strong> event. We <strong>increment</strong> the current number of the score when the score <strong>increases</strong>.</span></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-886c880 elementor-widget elementor-widget-code-highlight" data-id="886c880" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>private void Awake()
{
    Bird.OnDeath += OnGameOver;
    Bird.OnScore += OnScore;
}
    
private void OnDestroy()
{
    Bird.OnDeath -= OnGameOver;
    Bird.OnScore -= OnScore;
}
private void OnScore() => _score.text = (int.Parse(_score.text) + 1).ToString();</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-b36e965 elementor-widget elementor-widget-text-editor" data-id="b36e965" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span data-preserver-spaces="true"><img loading="lazy" decoding="async" class="aligncenter" src="https://softuni.org/wp-content/uploads/2022/02/final-look-177x300.png" alt="final-look-app" width="184" height="311" /></span></p><p><span data-preserver-spaces="true">If we followed all the steps as shown in the <strong>video tutorial</strong>, our project should be working. What you learned in this tutorial will work for most of your projects in any <strong>engine</strong>. <strong>Unity</strong>&#8216;s pipeline is smooth, yet complex. <strong>Unity</strong> is, simply put, the world’s most popular <strong>game engine</strong>. It packs a lot of features together and is flexible enough to make almost any game you can imagine. <strong>Unity</strong> packs tools for <strong>2D</strong> and <strong>3D</strong> game development.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-88292b4 elementor-widget elementor-widget-video" data-id="88292b4" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/HQVUGyto8Gg&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-edfdd22 elementor-widget elementor-widget-text-editor" data-id="edfdd22" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Lesson Topics</h2><div><div><div>In this tutorial we cover the following steps:</div></div><ul><li><b style="font-style: inherit; color: var( --e-global-color-text );">Project Creation</b></li><li style="font-size: 15px;"><strong>Project Setup</strong></li><li style="font-size: 15px;"><strong>Creating a Bird</strong></li><li><strong>Adding the Bird Script </strong></li><li><strong>Prefabs</strong></li><li><strong>Adding Moving Object</strong></li><li><strong>Defining Spawner</strong></li><li><strong>Setup Spawners Usage</strong></li><li><strong>Implementing Game Over Feature</strong></li><li><strong>Adding Score</strong></li><li><strong>Adding SFX</strong></li><li><strong>Testing Project</strong></li></ul></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-dc263e9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="dc263e9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f88ff6" data-id="2f88ff6" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-96efd1f elementor-align-center elementor-widget elementor-widget-button" data-id="96efd1f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-lg" href="https://github.com/origami99/Flappy-Bird-Demo" target="_blank">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-laptop-code" viewBox="0 0 640 512" xmlns="http://www.w3.org/2000/svg"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg>			</span>
									<span class="elementor-button-text">Download Project</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3cd15ec elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3cd15ec" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-56bfdb0" data-id="56bfdb0" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
							</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softuni.org/project-tutorials/how-to-make-our-own-flappy-bird-in-unity/">How to Make Our Own Flappy Bird in Unity [Project Tutorials]</a> appeared first on <a href="https://softuni.org">SoftUni Global</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softuni.org/project-tutorials/how-to-make-our-own-flappy-bird-in-unity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: softuni.org @ 2026-04-16 07:01:25 by W3 Total Cache
-->