Notki po polsku

Interview killer question

Inspired by some old post by Paweł Brodziński, I wanted to share with you one of my killer job interview questions. Why you may ask? Am I just shooting myself in a feet? I don’t think so.

To be honest, there are actually two questions:

  • How would you define object-oriented programming?
  • You have a task to design C# vNext. Out of the three: inheritance, polymorphism and encapsulation you are allowed to use only two. You just have to get rid of one. Which one would you get rid of?

The sad truth is more than 90% people fail to answer the first question (and we are usually not hiring many juniors). Stories about animals living in a zoo won’t convince me you understand OOP.  The fact is, many people write code in OO languages such as C# but their understanding of object orientation has not evolved since reading their first OO textbook. Out of  fifteen people I interviewed recently, only one could tell me what polymorphism is. Bunch of hints if you’re going to have a job interview with me:

  • read some classics of OOP even if they are not so current (Bertrand Meyer’s Object-Oriented Software Construction and/or Streamlined Object Modelling)
  • start reading Eric Lippert’s blog about C# to be up to date with latest C# puzzles
  • read CLR via C# to know how OO concepts map to CLR
  • read the f*** definition of OOP (the one mentioning inheritance, polymorphism and encapsulation)
  • understand these three features and how their relations (can I have inheritance without polymorphism? what about the other way round?)
VN:F [1.9.22_1171]
Rating: 4.4/5 (10 votes cast)

74. spotkanie KGD.NET

Zapraszam na 74. spotkanie KGD.NET już w najbliższą środę, 30 maja o godzinie 18.30. Będziemy mieli okazję posłuchać Sebastiana Bełczyka (CoffeeScript) oraz Mirka Jedynaka (continuous delivery). Zapraszam do zapoznania się ze szczegółami spotkania i rejestracji tutaj.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Prezentacja Continuous Delivery

Wszystkich zainteresowanych tematyką Continous Delivery zapraszam na moją prezentację podczas 73. spotkania KGD.NET. Osoby, które nie mogą dotrzeć do Krakowa mogą, dzięki uprzejmości portalu VirtualStudy.pl oglądać sesję na żywo on-line. Strona spotkania na VS znajduje się tutaj.

Sesja jest wprowadzeniem w tematykę Continuous Delivery. W kilku słowach można powiedzieć iż CD jest to podejście do tworzenia oprogramowania kładące nacisk na traktowanie każdego commita jako potencjalnie wdrażalnego na środowisko produkcyjne. Każdy commit jest budowany, poddawany wielorakim testom (jednostkowym, integracyjnym, akceptacyjnym etc.), a ostatecznie wdrażany produkcyjnie.

Continuous delivery kładzie ogromny nacisk na automatyzację wszelkich czynności związanych nie tylko z budowaniem i instalacją aplikacji, ale także z przygotowaniem odpowiedniego środowiska.

Podczas sesji zaprezentuję konkretną implementację idei continuous delivery, którą zbudowałem wraz z moim zespołem w ramach ostatniego projektu. Jest to implementacja niskokosztowa (zero płatnych narzędzi) stworzona głównie w oparciu o PowerShell.

Zapraszam także na drugą (a właściwie w kolejności chronologicznej — pierwszą) sesję 73-go spotkania: Pogromcy mitów: Czy specjaliści od użyteczności i programiści mogą ze sobą zgodnie współpracować? Marcina Czyżowskiego.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

2011 in books

December is traditionally a time of retrospective posts. Forgive me please but I simply can’t resist following this trend. I’d like to share with you my thought about books I read this year. Hope you’ll find it useful when deciding what to read next.

REST in practice :D

This was the first Kindle book I bought. After reading it I could say I love both the book and the device. I learnt quite a lot about the principles of REST. The hardest part was understanding why these hypermedia are so important but then came the moment of enlightenment. I can for sure recommend reading it.

CSS: The Missing Manual :(

I must admit I had quite high expectations that I will learn how HTML layouts work and how to efficiently position elements. It turned out to be a book about CSS syntax and very basic stuff I already knew.

Management 3.0 :D

I wanted to learn a little bit about management for quite some time and suddenly this book came out. I simply love all the analogies (i.e. to bacteria) Jurgen uses in the book to explain how such complex systems as software developer teams work. Recommended to everybody, even if you don’t plan to become a manager.

Event Processing in Action :(

Another high expectation book and another disappointment. I expected a good book on event-driven architectures but actually EPiA is a book about taxonomy and nomenclature of event systems. Not much more than a bunch of definitions.

Dependency Injection in .NET :)

I bought it via Manning early access program and it was for sure not a waste of money. Although because I had some experience with DI before and have been up-to-date with blogs and tweets of Krzysztof Koźmic and Mark Seeman, there was not much new to me in the book. Still, I don’t regret the money and I can happily recommend the book, especially if you are new to DI.

The Pragmatic Programmer :?

A friend of mine recommended this book to me so I though I can give it a try. I had mixed feelings after reading it. I can’t recall a single thing that altered my thinking or opened my eyes to some new insight. For sure it is a solid book and at the time of writing it contained some cutting-edge stuff but after a few years these ideas have become mainstream and their understanding is expected even from novice developers.

JavaScript: The Good Parts :?

Another tentative one. I expected a lot more hardcore stuff in the book. It left me with a feeling that I know JavaScript (which is bullshit). If you happen to don’t know it at all (are there such people?) it may be a good book to start with.

Streamlined Object Modeling :(

After hearing so many good things about the book on Domain-Driven Design group I simply had to read it. To my surprise I dint’t like it. I could not get rid of a feeling that authors promote some catch-it-all model they developed and claim it solves all problems (even probably hunger in Africa). The only thing I really liked was the modeling heuristic that objects that are active in real world tend to work better if modeled as passive in the domain model and vice-versa.

Working Effectively with Legacy Code :)

I bought this one because we started to rewrite some legacy code in my current project. I wanted to learn from the expert how to deal with such code. It turned out to be a good, solid book. I don’t remember any particular moments of enlightenment but for sure I learnt a lot.

Continuous Delivery :D

This is the last one. I’ve been reading it since Saturday and already read about 70%. Continuous Delivery is probably the best book I’ve read this year. Together with REST in Practice and Management 3.0, it totally changed the way I see software development as a process. Thanks Jez and Dave!

Looking into the new year…

There are several themes that dominate my Amazon wishlist for the next year:

  • C# (need to refresh my knowledge)
  • Lean (having heard a lot about Kanban I finally need to read some ‘classic’ books)
  • Architecture (Pattern Oriented series in particular)

I would also like to read some ‘true classics’ like Extreme Programming Explained by Kent Beck. Life will show if this is doable…

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)

69. spotkanie KGD.NET

Chciałbym zaprosić wszystkich na 69. spotkanie Krakowskiej Grupy Developerów .NET. Spotkanie odbędzie się jak zwykle w siedzibie ABB, przy ulicy Starowiślnej 13. Będzie także dostępne on-line dzięki uprzejmości portalu VirtualStudy. Na spotkaniu, jak zwykle, dwie sesje. Tym razem będą to:

Kanban – Usprawnienia bez wysiłku, którą zaprezentuje Paweł Brodziński, oraz

Software as a Service – jedna baza danych, wielu użytkowników, którą przedstawi Maksymilian Majer

Po spotkaniu zapraszamy wszystkich na wspólne piwo. Będzie to okazja, aby podyskutować z prelegentami na temat ich prezentacji w bardziej nieformalnych warunkach. Pierwsze dwie kolejki tym razem (to nie reguła) stawiają prelegenci!

Zapraszam do rejestracji na spotkanie tutaj.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)