~ About 5 minutes read.

This is going to be a quick write-up on just some thoughts I have, while Gustavo is still asleep. He had a rough night last night, so he won't bother us today.

Intro

  if( sad() === true ){
    sad().stop();
    beAwesome();
}

  while( !(succeed = try()) );

I love these thoughts explained with code! As cheesy as it may sounds I actually like the second one as it perfectly depicts what software development has been for me all this years: hard, frustrating and rewarding, all at the same time.

The key

In my limited experience I recently found out a state of mind, a mindset that helped me carry through whatever task I was facing:

Development teaches you that there is always a solution. ALWAYS. If you haven't found it yet, either you didn't look in the right place, you didn't use the correct approach, you didn't ask the right person, or you didn't ask anyone at all.

The right place

It happens to me quite often that I spend hours trying to find the solution to a problem, and then I just tweak a bit the search query on Google and the solution is right there, the first result. If you have ever experienced something like that you can easily relate to the feelings of frustration, because it was as easy as looking in the right place, and of gladness, because you can finally move on.
It always strikes me when I ask a fellow programmer and good friend of mine to help me with something, as he always finds better search results than me. It turns out googling is indeed a skill.
How do you find the right place? you keep searching. The right place may not always be the same website, blog, or book.

The right approach

I'd say there are mainly two ways to approach a challenging situation when developing. One is to keep hitting the wall of difficulty, until you tear it down; the other is to take a couple of steps back and observe that actually with the adequate run up you could jump over the wall. As a professional stubborn, I always went for the former until I saw fellow developers use succesfully the latter and I decided to quit wasting time. The turning point came on my latest project, in which I developed something that always needed to be updated because I hadn't planned properly before executing. Initially I didn't want to take the burden to re-write it altogether so I kept applying patches on top of what I had built. At the end of the day, bugs kept showing up unexpectedly, so I stopped, planned a more sensible solution, applied it, and never touched that part again.
That being said, I feel determination and stubborness to the point of obsession are sometimes necessary to complete projects. I've been reading lately a book called Hard Drive in which the history of Bill Gates and Microsoft is thoroughly recounted. I read back in the early days of Microsoft 80 hours working weeks were required, so there were people coming in to work 24/7. Maybe that's not required most of the times, but the principle that determination will get you where your body can't still holds true.

The right person

Sometimes changing approach means asking someone else how they solved the same problem or if they have ever faced it before. This has to be done after everything else though. Time is your most important asset, so you want to avoid wasting it and you decide to ask someone else's opinion. The catch here is that, obviously, the other person feels the same way, so you have to make sure you have tried everything else before. There's nothing more annoying than someone asking you a question they would have easily found out the answer to just googling it. Also, there's a good chance they would ask you about what you tried anyway, so if you did your reasearch you can answer and they have more context to help you.
Then again, never underestimate this factor, especially when working on a team. If that's the case everyone is working towards a common objective, and everyone usually wants to reach it quickly and effectively. The only way to do that is to ask people more experienced than you what to do, as that's a win-win for everyone. If you feel you don't want to disturb other members of the team(I know I still do sometimes) remember that they would rather explain to you one more time what you have to do, instead of later reviewing your code to fix stuff you said you understood whereas you clearly had not.

The gist

When you apply the mindset described earlier you take control of whatever endeavor you are partaking in. You decide what's the outcome, you are the master of your fate, the captain of your soul.

So, wheter you decide to take down the wall or to jump over it it doesn't matter, as long as you never ever give up.

~

Uh, oh, what's all this noise?

It's nothing Gustavo, go back to sleep, you are still dreaming.

Can you bring me some green tea?

What the... Get your life together man.

~


1,086 4 17