Disrupt 2 Grow - Devoxx 2013

134
Disrupt 2 Grow Konrad `ktoso` Malawski @ Devoxx 2013 [email protected] @ktosopl

description

Short presentation about leaving your comfort zone. Presented at devoxx 2013.

Transcript of Disrupt 2 Grow - Devoxx 2013

Page 1: Disrupt 2 Grow - Devoxx 2013

Disrupt 2

Grow

Konrad `ktoso` Malawski @ Devoxx 2013 [email protected]

@ktosopl

Page 2: Disrupt 2 Grow - Devoxx 2013

fun fact

Page 3: Disrupt 2 Grow - Devoxx 2013

fun factThis talk was a bet with a friend:

Page 4: Disrupt 2 Grow - Devoxx 2013

fun factThis talk was a bet with a friend:

X: “I bet you won’t submit a soft talk!”

Page 5: Disrupt 2 Grow - Devoxx 2013

fun factThis talk was a bet with a friend:

X: “I bet you won’t submit a soft talk!”

Me: “True - I normally wouldn’t! Let’s do it.”

Page 6: Disrupt 2 Grow - Devoxx 2013

fun factThis talk was a bet with a friend:

X: “I bet you won’t submit a soft talk!”

Me: “True - I normally wouldn’t! Let’s do it.”

this talk is

Page 7: Disrupt 2 Grow - Devoxx 2013

fun factThis talk was a bet with a friend:

X: “I bet you won’t submit a soft talk!”

Me: “True - I normally wouldn’t! Let’s do it.”

this talk is meta.

Page 8: Disrupt 2 Grow - Devoxx 2013

_ @

Konrad `@ktosopl` Malawski

Page 9: Disrupt 2 Grow - Devoxx 2013

_ @

Konrad `@ktosopl` Malawski

Page 10: Disrupt 2 Grow - Devoxx 2013

_ @

Konrad `@ktosopl` Malawski

Page 11: Disrupt 2 Grow - Devoxx 2013

_ @

Konrad `@ktosopl` Malawski

Page 12: Disrupt 2 Grow - Devoxx 2013

“disrupt”

Page 13: Disrupt 2 Grow - Devoxx 2013

“disrupt”dis·rupt

• To throw into confusion or disorder

• To interrupt or impede the progress, movement, or procedure of

• To break or burst; rupture.

Page 14: Disrupt 2 Grow - Devoxx 2013

“disrupt”dis·rupt

• To throw into confusion or disorder

• To interrupt or impede the progress, movement, or procedure of

• To break or burst; rupture.

Page 15: Disrupt 2 Grow - Devoxx 2013

“disrupt”

Page 16: Disrupt 2 Grow - Devoxx 2013

“disrupt”• don’t “just break stuff”

• don’t “disrupt only to disrupt”

• don’t ignore “helpful”

• don’t disrupt others (most of the time)

Page 17: Disrupt 2 Grow - Devoxx 2013

“disrupt”

Page 18: Disrupt 2 Grow - Devoxx 2013

“disrupt”

• experiment!

• focus on “interesting”, not “new”

• un-limit yourself

Page 19: Disrupt 2 Grow - Devoxx 2013

What’s the problem?

Page 20: Disrupt 2 Grow - Devoxx 2013

What’s the problem?It’s when we stop learning.

Page 21: Disrupt 2 Grow - Devoxx 2013

My motivation

Page 22: Disrupt 2 Grow - Devoxx 2013

The good ol’ Dreyfus model…

Page 23: Disrupt 2 Grow - Devoxx 2013

The good ol’ Dreyfus model…

Page 24: Disrupt 2 Grow - Devoxx 2013

“Rise of the Expert Beginner”

www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner

Page 25: Disrupt 2 Grow - Devoxx 2013

“Rise of the Expert Beginner”

www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner

It’s a tra

p!

Page 26: Disrupt 2 Grow - Devoxx 2013

“Rise of the Expert Beginner”

disrupt!

www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner

Page 27: Disrupt 2 Grow - Devoxx 2013

failing happens.

Page 28: Disrupt 2 Grow - Devoxx 2013

failing happens.

Page 29: Disrupt 2 Grow - Devoxx 2013
Page 30: Disrupt 2 Grow - Devoxx 2013

Sure, we have JUGs.

Page 31: Disrupt 2 Grow - Devoxx 2013

Sure, we have JUGs.X: “We don’t have such a community for Haskell!”

Page 32: Disrupt 2 Grow - Devoxx 2013

Sure, we have JUGs.X: “We don’t have such a community for Haskell!”

Y: “Here’s your meetup account. 1st meeting in a week?”

Page 33: Disrupt 2 Grow - Devoxx 2013

Sure, we have JUGs.X: “We don’t have such a community for Haskell!”

Y: “Here’s your meetup account. 1st meeting in a week?”

Page 34: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)

Page 35: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Page 36: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 37: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 38: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 39: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 40: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 41: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 42: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 43: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 44: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 45: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 46: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 47: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 48: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…• interesting!

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 49: Disrupt 2 Grow - Devoxx 2013

Whitepapers we read:• Deprecating the Observer pattern• Online, Asynchronous Schema Change in F1• HTM and Cortical Learning Algorithms• Strucure and interpretation of Computer programs• Conflict-free Replicated Data Types• The Typeclassopedia• Data Center TCP• 50+ more…• interesting!

delete(“smartest person in room problem”)X: “My job is boring! Devs are weak!”

Me: “Find a reading club!”

Page 50: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)

Page 51: Disrupt 2 Grow - Devoxx 2013

delete(“smartest person in room problem”)Reading ClubsCode RetreatsHackathons

Online Courses (Coursera?!)Open SpacesCode Dojos

Prepared KataUn-Conferences

BOFsCorridor Discussions

Something else!

Page 52: Disrupt 2 Grow - Devoxx 2013

Disruptive company structure

https://softwaremill.com/20-ceos-in-one-company/

20 CEOs in one Company

Page 53: Disrupt 2 Grow - Devoxx 2013

Disruptive company structure

https://softwaremill.com/20-ceos-in-one-company/

20 CEOs in one Company

Page 54: Disrupt 2 Grow - Devoxx 2013

Disruptive company structure

https://softwaremill.com/20-ceos-in-one-company/

• No managers!• Full transparency!• Fully distributed company!• Trust, responsibility & awesome!

20 CEOs in one Company

Page 55: Disrupt 2 Grow - Devoxx 2013

Disruptive company structure

https://softwaremill.com/20-ceos-in-one-company/

• No managers!• Full transparency!• Fully distributed company!• Trust, responsibility & awesome!

20 CEOs in one Company

!

That moment when you can!

“Been there, done that”,!

and then compare and learn even more!!

(book by 37signals guys)!

!

!

!

!

Page 56: Disrupt 2 Grow - Devoxx 2013

Determination

Page 57: Disrupt 2 Grow - Devoxx 2013

And a “do” attitude

Page 58: Disrupt 2 Grow - Devoxx 2013

And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”

Page 59: Disrupt 2 Grow - Devoxx 2013

And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”

Y: ” ”

Page 60: Disrupt 2 Grow - Devoxx 2013

And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”

Y: ” ”

Page 61: Disrupt 2 Grow - Devoxx 2013

And a “do” attitudeX: “What’s the company policy? Can I go to this conference?”

Y: ” ”

Page 62: Disrupt 2 Grow - Devoxx 2013
Page 63: Disrupt 2 Grow - Devoxx 2013

http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html

Page 64: Disrupt 2 Grow - Devoxx 2013

http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html

really “nerdy” “hackers” teaching kids how to code.

!

Everybody learned a lot!

Page 65: Disrupt 2 Grow - Devoxx 2013

http://blog.geecon.org/2013/03/lots-of-fun-at-geecon-4-kids.html

really “nerdy” “hackers” teaching kids how to code.

!

Everybody learned a lot!

Page 66: Disrupt 2 Grow - Devoxx 2013

http://hackerspace-krk.pl/?lang=en

Arduino’s on Women’s Day

Page 67: Disrupt 2 Grow - Devoxx 2013

Introvert as a waiter

Page 68: Disrupt 2 Grow - Devoxx 2013

Introvert as a waiter

Felt more like

Page 69: Disrupt 2 Grow - Devoxx 2013

Introvert as a waiter

Felt more like , not as cool as

Page 70: Disrupt 2 Grow - Devoxx 2013

Try living somewhere else

http://en.wikipedia.org/wiki/Dymaxion_map

Page 71: Disrupt 2 Grow - Devoxx 2013

Bold statement?Try living somewhere else

http://en.wikipedia.org/wiki/Dymaxion_map

Page 72: Disrupt 2 Grow - Devoxx 2013

Bold statement?Try living somewhere else

http://en.wikipedia.org/wiki/Dymaxion_map

Page 73: Disrupt 2 Grow - Devoxx 2013
Page 74: Disrupt 2 Grow - Devoxx 2013

functional

http://www.brics.dk/RS/96/37/BRICS-RS-96-37.pdf

Page 75: Disrupt 2 Grow - Devoxx 2013

functional// Figure 3, page 7!trait BinomialHeap extends Heap {!! type Rank = Int! case class Node(x: A, r: Rank, c: List[Node])! override type H = List[Node]!! protected def root(t: Node) = t.x! protected def rank(t: Node) = t.r! protected def link(t1: Node, t2: Node): Node = // t1.r==t2.r! if (ord.lteq(t1.x,t2.x)) Node(t1.x, t1.r+1, t2::t1.c) else Node(t2.x, t2.r+1, t1::t2.c)! protected def ins(t: Node, ts: H): H = ts match {! case Nil => List(t)! case tp::ts => // t.r<=tp.r! if (t.r<tp.r) t::tp::ts else ins(link(t, tp), ts)! }!! override def empty = Nil! override def isEmpty(ts: H) = ts.isEmpty!! override def insert(x: A, ts: H) = ins(Node(x,0,Nil), ts)! override def meld(ts1: H, ts2: H) = (ts1, ts2) match {! case (Nil, ts) => ts! case (ts, Nil) => ts! case (t1::ts1, t2::ts2) =>! if (t1.r<t2.r) t1::meld(ts1,t2::ts2)! else if (t2.r<t1.r) t2::meld(t1::ts1,ts2)! else ins(link(t1,t2),meld(ts1,ts2))! }!

http://www.brics.dk/RS/96/37/BRICS-RS-96-37.pdf

Page 76: Disrupt 2 Grow - Devoxx 2013

functional

Page 77: Disrupt 2 Grow - Devoxx 2013

X: “But I know functional programming!”

functional

Page 78: Disrupt 2 Grow - Devoxx 2013

X: “But I know functional programming!”

Y: “Great! Try something different!”

functional

Page 79: Disrupt 2 Grow - Devoxx 2013

logic - prolog

Page 80: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).

Page 81: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).

Page 82: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).likes(john, wine).

Page 83: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).

Page 84: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).

Page 85: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).

| ?- likes(mary,food).

Page 86: Disrupt 2 Grow - Devoxx 2013

logic - prolog

likes(mary, food).likes(mary, wine).likes(john, wine).likes(john, mary).

| ?- likes(mary,food). yes.

Page 87: Disrupt 2 Grow - Devoxx 2013

logic - prolog

Page 88: Disrupt 2 Grow - Devoxx 2013

logic - prolog

Page 89: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :-

Page 90: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

Page 91: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

Page 92: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

reverse([], Reversed, Reversed).

Page 93: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

reverse([], Reversed, Reversed).

Page 94: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

reverse([], Reversed, Reversed).

reverse([Head|Tail], SoFar, Reversed) :-

Page 95: Disrupt 2 Grow - Devoxx 2013

logic - prologreverse(List, Reversed) :- reverse(List, [], Reversed).

reverse([], Reversed, Reversed).

reverse([Head|Tail], SoFar, Reversed) :- reverse(Tail, [Head|SoFar], Reversed).

Page 96: Disrupt 2 Grow - Devoxx 2013
Page 97: Disrupt 2 Grow - Devoxx 2013

From “I won’t use that!”,

Page 98: Disrupt 2 Grow - Devoxx 2013

From “I won’t use that!”,To “That helped me later on!”

Page 99: Disrupt 2 Grow - Devoxx 2013

From “I won’t use that!”,To “That helped me later on!”

prolog (1972) !!

inspired datalog (1977)!!

datomic (2012)

Page 100: Disrupt 2 Grow - Devoxx 2013

Tons and tons more…

The point being… Have a “quick look” into other things!

Page 101: Disrupt 2 Grow - Devoxx 2013

Erlang, Haskell, Scala, Prolog, Standard ML, OCaml,

Go, JavaScript, TypeScript, Pascal, ADA, Common Lisp,

Fortress, F#, Eiffel, Cobol, R, D, Ruby, C++, Python,

Clojure, ELM, Scala, and lot’s of emerging languages!

or maybe read about VHDL!

Tons and tons more…

The point being… Have a “quick look” into other things!

Page 102: Disrupt 2 Grow - Devoxx 2013

roll-your-own

Page 103: Disrupt 2 Grow - Devoxx 2013

roll-your-own

Page 104: Disrupt 2 Grow - Devoxx 2013

X: “I know all these languages!”

roll-your-own

Page 105: Disrupt 2 Grow - Devoxx 2013

X: “I know all these languages!”

Y: “Awesome! Let’s implement one!”

roll-your-own

Page 106: Disrupt 2 Grow - Devoxx 2013

X: “I know all these languages!”

Y: “Awesome! Let’s implement one!”

roll-your-own

Page 107: Disrupt 2 Grow - Devoxx 2013

println("Handling simple return, one value: " + s) // todo remove and make multi return possible!! // todo very naive still - can only return a string literal! val l0 = new Label! mv.visitLabel(l0)! mv.visitLineNumber(10, l0) // todo random number here...! mv.visitLdcInsn(s.substring(1, s.length-1)) // todo only handling one value for now! mv.visitInsn(ARETURN)! val l1 = new Label! mv.visitLabel(l1)! mv.visitLocalVariable("this", "Lpl/project13/jo/" + pack + ";", null, l0, l1, 0)! }! X: “I know all these languages!”

Y: “Awesome! Let’s implement one!”

roll-your-own

Page 108: Disrupt 2 Grow - Devoxx 2013

!

X: “I know all these languages!”

Y: “Awesome! Let’s implement one!”

X: “Uhm, I meant spanish!”

roll-your-own

Page 109: Disrupt 2 Grow - Devoxx 2013

If you’re into that, start out with Charlie Nutter’s:

https://github.com/headius/indy_deep_dive

roll-your-own

Page 110: Disrupt 2 Grow - Devoxx 2013

window management

Page 111: Disrupt 2 Grow - Devoxx 2013

window management

Page 112: Disrupt 2 Grow - Devoxx 2013

window managementX: “How do you manage your windows?”

Page 113: Disrupt 2 Grow - Devoxx 2013

window managementX: “How do you manage your windows?”

Y: “Oh, I program my window layouting system”

Page 114: Disrupt 2 Grow - Devoxx 2013

window managementX: “How do you manage your windows?”

Y: “Oh, I program my window layouting system”

X: “Awesome, show me!”

Page 115: Disrupt 2 Grow - Devoxx 2013

tiling window management <<= XMonad

Page 116: Disrupt 2 Grow - Devoxx 2013

tiling window management <<= XMonad

Page 117: Disrupt 2 Grow - Devoxx 2013

culture differences

Page 118: Disrupt 2 Grow - Devoxx 2013

culture differencesin places I lived

Page 119: Disrupt 2 Grow - Devoxx 2013

A road-trip style vacationAlthough mine wasn’t as “exotic” as other’s :-)

Page 120: Disrupt 2 Grow - Devoxx 2013

culture differences ( )

Page 121: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Page 122: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Page 123: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Example from my work-life:

Page 124: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Example from my work-life:

very direct!historically cunning!

(because of old. communism gov.)

Page 125: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Example from my work-life:

very direct!historically cunning!

(because of old. communism gov.)

not direct, it’s being polite!historically peace > personal stuff

Page 126: Disrupt 2 Grow - Devoxx 2013

culture differences ( )(don’t generalise, but be aware of it)

Example from my work-life:

very direct!historically cunning!

(because of old. communism gov.)

not direct, it’s being polite!historically peace > personal stuff

And it’s the same with other countries!!Everybody has different “styles” of interaction.!

!

And software is a lot of human interaction.

Page 127: Disrupt 2 Grow - Devoxx 2013

back to now()

Page 128: Disrupt 2 Grow - Devoxx 2013

back to now()

You’re at

Page 129: Disrupt 2 Grow - Devoxx 2013

back to now()

You’re at

Jump out of your comfort zone.!!

Try a “weird” session!

Page 130: Disrupt 2 Grow - Devoxx 2013

Just do it.

Page 131: Disrupt 2 Grow - Devoxx 2013

Just do it.

You’ll get a simple “thanks”.!!

And that’s the best.

Page 132: Disrupt 2 Grow - Devoxx 2013

Just do it.

You’ll get a simple “thanks”.!!

And that’s the best.

Page 133: Disrupt 2 Grow - Devoxx 2013

groups:!sckrk.com

hackerspace-krk.pl java.pl

gdgkrakow.pl meetup.com/Paper-Cup

!

images: XKCD

zen.pencils.com “Golden Boy” manga / anime

!

kudos & links:!Adam Pohorecki for SCKRK SoftwareMill for being so flat

All friends that helped to create our communities Erik Dietrich for his blog @ daedtech.com (expert beginner post)

http://en.wikipedia.org/wiki/Ralph_Waldo_Emerson

Page 134: Disrupt 2 Grow - Devoxx 2013

PREFERRED TYPING:

!STRONG

AND STATIC

LIFE IS

STUDY!

FAVOURITE MONAD:

!FUTURE[+A]

!!

TWITTER: @KTOSOPL

thank you!BIO:

KONRAD MALAWSKI

!T: KTOSOPL GH: KTOSO

BLOG.PROJECT13.PL GEECON.ORG

@ DEVOXX 2013