Profile

Cover photo
Wiktor Gworek
Works at Estimote
Attended Warsaw University
Lives in Kraków, Poland
738 followers|421,219 views
AboutPostsPhotosYouTube

Stream

Wiktor Gworek

Shared publicly  - 
Przez ostatnie kilka lat był szefem inżynierów Google'a w Polsce. Ale w zeszłym roku zmienił barwy. Wojciech Burkot, ściągnięty z Motoroli do pierwszego biura badawczo-rozwojowego w Krakowie, teraz
2
1
Wojciech Burkot's profile photo
Add a comment...

Wiktor Gworek

Shared publicly  - 
6
Łukasz Fryz's profile photoMihai Pora's profile photoWiktor Gworek's profile photo
3 comments
 
Comedy
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Knowing its history I can safely say that Google Inbox is finally shipped!

Congrats to the team.
 
Our biggest rethink of email since gmail, really excited about Inbox
3
Dimitar Ralev's profile photoJarek Potiuk's profile photoWiktor Gworek's profile photo
3 comments
 
ha! now I need to ask for extra invites too ;)
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Oh, irony.
 
The #Irony  collection: 
9
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Good to be back
12
Wojtek Smajda's profile photoMarcin Grabowski's profile photoTomasz Wiszkowski's profile photoGrzegorz Głowaty's profile photo
4 comments
 
Dostaleś tekturę?
Add a comment...
Have him in circles
738 people
Michał Wróbel's profile photo
Piotr Solnica's profile photo
Krzysztof Ostrowski's profile photo
EwElina Ośmiałowska's profile photo
Grzegorz Klusek's profile photo
Mariusz Gajda's profile photo
Leszek Tumkiewicz's profile photo
Adrienne McCallister's profile photo
Maciej Molerus's profile photo

Wiktor Gworek

Shared publicly  - 
 
 
I really like this article on the importance of thinking about performance during development, instead of ignoring it completely with the excuse of "premature optimization."

This is especially relevant for mobile development: performance issues that users don't even see can have negative impact on things like battery life; the resource requirements of our code has a direct impact on the hardware it requires to run well, which can completely push the product out of large markets; and user's expectations of the responsiveness of mobile applications tends to be higher than desktop applications even though they are running on slower more constrained hardware and often with much higher-resolution screens.

My own feeling on this is that as a professional software engineer, part of our job is to understand the actual trade-offs we are making during implementation.  There are many things you can do that will be significantly more expensive than other options, which really aren't worth whatever small advantages they provide.  Integral to being proficient at a language, framework, or platform is having a general understanding of the relative efficiency of the various ways you use it so that you can use that knowledge as part of the decision making process throughout development -- from design through implementation and maintenance.  That is not "premature optimization," that is making good use of your tools.

Another way to look at it is this: the hardware you are running on has a fixed amount of resources; when you are implementing your code, you are deciding how to make use of those resources.  Every decision you make that favors other things over efficient use of those resources is also a decision that is limiting the number of features you can deliver to your users, because those resources are no longer available to deliver features.  Of course this doesn't mean you should micro-optimize everything you do, but you also shouldn't ignore efficiency at all -- you need to understand the trade-offs you are making to create the best product for your users.  If you don't, there is a good chance another developer will make better decisions, and be able to developer a superior product that is able to deliver more or better features because they have a more efficient implementation without really sacrificing their productivity.

For example, there are a lot of things in the Java language that can lead to significantly less efficient results than other equally viable approaches.  Selecting between a standard or enhanced for loop can have a 3x difference in performance when iterating over an ArrayList; Java enums are tremendously more expensive in code size than simple static final ints; classes and objects have not-insignificant overhead, so if you take a very class-heavy approach to your implementation you can end up with a significantly larger code size and RAM footprint for your app.

All of these are things that you decide throughout the implementation of your app, but are very hard to fix later on.  This is not the kind of stuff you can throw under a profiler and see, "oh here is the hot spot in these 100 lines of code" and spend a day optimizing that.  Instead what you end up with is pervasive small performance problems throughout your entire app that add up to a large problem, for which a profiler will either not reveal any clear indication of a problem at all (because it is everywhere), or you will end up in an "oh sh*t" moment where you realize that fixing your performance problems are going to require changes all through your code base.

One experience that will always stick with me was when I was working at a previous company on a mobile operating system.  We had spent a few years working on it, had the system up and running on reference hardware, but were not happy with the performance we were getting.  We did a lot of profiling, trying to find what was causing it to be slow, but couldn't find anything significant.  Finally in desperation we went to the hardware manufacturer and asked if they could help out.

The answer we got back from them: "you are running too much code."  Out first reaction was, wtf, of course there is too much stuff being done, but what is it?  But the problem wasn't that there was some specific parts of the platform that needed optimization, it was that just generally all over the place the implementation was too expensive for the hardware it was running on.  It was blowing out the CPU caches all over the place, needing too many instructions given the speed of the CPU, etc.  Fixing such issues requires tremendous work across the code-base reworking how every little thing is implemented to get rid of overhead.  It is lots of steps of find 1% here, .5% there, and on and on, until you either run out of time or you eventually decide "good enough."  It is not a situation you want to be in at the end of your product development.

Our Android documentation has a lot of information on these topics for both Java and the Android framework that every Android developer should have a good understanding of: http://developer.android.com/training/best-performance.html
1
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
holy shit
NEW YORK — Nov. 12, 2014 — On Wednesday, Microsoft Corp. reinforced its commitment to cross-platform developer experiences by open sourcing the full server-side .NET stack and expanding .NET to run on the Linux and Mac OS platforms. Microsoft also released Visual Studio Community 2013, ...
2
1
Tomasz Wiszkowski's profile photoWiktor Gworek's profile photoKamil Skalski's profile photo
2 comments
 
They have no other choice if they don't want to be marginalized. 
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
House of cards. 
3
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Developaralysis.

After I left Google where all tools were standarized, I started to look for substitutes to get work done. Previously used tools were internal only, not always that fancy but worked more less flawlessly.

This article sums up my frustration. On the other side I'm so happy that I do mostly mobile where each month there is no change in paradigms.


http://techcrunch.com/2014/10/18/you-too-may-be-a-victim-of-developaralysis/?ncid=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29
Dear developers: Do you feel insecure because you're only fluent in a mere eight programming languages used across three families of devices? Does exposure to..
12
3
Maksym Motornyy's profile photoMichał Niczyporuk's profile photoGrzegorz Cempla's profile photoAdam Czepil's profile photo
 
Welcome to the club, fellows! :)
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Estimote Indoor Location is finally public. Phew
Estimote, maker of hardware beacon devices and a platform for managing software that uses beacon connections, such as Apple's iBeacon system, has just..
9
2
Wiktor Gworek's profile photoRadoslaw Piekarz's profile photoWojciech Burkot's profile photo
2 comments
 
At some point, yes.
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Google IO code labs available online.

http://io2014codelabs.appspot.com/
6
1
Wojtek Smajda's profile photoVitalik Zasadnyy's profile photo
 
eh ... :P musisz mi kolejną rzecz dokładać ... :P a jeszcze nie oglądnąłem wszystkich sesji z i/o które są dla mnie ciekawe :) 
 ·  Translate
Add a comment...

Wiktor Gworek

Shared publicly  - 
 
Bummer that it is not Cracow :)

Happy for Warsaw!
 
W Warszawie powstanie Google Campus!

Campusy Google to miejsca, gdzie przedsiębiorcy mogą zdobywać wiedzę, spotykać się z innymi przedsiębiorcami oraz budować firmy, które w przyszłości mogą zmienić świat. Jednocześnie przedsiębiorcy mogą korzystać z pomocy mentorów oraz uczestniczyć w kursach prowadzonych przez lokalne społeczności startupowe, doświadczonych przedsiębiorców oraz pracowników Google. 

Warszawski Campus stanie się częścią globalnego programu Google for Enterpreneurs skierowanego do przedsiębiorców oraz wielu innych globalnych startupowych społeczności.

Więcej informacji znajdziecie na naszym blogu pod adresem: http://goo.gl/w5fHy5
 ·  Translate
Technologia, produkty, kultura i informacje wewnątrz Google
3
1
Tomek Dziekonski's profile photoDawid Ostrowski's profile photoJavier Kohen's profile photoJulia Gryszczuk-Wicijowska's profile photo
4 comments
 
+Dawid Ostrowski How about the Warsaw campus?
Add a comment...
People
Have him in circles
738 people
Michał Wróbel's profile photo
Piotr Solnica's profile photo
Krzysztof Ostrowski's profile photo
EwElina Ośmiałowska's profile photo
Grzegorz Klusek's profile photo
Mariusz Gajda's profile photo
Leszek Tumkiewicz's profile photo
Adrienne McCallister's profile photo
Maciej Molerus's profile photo
Work
Employment
  • Estimote
    2013 - present
  • Google Inc.
    Software Engineer Wannabe, 2009 - 2013
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Kraków, Poland
Previously
Warsaw, Poland
Story
Tagline
Technology enthusiast, food lover, I like pretty things.
Education
  • Warsaw University
Basic Information
Gender
Male