As our systems become larger and faster, the tools and methodologies that served us so well in the past are no longer able to keep up with growing complexity. Our organizations, our tools and even are skills were shaped under the assumption that we can design the systems as we see fit. This is no longer the case. We must learn to work in face of uncertainty and partial information, with systems we do not fully understand. We need new skills and new ways of building organizations. We need to rethink what it means to be a software engineer.