Share
Embed
Transcript
20 slides
-
Muukii Software Engineer at Eureka, Inc. Problem Solving from the
Abstraction Layer -
Made many libraries (OSS) made 84 libraries github.com/VergeGroup -
16 repositories github.com/FluidGroup - 68 repositories Pairs uses some -
What is “library”? Is a “component”. It’s like LEGO bricks.
We can reuse it, and it solves a specific problem. When building a house, we use a 'switch' to turn lights on/off. They don't know what the use case is; they just know they can control whether signals are killed or passed. Here is where ‘abstract’ comes in. -
What it brings to us ( Efficiency in developmenF Q
composing components8 ( Flexibilitc Q easy to make changes or variants, like in car manufacturing8 ( StabilityX Q qualified components work well anywhere8 ( Portability (Software as a product)X Q Can install it into somewhere else. It itself is a product may -
Why I make it To put it the Apple way...
All to create something wonderfuB Incredibly fluid scrolling (UI0 Instantly responsiv7 Effortlessly smooth experienc7 Rock-solid reliabilitI Beautifully designed with precision -
Rather than that... There is more to it. It’s fun.
Actually not clearly sure why I do this. Making this presentation made me reflect on myself. Still it’s processing, but it's strongly related to my values. -
‘It itself is a product’ This is might be a
key to me. I'm like 'I just don't want to make it for this purpose only. I would rather make it more efficient.' As one of the methods - making it as a library(component) -
What it is like making libraries It’s like making product.
When you build something for a specific need, then try to turn it into a standalone product. Considering the functionality of supporting various use cases. To do this, either one could be a direction adds a lot of customization parameterP makes it abstract (seemingly simplified) then lets consumers take ownership to utilize it. It's like when you make a switch for a home appliance, then you're also trying to make it into a product by creating several designs of it or making it super simple but with a beloved design. -
Abstract It! It starts from observing what’s actually necessary. Think
of various scenarios that could happen. Then identify similarities from a particular viewpoint! “analogies “thinking in concept "Software development is like building construction" -
Embrace a new perspective The process of abstraction from the
concrete requires a multitude of perspectives. These are methods I use naturally in my head& $ To draw analogies between what happens in a program and events in the real worldE $ Once it works, I create a solution for the real world and then bring it into the program. For example, I evaluated Pairs’ iOS architecture as successful by comparing it to how a ward office operates: long queues, verbosity, yet it works correctly, is scalable, and offers better resilience. -
Abstract thinking dissolves the walls between worlds You can think
of them in another world, then you bring them back into your world. -
Learning English also worked Both sentences mostly mean the same
but choosing the subject makes a differencB $ I was moved by this picturB $ This picture moved me This shows a really good example of changing perspective to think of things. And trying to avoid using the be-verb, that really works. This book taught me. Thank you. -
Everything works for it 8 Practicing guitaA 8 Playing tenniE
8 Managemen6 8 Whatever I've ever experienced could be a perspectiv) 8 “connecting the dots” -
Eureka moment When I get a new perspective for it,
my mind is overflowing with excitement and ideas. -
Abstraction requires use cases Thinking in abstraction is good for
brain exercise. Gives fresh perspectives and skills. In order to do this, it requires clear goals - Abstraction? For what? Evolving Pairs gives me opportunities to do this. Places where the means becoming the end has meaning. And gives feedbacks. Otherwise, it could be over-engineering. This is why I am engineering here.