There’s a pattern when we’re speaking about new projects. First, they always mean new challenges. And, second, they usually come from someone who has this great idea, but who can’t fully define what the product is or how it will work. More importantly, this person believes that you’re the right person to materialize what she envisioned and that’s how things start getting a shape.
At the beginning, all you’ve been giving is a paper draft or one or two really simple lines of code. The idea you have is like solid clay, but taking that raw material and turning it into something better seems a bit of a challenge. All you think about is that you have to use your crafting skills to turn that thing into something useful for people.
How do you start? Well… First, you write the same lines on a black screen and, a few days later, that white words become a program that already has a CRUD. Amazing, isn’t it? Having a CRUD in Software is the equivalent of having a cover and index in a master thesis. The hard work is yet to come, but still, we already have an idea of where to go.
Re-shaping things up
The first big challenge is done! Next step: clearing out what are your program needs and what is a priority. For that, you need to have a few more meetings.
At this point, you and your team already have added some water to the solid clay, so drafts are gone and you already have schemes, diagrams, tables and other fancy ways of organizing information. Though there’s yet a lot to do, you already have a glance of what the final product will look like and what it will do.
The meeting and definition process repeats itself for a couple weeks. As the time passes your drawing becomes a little better and the clay starts to look and work like the final piece.
The problem is that, in the middle of the process, there are always new questions that we haven’t thought about before. Shaping clay isn’t easy and sometimes the shape isn’t the right one for the final object.
Solution: you just need to find a better strategy for approaching the same problems or to solve the ones that just appeared. To do that, you need to remember everything you know, read a lot of online information and, in some cases, ask for help.
No one knows everything. And, even if you could possibly know everything, I still think that, from time to time, it is a great idea to learn something different or simply ask for an opinion.
Making masterpieces out of clay
At the end, you finally have a beautiful, useful and strong object – or should I call it “Piece of Art”? You are proud of your work, but you know that it isn’t perfect. In my opinion, there is always something else to do better or to do differently.
In short, we can say that developing software is like shaping clay, but the process has a few differences: you aren’t alone, you have a great team with you. And if you’re lucky you will have people from different backgrounds who will think differently but still listen to your ideas and help you during the process. The combination of knowledge and experiences is what prevents you from making another ugly piece of pottery and helps you turning clay into a masterpiece.
In that way, for me (and for a lot of other people) software development is more than only a job, it’s an art to which you need a few love, patient, and creativity. So, put your hands on water and clay and start transforming ordinary stuff in amazing things. Let’s do it together.