As a software engineer preparing for entering the job market and/or building his portfolio, one of the most crucial tasks is to come up with ideas to execute and turn into solutions.
If you surf the internet you will find a lot of blogs that have lists of ideas and the top 5, 10, 20, 50 portfolio project ideas for you to build…
But from blog to blog, those ideas become repetitive, how many different calculator apps or todo list apps do we need? or how many new social media platform should we build?
For someone like me who tries to find more innovative ideas or more real problems to solve finding the right idea becomes a little harder.
in this blog, I am going to explain how to come up with an idea and -having an idea- how to proceed with it, mature it into execution.
It might seem hard to find an innovative idea in a world where everything seems to exist already… how to find what to create when everything has been created already?
Keep your pool of ideas full
Read, read, and read…
This is especially important to stay connected and informed, keeping an eye out there for problems facing people, facing businesses. Other solutions that may be causing a different sort of problems that need to be solved. or even incomplete ideas that can be made better.
Whether you surf the internet, read blogs, or technology magazines you find your source of information.
Find your passion
I noticed a lot of developers, especially ones who come from different backgrounds, different former careers, come with problems they faced in their previous posts and they aim to solve it…
Build your custom solutions for your own very specific problems.
Got an idea!!? great. Where to start!!
lookout for what exists out there… As tempting, it is to re-invent the wheel but you don’t want to do it! and even if you do actually want to re-invent the wheel you would want to know where does your wheel roll among all the other wheels.
Etude de l’existant — or study of the existing…
As I said before if you are looking into an idea that already exists in the market you might want to develop it a little bit and narrow the topic.
how to do that!? this is what we call the study of the existing, study the solutions out there, try them and conclude what’s good about them and what’s bad.
listing the pros and cons of the pre-existing solutions will allow you to choose an aim on what to make better and how to make your solution stand out.
Now after we matured the idea into a project idea, how to proceed!!?
Figure out your main actors or personas
When you have an idea, it should be easy to identify who is going to use it… who is this solution going to serve, and whose problems is it going to solve…
Some solutions are directed for one person, some other solutions can be used by more than one type of users, where each user type has its own journey. Its own process flow…
Define the journeys of your actors
What is the journey? Now that we have the types of users that will be using our solution, we should be able to draw the different paths our users can take from the moment they enter our website or load the mobile app to the moment they leave… what should they be able to do?
Identify the entities needed to realize those journeys
Now, what are entities, and what is the difference between those and the actors or personas? Entities are different than personas or actors… entities can be defined as the tools and objects our users will need to use in order to accomplish their journeys…
creating a post, making a comment… post and comment most probably will be two different entities in our solution…
Refine your entities by figuring the relations between them
Now with different entities being figured out, those entities usually interact together… so the relations between those entities need to be defined along with the different single-source of truths needed to be able to have a reliable and consistent warehouse of data whenever needed.
Split the journeys into user stories
Having the actors their journeys and the entities they need along the way, this step should be easy…
It is all about defining the stories that make up the journey we drew before or splitting the journey into little tasks that once accomplished can build the whole journey for us.
I see those as specific screens related tasks that the user can accomplish along the way of his journey in our app…
Draw out your solution’s wireframes
Now I mentioned screens in step 5… let’s put it down on a paper/ or an editor…
We know what a task is and who is doing it now let’s imagine how we want our screens to look, keeping in mind what is most important when it comes to the user interface, users.
Usability, readability, and intuitiveness are to keep in mind when designing our interfaces, also remember this is aspirational and more of a guide.
Last not least, start developing.
After having all the different pieces of the puzzle ready, it is about time to start building that masterpiece.
This blog won’t dig into the technical software development process, but I would like to highlight that having the documents with the previous work at hand will make a developer’s job way easier. Those documents will also serve as focusing and back on track tools for the developers while they build their solutions.