How I Decided to Create a New Projects Management App

I have developed numerous applications in the past few years, ranging from iOS to Mac to Web applications. Some of them had the potential to become bigger than expected, but most ended up being abandoned. This is because software has an expiration date and needs continuous updates to keep up with evolving operating systems. In recent years, I have shifted my focus towards training developers to create web applications, which has brought me immense satisfaction....

How to Install Python 3 on macOS

If you’re using macOS, you may have noticed that it comes with an outdated version of Python 2 installed by default. Fortunately, you can easily install the latest version of Python 3 on your Mac. In this blog post, we’ll walk you through the process step by step. By installing Xcode, the Apple Development IDE, you will have Python 3 installed at /usr/bin/python3. You can check the version of Python 3 installed by running python3 in your terminal....

How to Learn Multiple Programming Languages

When I announced my new SwiftUI series in an email newsletter, I received an interesting question: “How do you manage to learn several languages?” It’s a valid question, considering I have learned and used a range of programming languages like Pascal, C, Java, PHP, JavaScript, Objective-C, Go, Python, and Swift. But not all languages are created equal. While some languages may have unique quirks or be more low-level, the underlying fundamentals of variables, functions, loops, and objects remain consistent across most languages....

Introduction to Docker: Revolutionizing Application Deployment and Distribution

Docker has emerged as a game-changing tool for deploying and distributing applications. It has gained significant popularity among developers and possessing Docker skills can greatly enhance your professional profile. With Docker, you can create containers that encapsulate entire applications, allowing for easy replication. Replication is a key advantage, as it enables the creation of isolated environments that can run on various computers and servers, ensuring consistent software versions and preventing configuration issues....

Making the Transition from Tutorials to Your Own Project

A common question I received on Twitter recently was how to go from tutorials to actually working on projects. This is an interesting topic because I firmly believe that true mastery of a technology comes from building something with it, rather than just reading or watching tutorials. However, tutorials still play an essential role in the learning process. Nobody is born knowing how to use a particular technology. We need to be taught, dig into documentation, or even understand how things are supposed to work by working with open source software....

The Art of Estimating Programming Time: A Guide for Software Developers

Estimating the time required to build software projects is often a challenging task. Over the past decade, I have been asked this question countless times, and I must admit that giving an accurate estimation is an elusive feat. Clients and stakeholders frequently inquire about the timeline for implementing a particular feature or completing a project. But the reality is, estimating software development time is akin to making a bet or taking a leap of faith....

The Developer’s Dilemma: Choosing Between Existing Platforms and Building Your Own

In my quest to find the ideal platform to host my courses, I have encountered a significant issue. Currently, I rely on a static site that integrates with various no-code tools and custom integrations to handle payments and course signups. This setup, often referred to as JAMstack or serverless, has worked well for me. However, as the number of courses I offer has increased, I am now considering the overall infrastructure I use and whether a centralized platform would be a better fit....

The Full-Stack Independent Developer: Mastering All Aspects of Software Development

When we think of software developers, we often imagine individuals solely dedicated to their craft, working on world-changing apps, fixing bugs, and developing cutting-edge algorithms. While this may be true for many developers in traditional careers, some of us have chosen a different path. As an independent software developer, I’ve experienced a completely different career trajectory. Unlike my counterparts working for big companies or startups, I have always been self-employed. As a full-stack developer, I specialize in both frontend and backend development, but being full-stack means so much more than that....

What is Imposter Syndrome: Understanding and Overcoming It

Imposter syndrome is a common phenomenon that many individuals experience at some point in their lives. It manifests as a feeling of inadequacy or the belief that one is not as competent or talented as others perceive them to be. This syndrome can have a significant impact on self-confidence and personal growth, especially in professional fields such as software development. Here are a few scenarios that often trigger imposter syndrome:...