Front-end vs. Back-end: What is the difference

Terms like front-end and back-end development may be confusing to someone who is new to the world of coding and software engineering. Let’s clear up some of the ambiguity around some of these technical phrases. We’ll explain the differences between the front-end and back-end.

Today, we’re addressing the following issues and demystifying the distinctions between development styles:

  • What is front-end development? 
  • What is back-end development? 
  • What differences exist between front-end and back-end development

Front-end development

Front-end developers create with the user in mind. Front-end development is a type of computer programming that focuses on the coding and building of website/app parts and functionality that will be visible to the user. It is focused on ensuring that the aesthetic parts of a mobile application are functioning. 

Back-end functionality in mobile apps can sometimes be stored locally rather than on the server. These programs are generally offline, which means they may be downloaded and used without an internet connection. In this case, mobile developers would be responsible for both the front-end and the back-end.

Consider the front-end to be the “client-side” of an application. Assume you’re a front-end developer. This implies that your job is to code and bring the visual parts of a mobile app to life. You’d be more concerned with what a person sees when they visit a website or utilize an app. You’d also want to make sure the user interface (UI) is simple to use and runs properly, and that the user experience (UX) is desirable.

These developers bring the visual concepts created by UX and UI designers to life, ensuring that the website or an app performs properly for the user.

Things front-end developers do:

  • Improving the user experience.
  • Creating mobile applications.
  • Bringing concepts to life with Android studio and Kotlin (for android apps), Xcode and Swift (for iOS apps), HTML, JavaScript, and CSS (for web).
  • Creating and updating the user interface.
  • Using design on mobile apps or websites.
  • Developing technologies to improve site interaction across browsers.
  • Managing the workflow of the software.
  • Following excellent SEO tactics.
  • Bug fixes and usability testing

Back-end development

Back-end development deals with the aspect of the website that visitors do not see. It is what allows a website to be interactive. The back-end of a website is sometimes known as the “server side.” 

Assume you own and operate a social networking platform. You’ll need a convenient location to save all of your users’ information. A database is a type of storage center, and some popular examples are Oracle, SQL Server, and MySQL. A database is managed by a server, which is effectively a remote computer. A back-end developer will assist in the management of this database and the site information stored on it. This guarantees that your social networking website’s front-end features continue to function properly when visitors view posted material and other user profiles.

​​While visitors do not directly contact the back-end of a website, they will interact with things that these developers are working on via a front-end application. Back-end development is concerned with storing and organizing data while also ensuring that the front-end works properly.

Things front-end developers do:

  • Database development, integration, and management
  • Frameworks for developing server-side software on the back-end
  • Technologies used in web servers
  • Integration of Cloud Computing
  • Server-side programming languages
  • System software
  • Development, deployment, and maintenance of content management systems
  • API interoperability
  • Cyber security.
  • Reporting entails the creation of analytics and data.
  • Technologies for backing up and restoring website files and databases

Front and back-end developers use different technologies

A programming language will be used while you code. These languages, like human languages, enable programmers to communicate with their computers using a set of symbols (referred to as code). Simply explained, it’s the same as giving your computer instructions. Front-end developers use programming languages such as XML, Kotlin, and Swift for mobile development, and HTML, CSS, and JavaScript for web development.

  • XML is an acronym for Extensible Markup Language.XML tags define data and are used to store and organize information. XML is utilized in Android to implement UI-related data, and it is a lightweight markup language that does not make the layout heavy.
  • Kotlin is a trendy, contemporary programming language. Kotlin may be used for server-side, client-side web, and Android programming.
  • Swift is an extremely powerful and user-friendly programming language for iOS, iPadOS, macOS, tvOS, and watchOS. Swift code is interactive and enjoyable to write, and the syntax is compact yet expressive.
  • HTML is an acronym for Hyper Text Markup Language. It is the most often used markup language for constructing web pages.
  • CSS is an acronym for Cascading Style Sheets. CSS is used to provide style and flare to a webpage, whereas HTML is used to establish structure. It specifies the colors, fonts, and style of other site content.
  • JavaScript is a programming language that may be used to make a website dynamic and entertaining. For example, you might use it to host a game on your website.

Front-end developers use their own frameworks and libraries. A front-end developer could deal with the following frameworks and libraries:

  • Native Android
  • Native iOS
  • Non-Native mobile frameworks (Swiftic, Native Scripts, React Native, Xamarin, Flutter)
  • AngularJS
  • React.js
  • jQuery
  • Sass

PHP, C++, Java, Ruby, Python, JavaScript, and Node.js are some of the languages used by back-end developers. Here’s some more information about a handful of these languages:

  • PHP is a scripting language used on the server.
  • Java is a well-known platform and computer language.
  • Python is a multi-purpose programming language. It differs from some of the others described here in that it may be used for other types of software development as well as web development.

Back-end frameworks include the following:

  • Express
  • Django
  • Rails
  • Laravel
  • Spring


Front-end development is a branch of programming that focuses on the visual parts of a website or app with which a user would interact (the client side). Meanwhile, back-end development is concerned with the aspect of a website and app that visitors do not see (the server side). They collaborate to develop dynamic websites and apps that allow users to make purchases, use contact forms, and engage in any other interactive activities while perusing a site. Netflix, PayPal, Facebook, Youtube, etc. are all instances of dynamic websites/apps.


How to become a self-taught programmer

A lot of people these days consider a career in tech. A good salary, substantial job opportunities, a relatively low barrier to entry, and the possibility of remote work attract many people.

I know it looks scary to get into coding if you don’t have any knowledge and experience, but in reality, you need 3 to 6 months to become a “job-ready” programmer. You need almost no investment, except for your time and a few tools – a computer and a smartphone.

The first problem is deciding what career path to take. Should you get into web, mobile, frontend, backend, game development, machine learning, or blockchain? It’s hard to choose when you don’t have any knowledge. It is precisely for this reason that I wrote this article, to help you find your way and facilitate your path to success.

Where to start?

First, you should decide what technology interests you the most. It can be a couple of different technologies, and in the end, you can choose only one. If you don’t know what technology interests you, you can experiment. For example, you can try something out for a week or two and see if it looks interesting to you.

When I wanted to get into coding my interests were around the web and mobile development because I had ideas for websites and mobile apps. These ideas are going to keep you learning, they are going to give you motivation and purpose, and they are going to be the “finish line” (of your first race). Without this, you may find yourself wandering without a goal, and you can lose motivation quickly.

The second most important thing is to check for the market. You need to check if there are open job positions for the technology you want to learn. If you want to learn web or mobile development, you won’t have this problem, but if you are interested in some other technologies situation may be different.

The third thing is the size of the salary. Programmer salaries are above average, but some technologies are better paid than others.

In my situation, I have chosen mobile development (android) over web development because of three reasons:

  1. More jobs

    There are more jobs for android developers since the market is less saturated with mobile developers than web developers. You can still get a job as a web developer without a problem, but mobile developers are more in demand.

  2. More money

    Because of this scarcity of mobile developers, the salary size is much larger. Mobile developer salary is one of the bigger ones on the market, with around 50%-60% higher on average compared to web developer salary in the US.

  3. You can make a finished product

    As a mobile developer, you can make a fully functional app by yourself, front and backend, meaning that you can make a fully finished product and sell it on the market. With frontend web development you don’t have a finished product. You will either need to learn the backend and become a full stack developer, which can take a lot of time, or find someone to do the backend.

Using similar logic, you can find what suits you best.

The learning process

When you have found your desired technology, it is time to start with the learning process, which is the hardest part, because you will need around six months of learning to become a job-ready developer, and while learning, you will get no reward (pay). That‘s why many people are struggling with the motivation to learn.

Remember this: “Learning is not attained by chance, it must be sought for with ardor and attended to with diligence.”

You can only become a good developer if you learn consistently for 2-4 hours daily. It is ok to take a day or two of rest sometimes, but try to code every day if you want to get a job ASAP.

I made these four steps to follow in the learning phase that will help you become a better self-taught programmer:

  1. Start with the basics

    Learn the basics of chosen programming language, the programming paradigm used for your desired technology, design patterns, and good programming practices.

    The worst thing you can do is start working on projects without understanding these rules and principles by following a tutorial on the internet. In this case, you will end up with spaghetti code, unable to understand your code.

    In my case, for android development, I started with Java and OOP (Object Oriented Programming). I didn’t begin with android development right away. Instead, I focused on the basics of programming for the first two months.

  2. Acquire tech-specific knowledge

    When you understand the basics of a programming language and a programming paradigm, you can start learning more about the technology/niche in which you are interested.

    In this phase, I started with the basics of android development.

  3. Don’t overdo it.

    Don’t start learning for eight hours every day because you will experience burnout. Programmer burnout is emotional and mental tiredness in doing computer programming caused due to excess programming/learning.

    Do not study for more than a maximum of 4 hours a day. Even that is a lot for some people. Consistency is the key. Learn as much as you can and stay healthy, psychologically and physically.

  4. Find a mentor.

    Finding a good mentor can make learning much easier and more enjoyable. A good mentor will give you study guidelines so you don’t wander off while learning, allowing you to focus on the crucial things.

Preparing for job application

Before applying for a job you will need to be well prepared. You need to be different and noticeable to have the best chances of getting hired. These four things will be crucial:

  1. Build real-world projects that people can use.

    Many tutorials teach you how to make many useless projects instead of building a couple of useful ones. For example, if you are into web development, try to make a fully functional online store that people can potentially use.

    Tutorials from which I learned taught about making a tic-tac-toe game, weather app, quiz game, etc. These projects are ok for learning the basics but before applying for a job position, build an app that people can download on Google Play Store and use in real life. It’s better to have one app that implements a couple of libraries and has a clean architecture that is useful than to have many simple apps that are useless.

    I applied for a job with one app on the Google Play Store with MVVM architecture, SQLite database with Room persistence library, Firebase for user log-in authentication, and four basic operations of persistent storage – create, read, update, and delete (CRUD). Apart from that, I had two basic apps that showed I could use Google Maps API and a weather app that showed I could work with JSON.

  2. Make a CV that stands out.

    If your CV sucks, even though you are an “awesome” programmer, you will not get almost any interviews.

    Find tips on how to write a good CV that stands out. I suggest you also check out CV-making platforms like

  3. Make a personal portfolio website.

    I recommend checking out GitHub Pages. Here you can host a website for free.

  4. Optimize LinkedIn profile

    And last but not least, make an optimized LinkedIn profile. You can find tips on how to make a good LinkedIn profile online.

    This is important since you will also apply for jobs on this platform. Also, recruiters can find you here and contact you even before you apply for a job, and a professional-looking profile will show that you are serious and active.

Applying for a job

When you are finally ready, you can start applying. You will probably still think you are not good enough, but if you managed to finish all previous tasks, you are ready. You are applying for a junior developer position without work experience, no one is expecting you to know everything. You must have a solid foundational understanding of programming in general and your specific technology. The learning process will begin when you start working on large-scale projects in a team at your first job.

You will probably feel anxiety when you get your first interview. But trust me, there is nothing to be afraid of. Try to learn from your interviews, and don’t give up until you get a job, even if it takes a lot of failed interviews.

Here are some tips to help you get a job:

1. Apply to all job postings (for your tech niche).

If there are 50, 100, 200, or even more job postings, apply to all of them, and remember to make a list of companies you applied to. Many companies will not respond to your application at all, and some will respond to you after several days, weeks, or months.

I applied to around 50 different job postings and got around 15 interviews.

2. Again, apply to all job postings.

Even if you are a junior developer, you should apply to job postings for mid and senior-level developers.

Some companies responded to my application after some time saying that they have an open junior developer position.

3. Be communicative and confident, and express your ideas during interviews.

Feeling confident – or pretending that you feel confident – is necessary to reach for opportunities. It’s a cliché, but opportunities are rarely offered; they’re seized. – Sheryl Sandberg, Chief Operating Officer of Facebook

You may think that interviewers will mainly value your coding skills. But they are looking for a person that is ready to grow and learn, can work in a team, and can contribute with their ideas.

4. Failure is not an option

Don’t give up if the first couple of interviews doesn’t go well. Use failure to identify where you could use some improvement. Do whatever it takes to get your first job. Improvise. Adapt. Overcome.

Reaching your goal or just starting an adventure.

You might think you’ve reached your goal when you get your first job. But the truth is that getting a job is just your first step.

Try to enjoy this neverending growing process and use your newly acquired skills to improve your life and make the world a better place for everyone.

“Also, don’t forget that some of the most successful people in the world are self-taught programmers. Steve Wozniak, the founder of Apple, is a self-taught programmer. So is Margaret Hamilton, who received the Presidential Medal of Freedom for her work on NASA’s Apollo Moon missions; David Karp, founder of Tumblr; Jack Dorsey, founder of Twitter; and Kevin Systrom, founder of Instagram.”
― Cory Althoff, The Self-Taught Programmer: The Definitive Guide to Programming Professionally


Stateful vs. stateless widget

Welcome to the widget class

Creating flutter UI can be demanding. But you’re in luck, you have your greatest helper, the Widget class, here to help you!

In the world of flutter UI, everything is a widget. Widget is the primary building block of the Flutter UI. Widget is an immutable description of part of a user interface, which means all their fields must be final. By themselves, widgets have no mutable state.

What are stateless and stateful widgets?

A stateful widget is a widget that has a mutable state associated with it. Associating a mutable state to a widget like this gives the app interactivity and responsiveness. Without stateful widgets, we wouldn’t be able to do something like this in the images below:

Here, we can change the border of the card and replace the text in it with a nice checkmark, pointing out that the card is selected.

On the one hand, stateless widgets don’t have a state associated with them. This means that when a stateless widget is built, it cannot be changed unless we create a whole new instance of that widget. On the other hand, stateful widgets can be rebuilt any number of times, just call setState, and in the body of setState put the code that affects the UI.

Stateless widgets when created look like this:

<code class="language-dart">
 class StatelessExample extends StatelessWidget {
                Widget build(BuildContext context) {
                               return Text("This is a stateless widget");

… While stateful widgets look like this:

<code class="language-dart">
 class StatefulExample extends StatefulWidget {
                State createState() => _StatefulExampleState();
 class _StatefulExampleState extends State&#60;StatefulExample&#62; {
                Widget build(BuildContext context) {
                               return Text("This is a stateful widget");

For example, if we wanted to implement the Selected functionality shown in the images above, we would need to have a variable in our stateful widget, _isSelected.

All that is left is for us to call setState in the onPressed method of the widget surrounding the card body (in this example, the surrounding widget is InkWell, but it can be done with GestureDetector):

<code class="language-dart">
 onPressed: () {
                               _isSelected= true;           

The other option is to do something in the lines of this:

<code class="language-dart">
 onPressed: () {
                _isSelected = true;          

I have to mention that the first way is better because it tells you exactly what’s going on and what you are changing when calling the rebuild method, setState. With that in mind, it should be used only to wrap the actual changes to the state, not any computation that might be associated with the change.

Flutter UI hierarchy and setState

Flutter’s UI hierarchy is based on a widget tree. Every time we create a new instance of a widget, it is added to the widget tree as a child of the widget from which it was instantiated. Because of this, calling setState can sometimes be really costly. When we call setState, it does call the build method of the widget, but it rebuilds the whole subtree beneath that widget. In other words, it calls the build method of all of its children, too. If the subtree beneath it is deep, that setState can end up being costly. That is why it’s good practice to always keep the whole widget tree relatively shallow, so you don’t have to worry about costly rebuilds.

To sum things up…

… If the main idea you got out of this article is that stateless widgets are used to create UI that does not depend on the input of the user and that stateful widgets are used for creating dynamic UI, you can give yourself a pat on the back! You did well and made the first step to understanding how flutter works!


How to effectively work from home

11+ tips you can easily implement in day to day routine

If you work from home, you probably often feel like your workday is monotonous. Sometimes you might lack the will and motivation, so you find it difficult to sit and work, or you feel like there are too many distractions around. In Crystal Pigeon, we have a remote work culture, so we feel you. The good thing is we do know stuff about the work-from-home lifestyle, so go ahead and see what are 11 of our golden work-from-home productivity advice.

Obviously, each individual will encounter different obstacles, given that we all have different lifestyles and do different types of work. However, there are some universal rules for everyone who does not work in the office. Whether you were always working from home, as a freelancer or in a team, or this new pandemic situation got you stuck in an unfamiliar situation, here you can find some practical advice you can implement in your day to day routine.

1. Set-up routine and schedule that suits your needs

First of all, you should take the time to realize and determine the daily rhythm and schedule that suits you best. You can read all the advice and researches on productivity in the world, but if the thought of waking up at 5.30 gives you nightmares, you shouldn’t even consider considering it. When you realize what you want your day to look like, you should set realistic expectations for daily accomplishments and do your best to stick to them.

Whatever you decide on, we recommend having an organized structure of the day. Maintaining a regular schedule provides day structure, but also helps you stay motivated. You don’t have to be strict – changing the time and the place from time to time could boost your productivity, but we recommend that your daily routine has some established elements. We work according to the established structure, from 9 am to 3 pm, because our team members unanimously decided so. If this seems monotonous, you could change your working hours by the days of the week, or the weeks in a month. To avoid monotony, it is good to determine the end of working hours and then change your location – go out and indulge yourself in some physical activity.

2. How to start aka. use coffee as a moral support

Think about what is the thing you can implement in your daily routine that can physically lead you to your workspace. Maybe it is coming back from a workout session, or dressing up in something you would normally go to work or a meeting? For the most disciplined ones, it can be just a clock indicating the time defined for starting with the work. If you don’t need to start in the morning, you can be creative about your routine… maybe it would suit you to firstly recharge your batteries at some social gathering, with family, or by taking a walk in nature?

Routine consists of rituals, so you should use rituals to make you sit and work. Actually, this is a pretty simple thing to do. For example, one of my rituals is coffee making. After I’m done with my morning routine (which ends with me having breakfast) I make myself my favorite coffee, take it to my desk and open my computer. My coffee is my moral support for begging work.

There is one trick regarding starting to work. It’s about stopping in the middle of something at the end of the working day. Allegedly this could make it easier to jump into the task the next day. We heard that Ernest Hemingway would try to leave in the middle of a paragraph at the end of the day so it would be easier for him to start writing the next day. It is a psychological thing – it is easier to start off when you know where you are going.

3. Bare desk = bright work?

There might be some saying stating that clear space means a clean mind, and we go by it. Clean your room, your desk, and make sure you have everything you need – on your desk, in your home office, and your home. 

Your working space should be comfy and you should enjoy being there. Except for tidiness, it should meet other requirements. Equip yourself with good desktop, mouse, printer, software, or whatever you need to do your job properly. If you need silence, make sure you have it. Make sure you are comfortable, especially make sure your chair is good for your posture. No one can be productive enough while having back pain. Think ahead of what are you going to eat, so that being hungry can’t make you stop in the middle of the work.

Decluttering can mentally prepare us for work activities so you could also use it as one of the rituals (as we wrote in the last paragraph). There is one thing to bear in mind – clean your space, but be careful you don’t get too involved in it. Tiding up could sometimes be used as a tool for procrastination.

4. Draw a line between private and work-related stuff

The line between business and private is very easily crossed while working from home. If you do your best not to mesh these two up, work will be much more productive. One way to do this is to find a way to physically separate these two. If you have the opportunity, make a separate place to work in your home, even if it is only a corner you’ll use exclusively for work.

Some of us who work remotely can function better in a public place. For some, this means they can focus better if they do not have the freedom to go to sit on the couch or pick up the phone. For such people, a good office could be public libraries, parks, coffee shops, restaurants, and similar places.

If you don’t live alone, let your family or roommates know that you are not available to communicate and do housework during working hours, except, perhaps, during breaks.

It is very important to define working hours, otherwise, there will always be something waiting for you to finish. We choose to work 6 hours a day, as it is known that shorter working hours boost productivity levels.

5. Your office is in your house, but your life is not your work

Just because your office happens to be in the same place you live, doesn’t mean that your day should be all about your work. We face this challenge all the time – how not to work when our laptop is available 24/7 and we always have an option to finish some stuff we’d left behind. We noticed that it was a problem for the other members of the team as well, so we defined working hours more clearly.

One trick that might help when we remember that we needed to do something or some creative solution pops into our minds during our free time. Instead of sitting at the computer and doing it, just write it down in a reminder for tomorrow. It takes 5 minutes, it makes you feel more relaxed and prepared for the next day. The best way to do this might be making sticky notes on the desktop, so reminders appear tomorrow as soon as you turn on the laptop.When you work 8 hours a day or more, it often turns into unproductive work. It is natural to simply lose the will to work at some point. So be careful not to overwork yourself. There is one thing that can help you stop working – schedule free-time activities immediately after work. That’s how you’ll know that you have to finish, as other activities are waiting. These days we enjoy riding bikes right after work. It combines three beautiful things – being in nature, physical activity, and socializing.

6. Respect your breaks as you respect your working-hours

This is pretty similar to the previous one, and we know you hear this annoyingly often, but here’s once again: take regular breaks. Newest researches showed that the best work-pause intervals are 52 minutes of work followed by a 17-minute break. Breaks don’t need to have any particular form – you can do whatever you enjoy doing, whether it is stretching, going for a walk, snacking, reading news, or watching favorite series. The only important thing is for your brain to relax.If it’s hard for you not to be around the computer during your break, you can use an app to keep you locked out of the computer for some time. Check out TimeOut for Mac or Smart Break for Windows. Just don’t do your job while you are on a break!

7. Make that extra effort not to feel lonely

For some, especially extroverts, sitting alone in the house could be a huge disadvantage. Lack of interpersonal relationships is inevitable, so you should put in an extra effort to see and talk to other people. Humans are social beings and it is normal to seek human contact.

We as a team are connected through Discord, the platform for messaging and video calls. We do our best to maintain contacts as much as possible. Our team leaders try to encourage each team member to communicate with others as much as possible, both through work-related topics and others.

Our 7th golden advice is to set up some kind of schedule for coffees or at least some online meetings with your colleagues, clients, or work peers. As long as your relationship with your superiors is concerned, you could set up a routine of making some kind of reports about the tasks you’ve accomplished that day. This could also be good for your productivity, motivation, and feeling of accomplishment.

For example, we found that music is a really good remedy for feelings of loneliness and monotony. As we are connected through Discord, we practice listening to music on Spotify together. It is a great opportunity to have fun and connect with your coworkers.

8. Multitasking is not an option

Sorry for ruining this for you, but please, just focus on one thing at a time. We understand it is tempting to do more things at once, but it is proven that multitasking significantly reduces productivity. Define time for small and big tasks and do them separately. Don’t try to code, design, or write while answering e-mails, phone calls, or coworkers’ questions. Don’t try to cook or feed your dog while trying to find the best creative solution for the current project. Try to avoid online distractions once you sit down to work. Turn the silent mode on, and put your phone away. 

One trick that might help you is to make a to-do list, but by mixing the schedule of big and small tasks. Set two small ones, check them off the list and you’ll be more motivated to do the third – the big one. Let that big one be followed by two small ones. This works well all the time.

9. Celebrate your wins

When you finish your work for the day, set aside 15 minutes to appreciate the things you’ve done. Check off the items on the daily to-do list. Think of what you did, instead of what you didn’t get to accomplish. You can also take notes about your accomplishments, it could help in keeping you motivated. And don’t forget to treat yourself.

10. Work on yourself

Working from home can often be much more demanding than working in an office. It requires certain qualities that are not so necessary when a person works in an office.

First of all, a person who works remotely must possess working habits. Work-in-pajamas lifestyle can make you unproductive if you are not self-disciplined and responsible. That being said, developing qualities such as self-discipline can help a lot.

Another thing you could work on is organizational skills. The organization is a productivity booster! Discipline doesn’t make much sense without organization and vice versa. When a person organizes his working hours, then it’s easier to know when you should focus on work, and when is the time to check up on social media, e-mail, or text a friend.

11. Stop thinking and get to work

Did you hear about Mel Robbins and her 5-second rule? You have loads of literature and videos on this online. In short, The 5 Second Rule is simple:

When you feel yourself hesitate before doing something that you know you should do,
count 5-4-3-2-1-GO and move towards action.

This is how you can prevent your mind from working against you. You can start before your mind starts to make all sorts of thoughts and excuses.

So what should you do? Just start counting backward to yourself: 5-4-3-2-1. And just start.

Is everyone in their positions? OK then, ready, set, go!

Things to remember:

  • Meet Routine and Schedule, they are your friends
  • The workplace is for work, and work only
  • Every work, no matter how big or small, should be appreciated and deserves to be rewarded. So treat yourself!

Things to avoid:

  • Burnout – if you were wondering if you should, take that break!
  • Isolation and disconnection
  • Multitasking

Crystal Pigeon originals:

  • Get yourself a pet to cheer you up
  • Make music your ally
  • Bike it away!
  • Find inspiration in nature


How we built a multiplayer game in 12 days

As a mobile apps development agency, we usually work with startups. Through various projects, we experienced what it’s like to start from the initial idea and get to the point where we have happy customers that use our product.

During the pandemic, we got an opportunity to develop an Easter mobile application, a game in which people could compete in duels between their Easter eggs. We liked the idea, but the deadline was a thing that really got us worried. However, we decided to do our best and take on this challenge.

Being one of the mobile team leaders I will try to guide you throughout the phases we went through and decisions we had to make while developing our easter game Egg Smash. Small projects are always good for learning as we can easily see the whole picture set in a short period. We learned a lot from this project, both as a team as well as individuals, so I hope you will learn something from it, too.

1. Use your time wisely

During the life cycle of such a project, a lot of things can come your way. The biggest obstacle is, of course, the time. If you don’t use it effectively, you can lose the interest of end customers, and in the end, money. 

In order to use the time you have wisely you have to make a good plan. When making the plan, try to split the time out on the main phases. Phases of our work process were these:

  1. Deciding to start the project 
  2. Discussing with stakeholders
  3. Defining specification
  4. Defining design 
  5. Development
  6. Fixing bugs
  7. Preparing marketing strategy
  8. Releasing the app and connecting with customers
  9. Celebrating
  10. Learning from users responses

2. Get your goals right!

Why is this step important? Well-defined, achievable goals will lead you through all your decisions, they’ll define your work roadmap. Having in mind why you started will affect and make all of the decision making easier, so take the time to write those goals down. If you follow simple rules of the SMART criteria, you’ll get rid of the fear of missing something out. There is a lot of sources you can find on defining your criteria and this is how we did it:

Create a game that will allow users to decorate easter eggs and use them to compete in fights with their friends and family who are not physically present. And create it until Easter.

Specific – We were specific about what is the must;

Measurable – We had responses from media and customers; 

Achievable – We had a well-established team, experienced in mobile development and marketing;

Relevant – It was relevant to us, as it synced with our company goals, as we like to experiment and learn from being invested in such interesting projects. It was also relevant for our community, as it made the holiday more enjoyable during the pandemic.

Time-bound – We were on a pretty strict schedule, but we had it well planned and under control.

3. Put the idea in writing

I’m sure you keep a lot of ideas in your head and I know that sharing those ideas in a way that others understand you can sometimes be challenging. Writing down the specifications can be energy-consuming for everyone involved.

To make things easier we defined three main domains of the app. Every part needed to fulfill our main goal.


Decorating an egg


You should be aware that you are not able to know everything ahead, so keep it simple, and always have the goal in mind. You will polish everything in the design process.

4. Discuss idea productively

After you define your main idea, you need to discuss how it is going to work with as many stakeholders as possible. In my opinion, these are the most important parties you should include:

  • Initial idea owner
  • Potential customer 
  • Designer
  • Developers
  • Marketing team

The discussion needs to be productive and aligned with the goal you defined at the beginning. This can be tricky, considering that each person has their own, specific ideas and wishes. And yes, I know we have to be agile, so this is the point where you want to reconsider previous points in your writings. Teamed up with the designer, you’ll become one more step closer to your final product.

5. Find designer in yourself 

At the beginning the designer creates a basic design system, and a color palette. What you need to do is to make as many iterations with the designer to get everything done, and it is best to do it through real-time collaboration.

The software we used was Figma. Figma helped us get involved in the design process while we were fully remote. You have something on your mind but don’t know how to say it? Draw a simple wireframe with this simple tool and let the designer do the rest!. Your goal here is to define structure and get a bigger picture of the application, without spending too much time on the details.

After we made the prototype, we came back again with all stakeholders. In this process, we determined what was most important for each of them.

  • For the marketing team, it was important to match visuals for social networks and other media, and that URL of the game can be easily shared
  • For potential customer 
    • That Egg fights look realistic, which means we had to have more animations and details included
    • That Eggs look entertaining, which means we need to include various options for egg decoration

6. Find balance and beat the perfectionism

As a team leader, I had to determine how much effort we needed to implement in improving the app and still be able to make compromises that are important for the customer and, of course, to keep up with the tight schedule.

When we made the main design changes, we became sure there will not be any major changes further. As the app progressed, our priority became making the development as efficient as possible and getting the marketing team aligned with new visuals.

7. Sprint like a Bolt

As we had what was sure, the process of development could go parallelly with the minor design changes and marketing preparations. We defined two mini sprints – the first one was to create an MVP app starting on April the 3rd, while the second one was bound to start on April 9th. The next goal was to test, fix bugs, implement monetization, and extra features that will enhance UX.

We used SCRUM methodology (you can find a lot of resources on SCRUM methodology online), and these are it’s key points that helped us work effectively while being remote:

  • We always had daily meetings at the same time. That helped us sync iOS and Android platforms, share knowledge, and adapt to changes.
  • Using VivifyScrum we had everything we needed to set the visual representation of our progress.

Besides these, our big advantage is that we work together on different projects at the same time. Beyond the fact that we work together, we also studied together, so we build our team through different situations.

8. Just do it

When you get to the point to release your app, Google, and especially Apple can have specific rules in the review process. This time Google put us in a tough position. It announced that, due to Covid-19, the review process takes 7 days. We were left with only 3 days to develop the app that will fulfill the initial goal, and the hard decision was in front of us. Our thought was that if we are going to miss the release date on April 12th, there is no point to even try and release it. As this project was too exciting to give up that easily, we came up with the idea to make the simplest version of the app, to wait for the release, and to hope that update will be much faster. So that’s what we did. Fortunately, the app got released in 5 days and every succeeding update was live in the few hours over the night.

9. Deal with important mistakes

While programmers were working on developing the app, the marketing team did an excellent job. When the app was ready, the marketing plan was already on the table. Reactions started coming our way and most of them were the positive ones. There will always be some bugs, but bear in mind that you must resist fixing everything immediately. Only the critical ones, ones that are breaking the goal set at the beginning are something your team has to fix as soon as possible. That is what affects most of the users, so it is the only thing that must be addressed urgently. When the app was released we acknowledged we made a mistake while making improvements. It turned out we created a more critical bug that affected first users. We had to respond to the user so they could write proper feedback or make some workaround. Luckily it was fixed before Easter and everyone got their chance to be at the top of the leaderboard with the hardest egg!

10. Smash the eggs!

We, as the Crystal Pigeon team, believe that a job well done must be appreciated. After a finished work, don’t forget to take a deep breath, look back at the work process, acknowledge what you’ve done well and what mistakes were made, congratulate your team on a success and celebrate. And never forget to thank everyone who supported you. 

I will use this opportunity to thank the watfoi organization and the whole design and development team of 7 people who worked as one and made this happen!