Matías Fidemraizer

Passionate about software

Team work isn't just working together in the same space

How many job interviewers or managers will tell you the following highlights about their team?

  • Our workers are nice guys, they love what they do.
  • They play soccer together some day every week or they go to drink some beers once they end their work day!
  • When things go wrong, everyone stays here together!

This is going to be my opinion, but this isn't my definition of team work.

Team work seems to be something more complex than just people smiling every day. It's people collaborating as a single unit where decisions are taken in group and everyone is responsible of his/her own acts, but they work in a way that their own participation tries to have a positive effect. Do great things and do them for everyone.

During some job interview, company's CEO talked me about how software developers may provide incredible value if they are those ones that might fix a critical bug. "Some developers provide more value than a project manager" (said). I would say that a project manager which doesn't provide value isn't the right project manager.

Actually some companies and individuals understand team work as a group of disconnected silver bullets which collaborate in the same project. Obviously, it seems like it's not the right answer to the question of what's team work?.

My opinion about this topic is a good team is a one having a clear separation of roles. Separation of concerns anyone? How many times have we heard about how to correctly separate concerns in a software project? Do you remember domain-driven design? We, software professionals, always say we want software done on top of good development practices but we forgot that this is possible if we achieved some preconditions and skills.

Working as part of a small, medium or large team means mixing our individual goals with others' ones, and it doesn't mean that we need to throw away our professional competence. If you know something that's missing in some colleague, why don't you practice mentoring?. Provide training, samples. Discuss why your colleague should get better. 

I won't say that your own competence has no value. Everyone has his/her own experience, passion and skills, and this is why we get hired, because we're better in some field. It's not about being the best in everything. Really, it's about developing projects by a competitive team.

Another detail is, even if you practice agile project management and you open the decision workflow to everyone, each professional should have a role in the team. It won't work "everyone can participate in everything". Some degree of specialization is a key requirement in any project. But I find role definition an important part of success because it restricts responsibility: no one is responsible of everything and this forces everyone to work together with the rest of the team to achieve some goal.

That is, beers, soccer, tennis or anything else are great, but this isn't team work. Team work is sharing success and failure, responsibility, respecting your team mate, engaging others to do great things, collaborating with others to achieve project's goals. And, of course, drinking beers.

Future of Web development

There's a long of discussion about this topic: what's next in Web development? I would say that what's next has arrived and it's all about more client code and less server code. Or, at least, server code which does server things.

A long time ago in DHTML days, when server code gained momentum and Web browsers weren't following W3C Web standards in a great percentage, everyone said: create the markup dynamically in the server and send it to the Web browser in order to avoid compatibility issues. Even when JavaScript was able to generate HTML using standard DOM interface.

Now, don't we are in the opposite scenario? Most server technologies have evolved to provide full-featured server-side HTML templating engines which easily bind to data, but Web browsers have become true application development runtimes since HTML5 and related standards have been widely-supported by mainstream vendors like Microsoft, Google, Apple and Mozilla.

So, what's the future of Web development?. Well, I would say what's the future of internet itself. Do you remember when everyone was talking about Web 2.0? It seems like this was a long time ago. Others have been promoting the semantic web or better known as Web 3.0. And, finally, some have declared that we're in the Web of services. I believe that this is the best definition of current and future state of Web and/or internet development.

Have you ever heard about cloud computing? Yes, this term is everywhere now. We all have become cloud developers. Maybe this is because the world globalization and internet is a good vehicle to sell or provide a product to every human in the world which has broadband internet connection.

Returning to the topic of this post, I would like to say that software professionals and enthusiast need to think that the internet of hypertext with dynamic content is just part of the past, and now is time of WebApps. Ok, and what's a WebApp?

Probably this is just my point of view, but it's widely-accepted that a WebApp is a single page application implementing client-side code using Web standards like JavaScript, HTML5 and CSS3, where server is just a REST-style API wrapping the domain/business and data layers.

There's a knowledge stream around WebApp development that's creating great tooling like build and automation tools, client-side templating and data-binding, client-side NoSQL databases. Veteran and new client-side JavaScript libraries are contributing to create great tooling around the Web development.

I can remember that promise of Web browsers becoming something like a cross-platform, cross-device development platforms and now I would say that this is our present and future.