Rafael Dohms Web Engineer

4Feb/1110

Problem solving technique #1: Taking a mental break

Developers are modern day artists whose masterpieces are not hung on walls but stretched out thin on web servers all over the world, yes that is very poetic, but I really try to look at developers as artists and puzzle solvers. To become better developers your skill-set must include creativity and problem solving skills and of course a artistic touch.

Writing a piece of code is an ever evolving process and never ending, its a puzzle. Let’s think of it in modern terms, writing a code is like solving a level in Angry Birds, your primary objective is to get it done and working, i.e. solve the level and go on. But it does not stop there, you often do not get it perfect on the first try, so you need to go back and do more work on it, make it perform better, use less memory, its like going back to that level in Angry Birds and trying to get a 3 star rating.

Somewhere along this process you will run into every artist’s greatest fear, the mental block. Once you hit a problem you often get to a point that you have so exhaustively thought of why and how to solve it that it simply becomes impossible to find a solution while still looking at that code. This is where the “mental breaks” come in. A different activity, to most its the simple act of going to get coffee or water, taking a stroll outside in the fresh air, some like sports, some like games.. everyone has their escape valve.

I once worked with a good friend and an incredible developer and problem solver, he went simply by the name of “Chester”. It was really interesting to see how he worked a problem mentally and I had some of my best whiteboard coloring brain jamming sessions discussing architecture with him, but his block solving strategy was even cooler. Whenever he got stuck and brain crunching failed to find the solution he simply stopped and picked up a bucket of lego blocks. He sat there building whatever came to his mind until he came to that Eureka moment and the solution came up.

This strategy is something I see more and more in various development companies, like Google, Microsoft and so many others. The colorful rooms with beanbags, video games, or just plain outdoor places, little parks, sport courts and toys. Nerf guns, lego, desktop catapults, iPads with games these are just some of the examples that are out there. All of these have the same purpose as that bucket of building blocks my friend used, get your conscious mind off the problem and let your subconscious take a whack at it.

While this may not work for everyone or they may not be responsible enough to handle it, I believe advanced and competent developers are a perfect match for this, why? Firstly, the developer needs to be mature and responsible, otherwise all of the above are distractions from work, not breaks to solve problems. This is very crucial, if your developer is working to have a break and not taking a break to be able to work more, you have a team with low productivity or even worse with crappy code quality. Their minds are not in it, the code is now an obstacle in their way of the “free time”. Be careful to understand your team and select the right distraction, maybe lego’s will be productive and video games disruptive, or maybe its the other way around, there is no recipe, its all about knowing who works with you.

I truly believe in this process and have had some of the best professional years of my life in companies that understand the importance of this break and the flexibility of time in the office, right now we have a Lego NXT and an iPad and they work great for me whenever I hit a wall in my code. Does it work for you? Is your company in on this? Leave your comments.

16Apr/080

A new beginning

I had never really understood the real reason to have a blog and write articles, until my good friend Leonardo França motivated me into creating this blog. Quickly I realized that because of the blog I begun once more to learn new stuff, mainly to be able to write new articles.

Very soon I dove deep into the topics I wrote about and from there talks and magazine articles soon came about, as was the case with AJAX. The blog became a meeting point for me and people who were interested on the topics discussed, and even with people who had taken some of my projects and gone even further with them, this and the repercussion of the blog were eye openers that showed me the important role publishing articles had in a web professional's career.

Today every so often I'm questioned about how to achieve professional ascention, or how improve your current position, and I don't even twitch before replying: "create a blog, publish your work, and just show up on the map, in a word, participate!"

And that gets me to another topic, "participating". This is an extremelly important aspect of career building, in the last years I have activelly participated in the local PHP comunnity (Distrito Federal, Brazil and outside of Brazil whenever possible), besides working along with great representatives of the web 2.0 in Brazil, like BlogBlogs.

This active participation gets me to the topic of this post, "a new beginning". Through various participations in the PHP community and other personal projects an incredible opportunity presented itself in the form of a job offer from Naspers, to work with their elite SWAT Team in MIH. This spot is amazing for a simple fact, working full time with incredible and unique challenges, much like what I do at home every night, and far from any other job opportunity i went through in the past.

So that's why I'm now in São Paulo, the biggest commercial center in Brazil, and just about as much opposite of Brasilia as anything can be. Last week marked my first days at the new office and I'm already very excited with the prospects and wrapping my brain around the first challenges, as well as getting to know some other products of the worldwide team.

Thanks to all who made this possible!

Tagged as: No Comments