Welcome
33rd Degree 4 charity is organized first time this year. The idea behind this edition is not to clone the main edition from spring/summer. This autumn edition is focused on charities. Developers are very lucky as average developer salary is much higher than average Polish salary. At the same time most of the developers would like to improve their skills and give something back to those who need help.
We would like to match the need of constant and strong need for improvements and learning, with the possibility to support charities. This conference brings very well known world class speakers like Jeff Sutherland, Stuart Halloway and Thomas Sundberg. As well as best speakers from this year Confitura conference like Slawek Sobotka, Jakub Nabrdalik, Jakub Kubrynski, Tomek Nurkiewicz and Tomek Cejner.
You can choose how much you would like to give away. It might be 50, 100, 150 or 200 zl. Please note it is volunteering donation and we will not be preparing VAT invoices for your contributions.
As we would like to collect as much money as possible, during "4 charity" edition of the conference we will not provide coffee breaks, lunches and any give aways.
Hopefully you will find the agenda interesting and you will help us collect money and support those who are in needs. We are working with selected charities like Szlachetna Paczka and Mam Marzenie and also we will consider any charity you will suggest. We can assure you whole income will be passed to charities.
Agenda
Time | Session |
---|---|
09:00 - 09:45 | Tomasz CejnerModa na REST - o tworzeniu pięknych API |
09:45 - 10:30 | Tomasz NurkiewiczKrótka historia czasu |
10:30 - 11:00 | Break |
11:00 - 12:00 | Jeff SutherlandScrum: The Future of Work |
12:00 - 13:00 | Break |
13:00 - 13:45 | Jakub NabrdalikTest Driven Traps |
13:45 - 14:30 | Thomas Sundberg(Remote) pair programming |
14:30 - 15:00 | Break |
15:00 - 16:00 | Stuart HallowayNarcissistic Design |
16:00 - 16:30 | Break |
16:30 - 17:15 | Sławek SobótkaModel jest wszystkim czego potrzebujesz (w aplikacjach biznesowych) - czyli czego nauczyłem się w ciągu 6 lat stosowania i nauczania DDD |
17:15 - 18:00 | Jakub KubryńskiCo piszczy w Javie? |
Sessions
Scrum: The Future of Work
Jeff Sutherland
Scrum jobs have increased in the U.S. by 3000% in the last year. In Europe the increase is 200%. What is driving this increase?
What will the future bring?
Over half of agile teams cannot deliver a successful project. What should we do about this?
What are proven practices that differentiate successful agile teams from those that cannot deliver?
How are large organizations transforming their structure to become Agile?
Narcissistic Design
Stuart Halloway
The software industry changes rapidly, but you can protect yourself from these changes by creating code that is complicated enough that only you can maintain it.
Of course you should not engage in obvious bad practices. The good news is that you don't have to. You can follow idiomatic industry practice and stay buzzword compliant with the latest trends, while quietly spreading complexity throughout systems. Better yet, the symptoms will show up not in your own code, but in other code that uses your code, directly or indirectly. You will be a hero as you lead larger and larger teams burning the midnight oil to keep systems alive.
Practice these principles, and your code will have an infectious complexity that guarantees you will always be needed to maintain it.
- Use OO, and don't forget those setter methods!
- Prefer APIs over data.
- Start with DSLs.
- Always connect (and never enqueue).
- Create abstractions for information.
- Use static typing across subsystem boundaries.
- Put language semantics on the wire.
- Write lots of unit tests.
- Leverage context.
- Update information in place.
(Remote) pair programming
Thomas Sundberg
Programming is often something that is done in solitude. Problem solving is something that often is done in a group. Programming is always about problem solving. It is therefore natural to do programming in groups. The group must not be too large and there must be at least two persons to make up a reasonable group. A pair turns out as the natural choice.
Some of the benefits with pair programming are
- Problem solving
- Continuous reviews
- Quality
- Learning
- Lower project risks
- Satisfaction
Pair programming is most efficient when the pair sits next to each other. This is not always possible. I will therefore show how to setup a remote pair programming session and then do some programming with a remote partner.
There is a myth that pair programming is twice as expensive as having one person solve each problem. The actual direct cost has been shown to be only 15% higher.
Model jest wszystkim czego potrzebujesz (w aplikacjach biznesowych) - czyli czego nauczyłem się w ciągu 6 lat stosowania i nauczania DDD
Sławek Sobótka
"Dlaczego ta zmiana kosztuje 100 mandaysów? Przecież chciałem dodać tylko jeden checkbox na ekranie?"
"Ale jaki dług techniczny musimy teraz spłacić? Przecież do tej pory wszystko działało!"
Wszyscy zapewne dobrze znamy tego typu sentencje.
Na domiar złego pojawiają się nowe symptomy: programiści uciekają z organizacji mamrocząc po nosem coś o "big ball of mud" - dziwne, przecież dostali karnet na siłownię...
Podczas prezentacji przedstawię kilkanaście "special hacks" modelowania domen. Niektóre z nich będą oczywiste (choć zwykle nieuświadomione) a inne mniej.
Niektóre mogą być dużymi zmianami a inne drobnymi szczegółami, które jednak robią różnicę.
Zaczniemy podejścia, w którym wspólny model może być stosowany jako narzędzie komunikacji w celu:
- uświadomienia wszystkim złożoności domeny
- zrozumienia kosztów zmian
- świadomego zaciągania długów technicznych
- lepszego rozumienia swojego biznesu przez kleinta
Następnie nazwiemy typowe problemy jakie miewa większość modeli:
- zbytnie uogólnienie
- brak różnienia technik uogólnienia i abstrahowania
- modelowanie tuzinów specjalnych przypadków zamiast znalezienia głębokich reguł
- brak modelu dla złożoności esencjonalnej
- pominięcie modelu czasu
Główna część zostanie poświęcona konkretnym technikom modelowania, które mogą być pomocne na poziomie procesu, na poziomie komunikacji oraz na poziomie architektury i implementacji.
Test Driven Traps
Jakub Nabrdalik
Czy masz czasem poczucie, że testy Cię spowalniają? Czy masz sytuacje, gdy mała drobna zmiana, działająca w runtime, powoduje 200 nieprzechodzących testów? Czy boisz się zrobić prosty refactoring, bo przekopanie wszystkich testów jest ponad Twoje siły? Czy masz czasem poczucie, że pisanie testów nie ma sensu?
Jeśli tak, jest duża szansa, że zabetonowałeś sobie aplikację testami. Test Driven Deveopment jest jak GO: zasady są proste, łatwo zacząć, ale sensowny poziom osiąga się po latach praktyki.
Przedstawię typowe błędy, które popełniają początkujący i doświadczeni użytkownicy TDD, oraz sposoby radzenia sobie z nimi i sztuczki, których się nauczyłem w trakcie ośmiu lat korzystania z TDD.
Naucz się na błędach innych, albo będziesz je powtarzał.
Prezentacja jest skierowana zarówno do początkujących jak i bardziej zaawansowancyh, którzy spotykają się z opisanymi na początku problemami. Przykłady będą z wykorzystaniem Spocka, JUnita, Mockito, Javy i Grooviego.
Co piszczy w Javie?
Jakub Kubryński
Jak to się dzieje, że znów w logach widzę PermGen? Czemu wywołanie tego serwisu tak długo trwa? Czemu maszyna co jakiś czas się dziwnie przytyka? Ile pamięci będzie potrzebowała nasza aplikacja przy podwojeniu liczby danych? Co próbuje do Ciebie powiedzieć Twój JVM? Jak go zrozumieć i wyłuskać potrzebne informacje?
Podczas prezentacji zobaczymy jakie możliwości otwierają przed nami profilery. Zweryfikujemy czy słusznie dorobiły się opinii “tajemnych instrumentów” i czy faktycznie są takie straszne jak się zwykło o nich mówić. Przeprowadzimy także kilka praktycznych eksperymentów, które pozwolą wyrobić własne poglądy i zbudują podstawy do wykorzystania tego typu narzędzi w przyszłości.
Krótka historia czasu
Tomasz Nurkiewicz
Jaka jest różnica czasu między Warszawą a Sydney? Odpowiedź na to pytanie jest zaskakująco trudna. Równie zaskakującym jest jak wielu programistów tej trudności nie dostrzega. Niby po co? Bo niemal co roku na światło dziennie wypływają zawstydzające błędy w oprogramowaniu, wynikające z niewiedzy bądź lekkomyślnego traktowania... czasu w systemach komputerowych.
Podczas tej prezentacji spróbuję pokazać, jak ważne jest świadome operowanie czasem podczas pisania oprogramowania. Nie będziemy (prawie) narzekali na klasę java.util.Date, ale skupimy się na fundamentalnych nieporozumieniach i błędach. Zobaczymy w przykładach fatalne skutki beztroskiego i nieumiejętnego obchodzenia się z czasem.
Nauczymy się także jak przechowywać, przesyłać i przetwarzać czas oraz jak testować systemy zależne od czasu (czyli w zasadzie wszystkie). Nie spodziewajcie się eksploracji takiego czy innego API. Skupimy się raczej na zrozumieniu praw rządzących upływem czasu i ich odpowiednim modelowaniem w naszych programach.
Moda na REST - o tworzeniu pięknych API
Tomasz Cejner
Gdy termin RESTful web services stał się jednym z gorętszych buzzwordów ostatnich lat, zastanówmy się co to tak naprawdę oznacza, jak należy projektować naprawdę "REST-owe" serwisy i dlaczego warto to robić dobrze.
Nie będzie o frameworkach i bibliotekach, więcej o tym jak tworzyć eleganckie i piękne API, tak by ich użytkownicy chętnie z nich korzystali.
Speakers
Jeff Sutherland
After graduating from the military academy at West Point, Jeff served as a fighter pilot in the Vietnam War, and after returning home, he continued his studies for a Master's Degree mathematics, statistics and computer science at Stanford and a Ph.D. in radiology from the University of Colorado, where he then worked as a researcher and lecturer.
In 1983, he moved to the IT industry, where he held various leadership roles (CTO, VP of Technology) in organizations implementing complex IT projects. The experience gained during this time led him to the creation of Scrum, which was first presented in 1995 at the OOPSLA conference.
Since then, Jeff continued his work as a manager, but at the same time kept spreading knowledge of Scrum all over the world and helped to apply it at hundreds of groups and organizations. Currently Jeff serves as the President of the Scrum Inc., President of the Scrum Foundation and senior advisor to investment funds OpenView Venture Partners.
Stuart Halloway
@stuarthalloway is a founder and President of Relevance. He is a Clojure committer, and a developer of the Datomic database.
Stuart has spoken at a variety of industry events, including StrangeLoop, Clojure/conj, EuroClojure, ClojureWest, SpeakerConf, QCon, GOTO, OSCON, RailsConf, RubyConf, JavaOne, and NFJS.
Stuart has written a number of books and technical articles. Of these, he is most proud of Programming Clojure.
Thomas Sundberg
Thomas Sundberg is a consultant based in Stockholm, Sweden. He has a Masters degree in Computer Science from the Royal Institute of Technology, KTH, in Stockholm. Thomas has been working as a developer for more than 20 years. He has taught programming at The Royal Institute of Technology, KTH, one the leading technical universities in Sweden. Thomas has developed an obsession for technical excellence. This translates to Software Craftsmanship, Clean Code, Testing and Automation.
Thomas is also a speaker at different conferences and developer venues, including eXtreme Programming XP, Agila Sverige, Öredev, Turku Agile Day, Agile Central Europe, GeeCON, Java Developer Day, Agile By Example, Scandinavian Developer Conference and Agile Testing Days.
Thomas runs a blog where he writes about programming, Software craftsmanship and whatever problem he wants to share a solution about. It can be found at http://thomassundberg.wordpress.com/
Sławek Sobótka
Programujący architekt oprogramowania i trener w firmie Bottega IT Solutions, specjalizujący się w technologiach Java i efektywnym wykorzystaniu zdobyczy współczesnej inżynierii oprogramowania.
Do jego zainteresowań należy szeroko pojęta inżynieria oprogramowania: architektury wysokowydajnych systemów (w szczególności CqRS), modelowanie (w szczególności DDD), wzorce, zwinne procesy wytwórcze. Hobbystycznie interesuje się psychologią i kognitywistyką.
Entuzjasta Software Craftsmanship. W wolnych chwilach działa w community jako: prezes Stowarzyszenia Software Engineering Professionals Polska, lider lubelskiego Java User Group, publicysta w prasie branżowej i blogger.
Jakub Nabrdalik
Jakub Nabrdalik is a Solution Architect at TouK, which means completely nothing except that he jumps into all the roles in software development: from analyzing requirements, leading teams, to his favorite: programming. As he does almost everything in the process of software development, he is equally bad at everything. Because he's not too smart and he has hard times understanding anything complex, he prides himself on writing simple, readable and maintainable code, something other folks call „craftsmanship” (not to be mistaken with „crapmanship”). You can meet him at Agile Warsaw, Warsaw Java User Group or find his blog at blog.solidcraft.eu. Jakub started commercial programming about 2003 and does TDD since 2005 in several different languages including Groovy, Java, C# and PHP.
Jakub Kubryński
Zawodowo związany z PayU z ramienia którego odpowiadam za ogniwo rozwojowe w Warszawie.
Prywatnie czuję się mocno przywiązany do pakietu java.util.concurrent i klasy sun.misc.Unsafe. Poza tym pasjonują mnie lekkie aplikacje, w których stosunek kodu do dostarczanej funkcjonalności jest jak najmniejszy :)
Tomasz Nurkiewicz
Na programowaniu spędził już połowę życia, od 6 lat zawodowo w Javie. Uwielbia back-end, toleruje JavaScript. Pasjonat Springa i języków około-Javowych. Rozczarowany jakością tworzonego oprogramowania (jakże często swojego!), nie znosi długich metod i ukrytych efektów ubocznych. Zakochany w wykresach, analizie danych i raportowaniu. Redaktor techniczny książki "Learning Highcharts". Uważa, że komputery wymyślono by programiści mogli automatyzować powtarzalne i nudne zadania. Także własne.
Mieszka w Oslo, gdzie pracuje nad platformą track & trace. Posiada certyfikaty SCJP, SCJD, SCWCD i SCBCD. Członek zespołu scala.net.pl, zaangażowany w open source. Wyróżniony DZone's Most Valuable Blogger. Niegdyś aktywny na StackOverflow.
Tomasz Cejner
Tomek od 20 lat usiłuje programować komputery z różnym skutkiem, a obecnie jest senior developerem w krakowskim start-upie SmartRecruiters, gdzie - jak w każdym startupie - próbuje zmienić świat. Zwolennik rozwiązań eleganckich i minimalistycznych rozwiązań, w myśl "mniej znaczy więcej". Gdy nie programuje w Javie pasjonuje się technologiami mobilnymi, programuje w systemie iOS i gotuje dania kuchni orientalnej.