Blog

Being Analytical isn’t Mandatory to be a Good Developer

You’ve probably heard that in order to succeed in software development, you have to be an analytical type of person, but that’s not always the case. The stigma that coding is just for people who are really good at STEM can code. Anyone can learn to code, if they work hard enough. While analytical skills undeniably play a huge role in solving complex problems and optimizing algorithms, this doesn't paint the full picture of the tech industry. It’s not just about lines of code; it's also about empathy, creativity, and an understanding of user needs. Building exceptional user experiences requires you to see beyond the syntax and understand the human story behind each interaction. Can I be a programmer if I'm not an analytical person? YES. Even if you're not naturally analytical, you can still learn programming by practicing and developing your analytical skills over time. It's like learning any new skill – start with the basics and take it step by step. Learning to code is hard at first (for almost everyone) so don’t worry.  Does coding require analytical skills? Analytical skills are helpful, but coding is about more than just numbers, symbols, and algorithms. Of course, having a knack for figuring things out and being logical can make it smoother. But, if you're not super analytical now, coding can actually help you build those skills.  Do you have to be intelligent to be a coder? Being intelligent isn't the only ticket to being a master coder. Sure, it helps, but what matters more is your curiosity and persistence. You don’t need to be a genius. It's about trying, failing, learning, and trying again.  Is programming creative or analytical? It’s both! On one side, it’s analytical because you need to break down problems, understand syntax, and fix errors. But on the other side, designing UI’s, creating algorithms, and finding unique solutions all need a more creative approach.  Putting analytical skills together with creativity in software development is basically the secret sauce for progress. This mix of logic and imagination leads to apps that stand out in the market. These products not only solve real-world problems but they leave an impact on users and set new standards in the world of tech.  Can anybody learn coding? Yes, anyone can code. The key is to be determined and consistent. It’s not a skill just for an exclusive group of people, it’s something that anyone can learn. With patience, practice, and the right resources, (and more patience) you can definitely get the hang of it.  Thinking beyond code Innovation thrives when we bring together minds that see the world from different angles: 🚀 The dev who thinks outside the box They bring creativity + challenge traditional thinking. 🖼️ The dreamer who envisions the bigger picture  They provide the goals that guide the team towards shared success. 🌉 The communicator who bridges gaps  They allow for great collaboration by turning technical jargon into something that everyone can understand. They all play their part. Together they create a culture where innovation can thrive. Diverse perspectives Diversity in skills translates to diversity in thought, and that's where groundbreaking solutions come from. Whether you're working on complex algorithms or creating user interfaces, these different perspectives add to the evolution of tech. If every developer was the same then there wouldn't be any innovation. When different ideas collide, it leads to more creative solutions that help a broader and more varied audience.  An inclusive space The tech industry (in theory) embraces the inclusion of people with different strengths and skills. Having an inclusive culture where people feel welcome allows for a more diverse and creative environment. This mix of talents helps solve problems in new ways and makes the industry stronger and ready to take on new challenges. In a world where technology is intertwined with every aspect of our lives, it's not just about having an analytical mentality, and it’s not just about creative expression either. It's the blend of these qualities that pushes us forward and creates real change.

What Sets the Great Developers Apart From the Rest?

It's not just about how well you can write lines of code – it's about tapping into your own strengths and knowing how to properly use them. Recognizing and leveraging these qualities can help you become a great coder and stand out in the world of software development.  So, let's dive into 5 game-changing traits that go beyond the syntax and algorithms and can seriously boost your dev game. ↓ 1. Strategic ♟️ Navigating the world of software development requires careful planning and a clear idea of what they’re trying to do. Individuals who are good at seeing the whole picture, like those with the Strategic strength, play a crucial role here.  They can spot potential issues and come up with clever ways to meet coding targets. Their ability to think ahead ensures that the software aligns well with the main objectives, allowing for a smoother and more successful development process. 2. Learner 📚 In the dynamic world of technology, devs can find themselves on a never-ending roller coaster of new languages, frameworks, and tools. In this situation it’s important to have a hunger for knowledge in order to stay relevant. That’s where the strong Learner trait comes in. It drives devs to acquire new knowledge and skills.  The interesting thing about these individuals is that they dive head first into the latest tech but still have a solid understanding of the fundamental concepts. They’re fueled by curiosity and always want to know more, making them flexible and well-prepared to handle emerging technologies.  3. Analytical 🧠 For developers, breaking down complex problems into manageable components is a common challenge. Having the Analytical strength allows them to dissect issues and identify any patterns.  They can essentially take chaos and transform it into efficient solutions based on data and logic. This mindset helps devs effectively solve problems and build strong and well-organized software systems. 4. Adaptability ⚔️ One of the only constant things about the tech landscape is that it’s always changing; meaning that in this world, success favors those who are willing to embrace change. People who have a strong Adaptability trait can thrive while navigating different concepts, languages, and frameworks.  They're flexible, open to change, and can quickly adjust their approach to meet evolving needs. It’s not just a handy skill, it’s a very important asset in the non-stop world of technology and allows them to not only cope with change, but also turn it into an opportunity for improvement.  5. Achiever 🏆 Being able to complete projects and meet deadlines is crucial in this line of work. Developers with the Achiever strength are motivated by setting goals and actually accomplishing them.  They have a strong work ethic and are dedicated to see their  projects through to completion. Their determination is the driving force that keeps them motivated and also contributes to the overall success of the team by making sure tasks are done well. Being an A+ coder is just the stepping stone. Top companies are looking for the full package – skills, vibes, and the drive to keep pushing boundaries. These are the traits that make devs thrive.

How Constant Learning FOMO Can Be Harmful

There’s all this talk about how you have to be constantly learning about new tech and different ways to do things, but let’s be honest: that’s way too much pressure. It might seem contradictory, but taking it easy on yourself can actually help you get farther. Staying on top of everything new in the world of tech is like an endless sprint. But, it's okay to take a breather. 😮‍💨 Sure, FOMO (Fear of Missing Out) can be pretty real for those who want to always be learning something new. But the pressure to soak in everything like a knowledge sponge can backfire. It's about quality, not quantity. Here's the deal Healthy learning isn't a sprint, it's a marathon. Pumping the brakes a bit and finding your pace can actually boost your long-term growth. Find a speed that works for you, keeps you going strong over time and helps you avoid burnout. Own your personal journey It's not a competition to keep up with everyone else. It's about embracing your unique path. Dive into topics that actually interest you and let the learning flow at a pace that suits you. This can make your educational journey more fulfilling and meaningful. Reflex and apply Remember to balance your need to gain new knowledge with moments of reflection and application. Consider it like letting fresh information soak in, giving yourself the space to understand it, and then using that understanding to create something exciting.  Learning how to learn It might sound strange, but sometimes you actually have to learn how to learn. It’s like having a superpower for your brain: It helps you understand and remember things better Lets you adapt to changes in the world Saves you time by making learning faster Allows you to keep learning throughout your whole life In simple terms, learning how to learn is like having a set of tools that make your brain stronger and smarter. Here are some important things to keep in mind to ensure a healthy approach to learning: -> Embrace curiosity: Explore the things that peak your interest. When you're curious, studying becomes more engaging and enjoyable. Learning is something you can do your whole life. It's not about reaching a special goal, so have fun exploring instead of worrying too much about getting to the end.  -> Set realistic goals: Define goals that you can actually achieve that also align with your objectives. Break down complex topics into manageable tasks to make learning easier and less confusing. -> Build a support system: You don't have to study alone. Surround yourself with people who share similar interests or goals. Go to meetings, join communities, and work with others, you might learn something new from them. Trying to grasp new information can become more interesting when you can exchange ideas and perspectives with others.  -> Hands-on application: You comprehend better when you actually use what you've learned in real life. This can mean working on projects, talking with others, or teaching what you know to someone else.  -> Don’t go overboard: Remember to take breaks and rest. Rest is super important when you're learning. Just like your body needs a break after exercising, your brain needs breaks too.  -> Be patient with yourself: Learning is a continuous process, and everyone progresses at their own pace. Be patient, stay persistent, and celebrate small victories along the way. -> Keep getting better: Constant learning doesn't mean overwhelming yourself with new information every day. It can also be about getting better at what you already know. Think of it like making small improvements to become even better at the things you like. Take up a learning pace that suits you just right. Remember, it's not about how much knowledge you take in, but how you absorb it and use what you've got.

Copilot and ChatGPT Can Become Your 24/7 Productivity Duo (Here’s How)

Copilot and ChatGPT can become your 24/7 productivity duo (here’s how) Everyone talks about whether artificial intelligence will replace developers or not, but we aren’t talking enough about how useful it can be to help you get more work done in less time. So If you haven’t already, it’s time to embrace Copilot and ChatGPT. What is Copilot? ⭐ Copilot, powered by GitHub and OpenAI, is an AI-powered code completion tool. It suggests lines of code in real-time, helping you write faster and cleaner code. What is ChatGPT? ⭐ ChatGPT, also by OpenAI, is basically your AI assistant. It can help you with different tasks like coming up with ideas, explaining complex programming languages, or creating documentation. Imagine having an always-available partner to brainstorm and work on your projects, that gives you suggestions in real-time. ChatGPT and Copilot make it easy to share thoughts, refine ideas, and discuss how to do things better for your projects. They’re like rocket fuel for your productivity.  Here are 10 ways they can help you: 1. Ready-to-use code Copilot can help you create custom code libraries tailored to your project. This way, you can quickly access and reuse them whenever needed, saving you time and effort in writing repetitive sections of code. It also helps in organizing these libraries for easy access. This means you can build up a collection of code snippets and pick them without having to start from scratch.  2. Automatic code reviews You can use Copilot to check your code and spot any potential mistakes and suggest improvements. It's like having a second pair of eyes on your work. Copilot can also adapt and learn how you like to code, meaning that over time it can match its suggestions to your coding style and help in your skill development. 3. Learn new tricks Copilot can teach you new coding tricks. If you're curious about a new programming language or framework, it can show you how it structures the code and how to use it. It's kind of like having a guide to help you. At the same time, ChatGPT has essentially an endless knowledge base, sharing information whenever you need it, making it a great tool for continuous learning. It’s also ready to explain things whenever you have a question. Like if you wanted to use React in Typescript, you could read our article here and then ask ChatGPT any follow-up questions. 😉 4. Easy integrations When working on integrating APIs or third-party services, Copilot can suggest the easiest and most efficient ways to do it. It helps link things up smoothly so you can spend less time struggling to make things work together and more time working on your projects. 5. Fix bugs quickly Copilot can help you quickly find and fix bugs in your codebase. It helps by giving you solutions that match what you're doing, making the debugging process faster. Your work goes quicker and smoother, helping you get more done with less issues. 6. Understand complex code If you're stuck on understanding a tricky piece of code, ChatGPT can break it down into a simple explanation. This way devs can get a better grasp of the logic and how the code is put together. Understanding how the code works makes it easier to work with and build upon it. 7. Create documentation ChatGPT can help you write documentation for your projects based on the code you've written. This makes the documentation clear and organized, so it’s easier to understand the project better. When others need to understand what your project does or how it works, this documentation makes it simple for everyone to follow along. 8. Better pair programming You can use both Copilot and ChatGPT during pair programming sessions for better collaboration. Copilot helps with code, and ChatGPT helps with planning and talking through ideas. This makes the session more efficient and actually helpful to the devs involved.  9. Project planning ChatGPT can help you plan your project and set goals. It helps organize your thoughts and create a structured roadmap for your project. It assists in deciding what’s important and prioritizing tasks, making it easier to decide the next steps for your project. 10. Round-the-clock support Whenever you hit a problem or have a new idea, Copilot and ChatGPT are there to support 24/7. Whether it's fixing a tricky debugging sess or a sudden brainstorming moment, they're ready whenever you need them.  When Copilot and ChatGPT work together, they're a powerful team for getting things done. This productivity duo can become a crucial part of your work life, giving support, ideas, and solutions whenever you might need them.

6 Easy Ways to Supercharge Your Web Performance (Both Google and Users Will Love It)

People don’t like to wait, especially for a website to load (unless it’s for Taylor Swift tickets). If users find themselves stuck staring at a loading screen, they’re going to leave. Plus, let’s not forget that search engines reward speedy websites. So, if you want your audience to stick around and actually enjoy their time on your platform, it’s time to OPTIMIZE IT. Please, your audience is begging for it. The good news is, it's not as complicated as it sounds. It’s definitely not rocket science and with just a few tweaks, your website can run smoother than ever. Here are 6 simple ways to boost your web performance: 1. Clean up your code Less is more when it comes to code. Get rid of unnecessary spaces and comments. Smaller files mean faster load times, and that's a win-win.  Make sure your build process has tree shaking enabled; it helps remove unused code, making your website even leaner. 2. Your photos don’t need to be huge High-res images can be a drag on your loading time. Compress them and choose the right format: jpeg for pictures, png for graphics, svg for vectors, and if possible, go for webp instead of jpeg or png.  These adjustments help your website show pictures quickly, especially for people using phones or tablets! 3. Lazy loading Your website doesn't have to load everything at once, especially images. You can wait until a user needs to see or use them and then load them. Lazy loading not only makes your pages load faster but also saves data for your users. 4. Cache, cache, cache Keep regularly accessed data closer to your users. It's like having a secret stash of goods ready whenever they need it. Teams often get mad at caches because they see it as an accessory that is automatically configured.  Make it a core part of your app, design caching strategies wisely and they’re going to make your app go brrr. 5. Use CDNs CDNs (content delivery network) are like a quick delivery service for content. They help your website load quicker by sending content to servers that are physically closer to the user.  This reduces the time it takes for the content to reach its destination, creating a more seamless browsing experience worldwide. 6. Don’t pick the wrong rendering strategy Choose how your website shows up wisely and align it with your goals. If it's more of an app-like experience you're after, go for client-side rendering. If quick loading is a priority, server-side rendering might be your best bet.  Think about what your website is meant to do and how you want users to feel when they use it. Why listen to us? Well besides having a team of expert engineers 😉, we’re web users ourselves and we know what people want. And performance is a crucial part of the user experience.  Remember, a visually stunning website is only impactful if it loads quickly and efficiently. Always prioritize the user experience, value their time, and give them a seamless journey on your platform. Your audience will thank you! 

Cracking the Code on Tech Interviews: 8 Pro Tips for Recruiters

Preparing for a tech interview, especially as an interviewer, can be tricky. That’s why it’s so important to communicate well with devs to understand their skills.  It's not just about evaluating candidates; it's also about making them feel comfortable and showing that your company is a great place to work. Here's how to to prep: 1. Know the role inside out Understand the specific position you're hiring for. Learn everything about it: the tasks, skills needed, and qualifications required. This knowledge will help you ask the right questions during the interview. Then you’ll be able to ask the right questions and check if the person is the right fit. 2. Use real-world problems When you ask technical questions, make them about real problems that your team faces. It shows how the person will deal with actual challenges. Focus on their answer and how they think and explain their approach. This helps you understand their problem-solving skills and if they can communicate their ideas well.  3. Ask smart questions Come up with questions that dig deeper than just basic knowledge. You want to know how the person thinks and solves problems using their tech skills. This helps you evaluate both their technical and soft skills.  Tailor your questions to understand how the person's skills align with the role requirements and company culture to give you a more complete assessment. 4. Check if they’re open to learn Find out if they’re ready to adapt and learn new things. Tech changes a lot, so being open to learning is a super important quality.  Look for signs that they’re willing to keep up with what's new in the industry and ready to pick up new skills. Their openness to continuous learning not only helps them grow but also adds to the overall progress and creativity in your own team. 5. Understand the company culture Understand what your company is like - how it works and what its values are. This will help you see if the person would be a good fit. Try to see if their work style and beliefs align with the vibe of the company.  A perfect cultural match is not only the secret sauce for individual success but also unlocks great collaboration and harmony between employees.  6. Plan it out Have a clear plan for the interview. Break it up into sections to check things like technical abilities, problem-solving skills, how well they work with others, and if they fit in with your company.  Having an organized plan will help you evaluate them better and makes things easier for the interviewee.  7. Make the candidate feel comfortable Create a positive vibe during the interview. Be welcoming, explain how the interview will go, and bring up any worries they may have. Give them the chance to speak and make it a conversation. They might have Imposter Syndrome, so you want to help them get rid of their nervousness and feel more confident.  When candidates feel comfortable, they can act natural and show the best part of themselves. 8. Give feedback After the interview, tell the person how they did and how they can improve. It’s great for personal and professional development. No matter the outcome, it's a friendly gesture and it helps them learn and do better for next time.  Remember, a good interview experience leaves a good impression, whether you end up hiring the candidate or not. It not only reflects well on the person you're interviewing but also on the company. It sets the stage for possible future opportunities and helps build a positive reputation for your company. Every interview is a chance to make a good connection, and a positive experience can lead to good things for everyone involved.

arol.dev: Pioneering the Use of NFTs in Edtech

At arol.dev we believe in celebrating our students’ success in a special and modern way. When they complete the program, we don’t just give them a regular paper diploma. We award them with a one-of-a-kind NFT certificate. This digital certificate is special and represents their hard work. In the ever-changing world of tech, we get that it’s important to recognize our grads with more than just a traditional certificate. So we talked to one of the founders of arol.dev, Arol himself, about why we’re redefining the way academies honor their graduates.  What are NFTs? But before we get into that, what exactly are NFTs (non-fungible tokens)? Think of them as digital certificates of ownership for items or content. They use blockchain technology to keep track of who owns what. As NFTs are content, they can represent anything like artwork, videos, music, and even virtual items in video games and anything you can imagine. Here's an example: Imagine you create a digital piece of art on your computer. You could create an NFT for it (tokenize it), which would prove that you own the original and it's unique. Even if people can make copies of the art, only you would have the official NFT to show that you're the original owner. It’s a proof of authenticity.  NFTs have become popular because they give creators a new way to sell and share their work directly with fans, which lets them prove ownership of assets. This is especially useful in the digital world where you can just make copies of things and share them. But it's not limited to art. They're actually a great way to proof authenticity in an open and decentralized way. Why use NFTs as graduation certificates? Apart from the fact that graduation certificates as NFTs give students a reliable and modern way to celebrate their achievement, there are other unique benefits that traditional certificates can’t offer:  With a PDF or paper, you can send it off or show it to people but it’s not really the most credible option to prove that you’ve completed a course. This idea made sense in the past when you’d go to a job interview and give them a certificate to show your experience. If we’re being honest, those documents can be easily forged and it’s harder to verify that they’re actually real.  Trustworthy On the other hand, NFTs make your certificate more credible. With the special tech behind these “non-fungible tokens”, you can prove that it’s the original, not a copy. In the way we have them configured, the NFTs allow for graduates to share their certificates and anyone can check with arol.dev that they’re real.  For example, potential employers can check with us to confirm that the NFT is issued by arol.dev and connected to the blockchain. They can even verify it themselves without going through us and just checking the blockchain platform directly to see the transaction and the wallet with all the information proving that the student graduated from our program.  Secure With an NFT, it’s stored digitally so there are no worries about the document getting lost or damaged like a physical paper. It’s safe and reliable. Plus, your certificate can’t be faked.  Future-proofed Your NFT certificate will be stored on the blockchain indefinitely, meaning you don’t need to worry about degradation over time, it’ll still be preserved. Even if arol.dev ceased to exist (let’s hope not) the NFTs would still be accessible. Personalized  What we embed in each NFT is the graduate’s name, when they graduated, their GitHub handle, what class they were in (to foster a community) and what the certificate is for. How does an NFT certificate work? We burn the NFTs manually with our team and then create a wallet with the certificate on the Polygon blockchain, which we then send to the graduates. Basically it’s like a transfer, like how anyone sends Bitcoin or money but in this case it’s a non-lucrative NFT certificate. How do we make sure that they’re valid and secure? We have different levels of security: we program the NFTs so they cannot be transferred to just anyone: they can only be given to a student, canceled, removed, or transferred only back to the original wallet but never to another address.   Plus, the NFTs are stored on the Polygon network, a blockchain platform (backed by the Matic cryptocurrency) which also has its own security measures to protect the information.  Endless possibilities What else could we add to the NFT certificates? Well, we’re open to ideas, of course, but it’s nice to keep it simple. NFTs offer endless possibilities but we’re also looking at how to use it internally. We like to stay connected with our alumni and are already publishing content for our community of graduates. Currently we’re working on being able to implement NFTs as an authentication for a future platform where we will publish all this content in a more centralized space. You log into the platform and instead of using a username and password, you connect the wallet with the NFT and gain access to all the material.  Bridging innovation and education  Our software engineering academy is all about the latest tech and staying ahead in the field including finding new ways to celebrate achievements. We teach students to think ahead and give them an edge in the tech world.  What makes us special is our focus on new ideas and staying up-to-date with the newest technologies. Our learning experience is engaging and keeps going even after graduation. It’s not just an academy, but a community of software engineers who help each other learn and create unique solutions in the world of tech. 

Building an Express.js Application with TypeScript

Express.js is a popular web application framework for Node.js that simplifies the process of building robust and scalable web applications based on the middleware architecture. It provides a minimalistic and flexible set of features for creating web servers and handling HTTP requests and responses. There are several tools that provide a boilerplate app but rarely an Express server with TypeScript, today we are going to start one from scratch. Create a package.json file Create a minimal server with Express Installing TypeScript Final adjustments 1. Package.json We start creating a new folder where the whole server is going to be. And we execute yarn init to create the package.json . You should end up with something like this: From this point we can add new packages to the repo. 2. Test a simple script Now we can try to create a index.js and insert a simple console.log('hello world'), to test it we first need to add nodemon with yarn add --dev nodemon and then add to the package.json a new script and display the log when we execute it. 3. Create a minimal express server Let's add express yarn add express and add the following code at index.js We can add .env and .env.example files to start using environment variables. Create the files and add PORT=8080 to them. If we want to read it we need to add a package yarn add dotenv and a few lines to the express server, the file should look like: 4. Install TypeScript Time to start TypeScript, we'll need to install it along with all the types for Express and Node.js with yarn add --dev typescript ts-node @types/express @types/node @types/dotenv. Once it's installed we need to create the configuration file for TypeScript, run the following yarn tsc --init and after that will appear a tsconfig.json in the directory. Now we should have the file with the default config. target: Set the JavaScript language version for emitted JavaScript and include compatible library declarations. module: Specify what module code is generated. esModuleInterop: Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. forceConsistentCasingInFileNames: Ensure that casing is correct in imports. When TypeScript complies the code the outDir is going to define where is going to be the final code, let's set it to /dist folder. We also can change several options, change the following options in your file. Now, let's change the Express server to TypeScript. Start by renaming index.js to index.ts In addition we need to add ts-node package with yarn add --dev ts-node , modify the development script to "dev": "nodemon ./src/index.ts" and add src folder to move the index.ts inside. The idea is to set up a project to have not also the server but also have tests and types, so create 2 new folders: types: this folder will contain types that are shared throughout our entire application. __test__: as per jest convention; you can use other folder names. Here we’ll create the test that cover the entire application. Unit tests are going to go in deeper, more specific folders. 5. Final adjustments We need to prepare the server for production and real world scenarios, let's add some other packages that will help to achieve it. Set up ESLint & Prettier First let's add esLint with yarn add --dev @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint and create the .eslintrc.json with this config. We'll need a .prettierrc file with the following config and the package to avoid conflicts with esLint yarn add --dev prettier eslint-plugin-prettier Finally modify the scripts to build the app and add EsLint configuration to the package.json. We also need to change the main and source directories. Make sure you ignore important or build files with .gitignore A .gitignore file and add .env.example because the .env would be ignored. Wrapping up That's it for today, you can use it as boilerplate and forget about configuration in your own projects, a task that always takes time and it's not really interesting so you can focus on the fun part, coding.] There are still some considerations on how to type effectively an express application, but that’s for another post. Some ideas if you want to start researching for yourself. Or tune in to our social media so you know when we release more tutorials like this in the future. How to extend an Express Request with custom data from middlewares. Where to store our custom types in an Express application when using TypeScript.

Crafting Effective Pull Requests: A Guide to Collaborative Development

Developers often collaborate on projects, and one of the most essential tools for collaboration is creating pull requests (PRs). PRs are a quintessential part of asynchronous communication in software development. By honing your skills in making effective PR's, you will not only contribute to the team's success, but also accelerate your own growth as a developer. This guide will discuss six essential practices that help in making effective PRs to make you become a great software engineer. 1. Keep PRs Small and Focused It's important to keep pull requests small and focused on a specific change or feature. This makes it easier for reviewers to understand your changes and provide valuable feedback. When a PR is too large, it becomes challenging to ensure that all changes are thoroughly reviewed. By keeping your pull requests small, you increase the likelihood of receiving detailed feedback and expedite the process of getting your changes merged. Let's say you are working on a feature that involves adding a new page to a web application. Instead of creating one large PR that includes all the changes related to the new page, you can break it down into smaller PR's that build off of each other. Here's a visual representation of how this could work: Create PR #1 that adds the basic HTML and CSS for the new page. The base branch would be main/master. Create PR #2 that adds JavaScript functionality and interactivity to the new page. The base branch would the the branch for PR #1 Create PR #3 that adds server-side functionality and database integration to the new page. The base branch would be the branch for PR #2. Each PR builds off of the previous one, so the changes are incremental and easier to review. This approach also allows you to get feedback and make changes more quickly and efficiently. 2. Use Feature Flags Feature flags are a powerful way to control the release of new features or changes in your application. They allow you to enable or disable specific functionality without modifying the code. By using feature flags in your pull request, you give your team the flexibility to test and release your changes gradually, reducing the risk of introducing bugs or issues. This is because the feature doesn’t have to be fully completed before merging. 3. Include a Loom Video Demonstrating Functionality A picture is worth a thousand words, and a video is worth even more. Using a tool like Loom, you can quickly create a video demonstrating the functionality of your changes. Including a video in the PR description helps reviewers understand the impact of your changes, making it easier for them to provide meaningful feedback. In the description of the PR, make sure to also link the associated issue, provide information about any remaining work to be done, and any what kind of cases you tested including any edge cases. 4. Use Git Rebase Interactive for a Clean Git History Maintaining a clean git history is essential for tracking changes and finding the source of bugs or issues. Using  You can re-organize, squash, or edit your commits, making the history easy to read and understand. A clean git history makes it easier for your team to review your changes and understand the evolution of your codebase. This will open up an interactive editor that shows a list of all the commits on your branch, starting with the oldest one. In the editor, you can change the action for each commit to one of several options: pick: keep the commit as is squash or s: combine the commit with the previous one reword or r: change the commit message drop or d: remove the commit entirely For example, let's say you want to squash the last two commits together, reword the commit message for the third commit, and drop the fourth commit entirely. You would modify the file to look like this: Here's how to save and exit the Vim editor when using git rebase -i: After running git rebase -i the interactive rebase file will open in Vim. Make your changes to the file as needed. Once you're done, press the esc key to exit insert mode and return to command mode. To save your changes and exit Vim, type :wq and press enter. This command will write the changes to the file and quit Vim. If you only want to save your changes without quitting Vim, you can use the :w command instead. If you made a mistake and want to discard your changes and exit Vim, type :q! and press enter. This command will discard your changes and force quit Vim. Note that if you've made changes that you want to keep, you should use :wq instead of :q!. Once you've saved or discarded your changes and exited Vim, the interactive rebase will continue running. 5. Leverage Comments Strategically Comments can be added in two places: in the code itself, or in the pull request. It's important to use comments strategically to help others understand your changes. When adding comments in the code, focus on explaining complex logic or decisions that may not be immediately apparent. These comments should provide additional information that is not obvious from just reading the code. Make sure the comments are clear and concise, and avoid adding comments that simply repeat what the code is doing. In the pull request, comments can be used to ask questions or provide explanations about your changes. This can be helpful in providing context for the reviewer and helping them understand the purpose and impact of your changes. Avoid duplicating comments that are already in the code, and focus on providing high-level explanations of your changes. Remember, comments should add value and help others understand your code. Use them effectively to make your code more readable and easier to understand. Wrapping up In conclusion, creating an effective pull request is an essential skill for any developer working in a collaborative environment. By keeping PRs small, referencing related PRs, using feature flags, including demonstration videos, maintaining a clean git history, and leveraging comments strategically, you can create pull requests that are easy to review and facilitate efficient collaboration among your team members.

React in TypeScript: A Quick Guide

React is amazing, but let's face it, as the application grows you can find yourself going back and forth, changing files, just because you don't remember how you called a prop. It just adds more chaos into the freedom that JavaScript offers, which often lead to bugs. That makes it imperative to use TypeScript. The adoption of static typing can help us catch errors in advance, prevent bugs, improve code maintainability and in the long term enhance productivity we provide to the developer the best experience. I get it, it gets hard at first, that's why I created this quick cheatsheet, so you can catch up with the best static typing practices using React. It will provide you with a quick reference for commonly used patterns, syntax, and best practices when working with React and TypeScript. Here's what's covered: Props types Children types Event handlers Lift prop events Lift prop inputs useState useCallback and useMemo useReducer Prop types Let's start with the one of the basics the props. In the child we define what is going to be the type for the props Use type instead of interface to make it reusable in other files. Another version destructuring the props inline: And finally we can even define the types inline as well Children types Usually the easiest way to get this works (and tempting) is use any in the children definition, but is just use the type React.ReactNode And like before we can use the inline types as well if you prefer it. Event handler types Here we need to start using inference from TypeScript, usually this is going to be the types that we are going to use to define the props. Let's take a look to the following example. We have a click event and If we hover over it we'll se a menu displaying the type, we can take it and insert in the definition of the props. Lift events What if I want to pass events? Let's look first at the definition of the props. Now the props is going to become a function, this function will have an event as input and return a void function. We can type this event, otherwise It'll complain. To solve it just copy the last type definition and remove the Handler because now we are defining the event and not the handler. Now in the parent the event type will be lifted automatically and we can use the hover to see the definition of it again, and type it in the function. Lift values We might have the need to pass some value from the children to the parent as well. We can include it in the definition of the props. In the children we have to pass to the function the event and also the input, in this case and id and define it in the prop definition. Finally we'll be able to see the type in the parent (hovering to the event) and include in our function. UseState Looking at the following example we know for sure that the list is going to be an array with objects, containing an id and value . What we can do is define the individual type and tell the state that list is going to be an array of that type. UseCallback and UseMemo These hooks are pretty simple, it's going to infer the type of the function inside, so what we actually have to do is type correctly the function inside and what is going to return. In the case of useMemo we can even type the returned value. UseReducer It should be easy to type the state as number but the action it's a little tricky, we can have both add and subtract and place an option in the type is not going to be possible. What it can be done is place optional type for the action reducer. Resources If you want to study more about how to correctly type your React code, you can also visit React Typescript Cheatsheet which I find quite useful. Wrap up Mastering TypeScript with React can be challenging sometimes, but once you've got the hang of it, it can significantly improve your development skills. It helps prevent bugs, enhances code maintainability, and boosts productivity. In this guide, we've covered some commonly used patterns, syntax, and best practices with examples for prop types, children types, event handlers, lifted prop events and inputs, and the usage of several hooks such as useState, useCallback, useMemo, and useReducer. I hope you found this quick cheatsheet useful. As always, practice is key to mastering, so keep coding! There's a lot more to explore, and I encourage you to dig deeper into the topic and learn more about the endless possibilities TypeScript offers when used in conjunction with React. Happy coding! ✌️

6 Reasons Why Learning to Code is the Ultimate Game-Changer for Your Career

If you hadn’t noticed, almost everything and everyone on the planet relies somehow on technology. The demand for it has grown even more as companies want to innovate, boost productivity, and streamline processes. So that’s where programming comes into play. Programming is basically telling computers what to do by writing instructions (code) in a language that they can understand.  Why is it important? Well, whether you're in finance, healthcare, marketing, or any other field, coding has become an essential skill. Organizations want programmers to help add and maintain technology in their operations, and they’re willing to pay more money to do so.  Even if you’re not a programmer, web developer, or anything techie, learning to code can still be beneficial to be more creative, increase productivity, become indispensable and just stay ahead of the curb. So let’s dive into the world of coding and uncover how it can reshape your professional career: 1. Better benefits Being a programmer is a solid job and coming from a software engineering academy, we might be biased, but the benefits speak for themselves: Remote work: Imagine the freedom of working from your home or from pretty much wherever you want. Some companies might make you go to the office once or twice a week, or maybe once every few months for in-person meetings, but in general, they know better than to try to force programmers to go to the office every day.  Learning programming sets you up for more remote job opportunities and lets you forget about geographical boundaries. Who said that you can’t live in one country and work for a company in another? It’s quite common for developers to live in one place (for example, Spain) but work for a company based elsewhere (US, Switzerland, Germany, etc.). So why be stuck in a boring office when there are so many opportunities out there? Improved work-life balance: Being able to take control of your professional life and still be able to enjoy the pleasures of life outside of work is something that many people are constantly looking for. In general, developers have a lot of flexibility when it comes to working hours, schedules, and responsibilities. Unlike other roles, these positions have a lot of freedom, which allows you to fit your workday to your lifestyle. Whether it's taking breaks throughout the day to spend time with your loved ones, enjoy hobbies or even just go to the gym, developers often have the advantage of integrating their own personal interests seamlessly into their work routines. Some of our students that have come from other industries and become programmers say they have less stress and enjoy their days more now. A lot of them have more flexibility which allows them to travel and do things that bring them joy. Job security: Technology is a key element for every company out there so if you have the skills needed, then you’ll be a key asset for any organization. The worry of losing your job goes out the window and finding a new one becomes a much easier endeavor.  This field offers you a stability and tranquility that others don't have. It’s a very strong market with an ever-growing demand for talented professionals. Instead of you having to apply for jobs and try to contact recruiters, they’ll be the ones looking for you. Even if you’re not looking to work as a software engineer, knowing the basics of coding can give you more chances to advance your career and climb up the corporate ladder.  Higher salary: Programmers are a hot commodity, meaning they’re in demand and companies are willing to pay more for them. According to Glassdoor, the average salary for a software engineer in the United States ranges from 69K to over 100K.  A junior developer that comes out of arol.dev has an average salary of 30K in Spain (in other countries the average salary for juniors can be higher) . The progression to a higher-ranking role is generally quite quick, so it’s not too long before they’re enjoying some increased salaries. Be part of a supportive community: The world of coding is a very united space. It’s a place where you can share your knowledge and collaborate with others. This makes for great networking opportunities and it can play a big part in your career development.  There are tons of meetups, conferences, webinars, and workshops where you can meet other programmers or companies that might interest you. At arol.dev we have engaging and interactive events planned that you can check out here and join the vibrant tech community. It’s a great chance to share your knowledge and learn from others. With the constant innovation in the world of tech, there’s always something new to learn.  2. High demand for programmers The role of tech has been growing in all industries and with the rise of automation and AI, it’s not slowing down anytime soon. If you look up the most in-demand jobs in countries like Spain, Germany, the UK, and the US, software developers always come out on top. Software engineering employment is even projected to grow 25% by 2031 in the US alone, the fastest among all occupations (5% on average).  Industries are going through a digital transformation to simplify processes and make everything more efficient; meaning that tech is going to be used in every sector so you have plenty of options and since it can be done remotely, the world is your oyster. 3. Make an impact  At first glance, it might not seem like it, but coding can give you many opportunities to leave a lasting impact. Plenty of individuals want to leave their mark but feel constrained in their current jobs. As a developer, you can create something tangible and real that people will actively use and benefit from.  If you think about it, programming plays a vital role in almost everything around you: mobile apps, web platforms, all the software for electronic devices, social media, robotics, AI, and more, all of which have had a major impact on society. By learning how to code, you can play a part in meaningful advancements and actually see the impact of your work.  4. Problem-solving skills Programming is much more than writing lines of code. Through the process, you have to analyze data and find creative solutions. Beyond the numbers and letters, coding levels up your problem-solving and helps you learn to adapt as new challenges pop up. By diving into programming you learn to break down complicated problems into much simpler, more manageable parts. This makes it easier to identify the most important issues and how to deal with them. You then fine-tune your process as you learn new information and keep pushing forwards. These skills, along with critical thinking, are honed in the process of learning software engineering and are crucial for any job out there.  5. Enhances creativity Programming isn’t just about logic–it's a playground for your creativity. By automating those tedious, boring tasks, you can free up time and let out your more creative side.  Coding can bring your ideas to life. It’s a low-risk space where you can let your ideas run wild and develop different concepts. You can even make simulations of intricate ideas so they’re easier to understand.  Not to mention that you can get into the world of digital art with code and thanks to  artificial intelligence, the possibilities are endless. 6. Automation and efficiency Countless hours are wasted on repetitive tasks. This is why companies are looking towards programming to automate these processes and boost productivity. This saves precious time, which allows you to focus on the more important tasks at hand. It even reduces errors that would be more likely to happen by doing things manually.  It not only gives you an advantage in your technical skills, but other areas of life as well: You’ll be better prepared to create solutions to fix problems or improve workflows You’ll have a better understanding of different interfaces (from Excel to CRMs) Even if you’re not a developer, it will allow for better communication with your technical peers and improve collaboration and understanding How to start The good news is that you don’t need to spend years getting a university degree to start programming. Having a degree is helpful but there are some more effective alternatives.  If you don’t want to change careers and become a developer but you’d like to enhance your profile, there are many options available for you. Online resources, including tutorials, free materials, and coding apps, can provide you with plenty of knowledge to explore. You can also go to meetups and webinars or join coding communities where you learn more and connect with others like you. Just remember to practice. Programming is like any other skill, it gets better with repetition.   For those who are exploring the idea of working as a programmer but not sure you’ll like it: just try it out and see how it goes. Start experimenting with coding, exploring different programming languages, and trying out small projects. Try basic courses to discover the basics of coding like the fundamentals of JavaScript. It’s an immersive way to learn without the full commitment. It’s all about exploring and discovering more to see if you actually want to pursue programming further. Don’t hesitate to take the first step.   If you want to become a software engineer then there’s a coding program that stands out from the rest. arol.dev places a huge emphasis on quality, making it the best choice for anyone looking to start their coding career. As a Software Engineering Academy, our intensive, full-time program is designed to help you learn how to code in only three months. With a carefully curated syllabus, we make sure you’re learning the most in demand programming languages and tools. It’s a learning experience like no other. By joining arol.dev you’ll get hands-on experience and guidance from skilled mentors who will be there to support you through each step of the process. Whether you're a complete beginner or know your way around code, arol.dev is the platform that will give you all the knowledge you need to enjoy and succeed in the world of tech.  Conclusion To wrap it up, learning programming is essentially a superpower in today’s digital world. It can open up a world of possibilities for you whether you want to work in tech or not. Even just dabbling in code can advance your career and help you develop new skills.  Remember, if you want to learn how to code: start with the basics, practice, practice, practice, and don’t stop learning. Once you've got programming under your belt, the sky's the limit, and the possibilities? Well, they're practically endless.

Your Guide to Choosing the Best Coding Bootcamp: Key Questions to Ask

If you’re interested in learning to code, a software development bootcamp can be a way to gain the skills you need to jumpstart your career in tech. These programs are intensive courses that can take you from knowing nothing about coding to being a confident software engineer with more career opportunities.  But with so many options out there, some that are better quality and others that are better left alone, it can be a bit overwhelming. How do you choose the right one? The best way to find one that fits your learning style, goals, and budget is by asking the right questions. By the end of this guide, you’ll be ready to make a smart decision about your future.  What’s on the curriculum?  The curriculum is a critical factor when choosing a coding bootcamp. What coding languages and technologies are taught? It should cover languages that are in high demand. It’s also important to know if it teaches front end, back end, or is full stack. Look for curriculums that are up-to-date and relevant to current industry standards. The world of tech is constantly evolving and you want to make sure you’ll be learning about concepts that will give you a competitive edge in the job market and not outdated technologies. We have our own opinion on what a well structured curriculum looks like. But take a look for yourself, explore our curriculum and see why we're sure you'll agree How qualified and experienced are the instructors? A coding course is nothing without quality instructors. You want to be taught by people who know what they’re talking about and have the knowledge and expertise in the latest coding languages and technologies.  It’s important to research the instructors to see if they have experience working in the tech industry. If they have taught code before, even better. It’s become very common for bootcamps to use their recent graduates, who don’t have experience teaching, as their own instructors, making the quality of the education for the students much lower.  Instructors with actual experience not only can give you useful insights into the real-world application of coding skills and industry best-practices, but also help you understand what tech companies are looking for in an ideal software engineer.  These teachers won’t just teach you but they also guide you and essentially become mentors who will work to help you find success in your career. This means that it’s also crucial to know if they’re actively involved in the tech community. Do they attend or speak at conferences? Do they work on open-source projects? These types of instructors are passionate about their work and committed to staying updated with the latest industry trends, which means you’ll be more likely to receive a high-quality learning experience.  Is it full-time or part-time?  Whether you prefer a program that is full-time or part-time depends on your own individual needs such as your work, education, or family situation. However, in general, a full-time program tends to be more intensive, and overall, more effective. Since they’re more intensive this means you’ll learn programming skills in a matter of months through hands-on experience that’ll help you learn new concepts quickly. We believe that investing your time in the learning process is worth it if you want to work as a software engineer because it really does pay off. That’s why our course at arol.dev is 12 weeks long with one rest week. It’s a full-time and intensive program that makes the most of the learning curve. From Monday to Saturday, you’ll be fully immersed in the world of coding. Don’t worry, there’s no homework. Once you log off, that time is for you to disconnect, relax, do things you enjoy outside of coding, and recharge.  Are soft skills taught?  If there are no soft skills taught then you’ll miss out on some major elements of the software engineering profession.  Soft skills are character traits that enable you to interact and communicate well with others, making you an essential team player. These are non-technical skills that anyone can have. They have to do with emotional intelligence and other personal qualities. Some examples of soft skills are effective communication, leadership, being able to effectively give and receive feedback, problem solving, teamwork, and time management.   There are many bootcamps solely focused on the technical aspects of being a programmer and completely exclude teaching soft skills which are necessary to succeed in any type of job. Having top coding skills is great but if you don’t have soft skills then no one will pay attention to the technical part. Companies want a well-rounded professional: a team player, who brings quality and contributes to the overall success of the organization.  What do the alumni have to say?  Check reviews: Are they recent? How many are there? Do the reviews seem trustworthy? They should be mostly positive with similar recurring praises. If you keep seeing the same negative points being brought up, then that bootcamp is probably not worth your time. It’s also important to note how the school responds to negative reviews or if they even do at all. The most reliable way is to find and contact ex-students to ask what their experience was like, was it worth it, and if they’d recommend the program. Someone who went through the bootcamp is more likely to be completely honest with you and could give useful advice in finding the right coding course.  Is it remote or onsite? Decide which location works best for you and your learning style. Coding bootcamps can be remote or onsite. Studying remotely offers you the flexibility of learning from anywhere while doing the program onsite gives you a more immersive learning experience.  Remote: Doing it remotely is ideal for people who can’t relocate. It also is a good simulation of what it’s like to work remotely full-time which is the norm for many tech companies. While it does allow you to work comfortably from home, it’s also crucial to have strong self-discipline and time management skills. Without the structure of being onsite, it can be difficult at times to stay motivated and keep up with the course so in this case, it’s important to stay in touch with other remote students and support each other. If you decide to study remotely, make sure the bootcamp prioritizes the online learning process so you don’t miss out on things and can live the full experience.  Onsite:  Studying in person allows for face-to-face interactions with your instructors but also with your fellow peers. This can help students learn more effectively. Plus, it can lead to useful networking opportunities. The downside of being onsite is that it can be a big barrier to overcome for some students who aren’t able to make the commute or relocate.  Luckily, arol.dev gives you a choice. Just like how most companies these days work with hybrid teams: employees in the office and others working remotely, we do the same. You can choose between doing the program remotely or onsite at our campus in Barcelona. For our remote students, we ensure that they’re supported, engaged, and don’t miss out on anything. We even have a hybrid option meaning you can do the first half of the course remotely and then join us in person for the second half, or vice versa. You decide and we’ll do our part to give you a personalized learning experience. How much does it cost and does it have financial aid? Coding bootcamps can be costly, so it may be essential to consider the cost of the program and any financing options available. Some offer payment plans, scholarships, or other types of financing, such as tuition reimbursement programs, that make the course more affordable. Look for academies that are transparent about their costs. Bootcamps that are upfront about their costs and make it easy to find their prices can help you make an informed decision about whether the program is right for you.  Keep in mind that you pay for what you get. If a program has a very low cost, it may not be of the best quality. On the other hand, a course that is too expensive might not be worth the investment either. It’s important to find the balance between quality and cost to make sure that you’re getting your money’s worth. We don’t like to hide things at arol.dev. We are who we are and we’re proud of that. Meaning that our tuition information is clear and easy to find on our website. We offer different types of payment options and scholarships like the Income Share Agreement (ISA) option where you only pay to secure your spot in our course and start paying the tuition once you graduate and land a job. With these payment solutions, we work to make our program accessible to as many people as possible. What’s the student-to-instructor ratio? You want to make sure that you have access to instructors when you need help. Look for bootcamps that have a low student-to-instructor ratio. This means you'll receive more personalized attention and support during the program.  A smaller class size gives you more opportunities to receive the guidance you specifically need to succeed and it allows you to become closer with your peers and learn from each other. In general, it makes it easier to adapt the program to your learning style and lets you get to know your instructors and classmates better, creating a more close-knit and united group.  How much hands-on coding experience will you get? Without practical teaching, you won't be able to master programming concepts and skills. It’s important to understand the fundamentals of coding but you also need hands-on projects that allow you to apply what you’ve learned.  The right bootcamp will allow you to develop practical skills by letting you work on real-world projects using industry standard tools. This experience will also look great on your CV and give you some quality material for your portfolio to showcase your skills to potential employers.  How is the admission process? The existence and quality of an admission process can show you the standards of a bootcamp. This process is meant to assess the skills of students and if they’re a good match for the program.  Having a “weak” admission process, or lack thereof, can be a red flag that the bootcamp: Has a lower quality of education. Might not challenge students and help them grow. Doesn’t offer students the support and guidance they need.  Isn’t very credible, meaning employers will be less likely to hire graduates of that bootcamp. A more selective process means you’ll be studying with a group of talented and motivated students, there will be more diversity, and you’ll be more likely to have better career outcomes.   What job placement assistance do they offer? One of the primary reasons for attending a coding bootcamp is to improve your chances of landing a quality job in the tech industry. So look for a course that offers job placement assistance, such as CV reviews, job search strategies, and interview preparation. You want to join a place that will help you and cares about your future. Do they have a strong alumni network? Do they offer you networking opportunities and mentoring? The right coding academy will give you the chance to work on real projects to build your professional experience and provide all the resources and support you need so you can find the job you want.  What happens once you graduate? Once you’re done with the program, how will the bootcamp support you? Or will they even stay involved or follow up with you at all?   A quality bootcamp will work to stay in touch with you after you graduate in quite a few ways but a key element is having a strong alumni community. This group of graduates is important because it's a great source of networking, it’s a place to share knowledge and help others, and it gives everyone involved a sense of belonging. Having a strong alumni community helps improve the reputation of a bootcamp, making it more credible.  After you graduate, you should also receive continued guidance from mentors and help with your job search. At arol.dev, we keep in close contact with alumni through regular check-ins, even after they’ve found jobs. We offer lifelong career guidance and support because our students aren’t clients, they’re members of our community. They can count on us if they want to improve, pursue another position, or work at a different company. We also offer our alumni the opportunity to work on real projects, thanks to our partnership with companies like Homeless Entrepreneur, which works to end homelessness by empowering people out of poverty. Not only are our graduates creating a great product and gaining valuable experience, but they are also able to make a real impact and help improve people’s lives.  Conclusion Don’t rush this process. Take your time to properly research bootcamps and academies, ask questions, talk to the people behind them and graduates, and find one that fits your needs. This is an investment in your future success and you want to make sure that you are making the right decision for yourself. If you’re looking for a high-quality, challenging program then arol.dev is the way to go. We don’t identify ourselves as a coding bootcamp but rather as a software engineering academy. We’re breaking the mold that bootcamps use. At our program we work individually with each student to increase their skills so they can progress their career in less time. It doesn’t matter if they have experience in coding or not; if they have the will to work, we’ll find the way to help them become software engineers. Book a call with one of our instructors or come join us online (or in-person) at one of our events here.