“StrengthsFinder 2.0” book and assessment

April 23, 2018 Book Reviews No comments

StrengthsFinder 2.0 by [Rath, Tom]

The book

The book starts with arguments on why it is important to focus on your strengths versus your weaknesses. The author points out that for way too long industries are trying to “fix” people, and it has some benefits, but empowering people in areas they are best at produces significantly greater results. “We found that if your manager focuses on your strengths, your chances of being actively disengaged go down to one in one hundred. However, if your manager primarily focuses on your weaknesses, your chances of being actively disengaged are 22%, and if your manager ignores you, that percentage rises to 40%.”

“StrengthsFinder 2.0” then continues with introducing 34 different talents/strengths. The book provides brief description, a few examples of how person with this quality could sound like, and then proceeds with recommendations for individual and leader who manages person with this strength.

It makes sense to take an assessment before reading through these to know which ones to pay more attention to (though you are likely to just feel when it is about you).

The assessment

Do you know those online personality assessments where they ask you 10-20 questions and then give you a result, which says “You are 75.99% leader” or something. I am very skeptical of most of such assessment, even though, people, including me, like to take those. When I opened questionnaire that comes with the book “StrengthsFinder 2.0” I was positively surprised. It is a set of 177 questions and each of them is where you need to choose between two unrelated aspects of your personality within 20 seconds. So, from the first look, it was clear that it is superior to most of other. The book is based on 40 years of research and the assessment is taken by millions of people, so there is foundation for the assessment to be good.

Result of this assessment is 5 strengths that characterize you. You get results in a form of a document that with a description, example of how person possessing each strength would sound like, and 10 ideas for action for each strength. I was shocked by how strongly those 5 resonated with my personality, so I decided to embed few of such ideas into my own growth plan.

The assessment is available only if you buy a book (I listened to it on audiable.com) or if you purchase the access code. Link to assessment: https://www.gallupstrengthscenter.com/

My results

I keep these mostly for my own record, but what surprised me about the results was how unexpected some of those were. For instance, I never think of myself as competitive person. Though when reading through qualities of a competitive person and analyzing my own behaviour, I started to agree. This explains why I was so happy to win programming competitions, or hackathon in the past, but also why I avoid taking part in competitions where my chances are slim. Competitors don’t play to participate, they play to win.

  1. Competition. People who are especially talented in the Competition theme measure their progress against the performance of others. They strive to win first place and revel in contests.
  2. Focus. People who are especially talented in the Focus theme can take a direction, follow through, and make the corrections necessary to stay on track. They prioritize, then act.
  3. Achiever. People who are especially talented in the Achiever theme have a great deal of stamina and work hard. They take great satisfaction from being busy and productive.
  4. Analytical. People who are especially talented in the Analytical theme search for reasons and causes. They have the ability to think about all the factors that might affect a situation.
  5. Significance. People who are especially talented in the Significance theme want to be very important in the eyes of others. They are independent and want to be recognized.


No comments


Thoughts on the book “Mindset: The New Psychology of Success”

November 29, 2017 Book Reviews 2 comments

 

Mindset Book

Just recently, using a recommendation, I read the book “Mindset: The New Psychology of Success”. In the book, Carol S. Dweck argues that people can be divided into two groups. Those who have fixed mindset and those who have growth mindset. This is how she explains it:

 

 

Believing that your qualities are carved in stone — the fixed mindset — creates an urgency to prove yourself over and over. If you have only a certain amount of intelligence, a certain personality, and a certain moral character, well then you’d better prove that you have a healthy dose of them. It simply wouldn’t do to look or feel deficient in these most basic characteristics.

growth mindset comes from the belief that your basic qualities are things you can cultivate through effort. Yes, people differ greatly – in aptitude, talents, interests, or temperaments – but everyone can change and grow through application and experience.

Qualities of successful people and the growth mindset

Apparently the whole book argues that people with the growth mindset usually have better odds of becoming successful. Professor Dweck demonstrates this through the research she has done. Her team showed that the view people adopt of themselves has profound impact on their lives. This resonates with a famous quote by Henry Ford “Whether you think you can, or you think you can’t – you’re right”.

When I think of myself I cannot tell if I’m more of a growth mindset or of a fixed mindset. I am afraid to fail, but at the same time I am fine with trying things I could fail in. I like to prove myself, but at the same time I am open to learning and can easily admit if I don’t know something. Top grades in high school was my thing, but this didn’t stop me from taking part in math, physics, chemistry, programming competitions even I knew that at some level I will be stopped revealing that I am not that “all knowing”.

From my own observation, many successful people whom I met in life usually had an urge to prove themselves, which is explained in the book as a quality of a fixed mindset person. These people were so much afraid to fail that they put tons of effort into things they were doing. This might be one bit where I somewhat disagree with the author. Even more, it was somewhat ironical to read about desire to prove yourself as a fixed quality from a successful person who admits of being taught of fixed mindset in her childhood.

Of course, it is totally different issue when people try to prove themselves by pretending to be smarter, cooler, or whatever. I consider this to be a very bad behavior and in general a red flag for any relationship, including employer-employee.

Learning like children

In my opinion, the chapter on parenting is where the book really excels. The advice I took for myself is not to praise my children for how smart they are, but instead praise them for their effort. I strongly agree that it is important to develop children’s desire to learn things, to encourage their curiosity, and to work on their resilience to failure. It has been for couple of weeks as I try to use this advise with my daughter and it really works. My toddler daughter now seeks to put more effort into little things she does.

We all should be more like little children when it comes to learning and trying new things. A baby doesn’t question its ability to learn how to walk. Small failure is nothing more than a learning experience. While I was writing this blog post I also stumbled upon another idea that when we are young we are full of curiosity and intrinsic motivation but overtime it is replaced by extrinsic motivation in form of grades, ratings, incentive pay, etc. I think this idea by Edwards Deming plays very well with the ideas in the “Mindset” book, especially considering that Carol S. Dweck has done a lot of her research on students and children.

I want to leave you with this great illustration of the two mindsets.Illustration of Fixed and Growth mindsets


2 comments


WeAreDevelopers 2017 Conference in Vienna

June 8, 2017 Conferences, Uncategorized No comments

Few weeks ago I went to attend a WeAreDevelopers conference in Vienna. The venue is just 10 minutes walk time from the place where I live.

The official web page for the conference is here and all of the talks can be watched at youtube here.

I will go through all of the talks I watched with a very brief message before giving my thoughts on the organization of the conference.

Day 1

Opening. For such a small country as Austria a conference hosting 3500+ developers is a big deal. Chancellor of Austria (most powerful position) took the keyword and, to my disappointment, for the most part spoke in German. I think this would be fine if only this conference wasn’t advertised as an international conference. In any case it is admirable that importance of IT industry is acknowledged by the Austrian government.

Build a World We All Want to Live. This talk was a lot about the future and exponential growth. I’m afraid there not much of takeaway except of a sense of a motivational inspiration.

Challenges of Autonomous Driving. I first heard about Rimac concept car on TopGear TV Show. It was very interesting to hear about the Croatia’s concept car from engineering perspective. What I learned is that there are a lot more of a challenge that has to be addressed than it is advertised by the car makers such as Tesla, Honda, etc.

IoT & Advanced Analytics – Real World Challenges for Developers. Austrian railway company explaining how they use all kinds of detectors on their trains and how their data is analysed. This does not get anywhere close to using IA, though still interesting.

One ID to Rule Them All. This was supposed to be a presentation on identification methods (think passports, ID cards) but somehow the presenter talked about solar panels, exponential growth of technology, and near free energy. Not sure how these two play together, but the title was definitely misleading.

How Different Open Hardware is to Open Software. Interesting talk, but again misleading title. Speaker presented his robotic arm project and how it can be used by people without an arm. Takeaway: these days you can download some code, buy Arduino and 3D-print yourself an arm within hours.

The Early Days of Id Software: Programming Principles. I found zillion of youtube videos with the same title where Romero gives the same talk on different conferences. Best to watch would be this another video here. He goes through the history of Id-software in the talk. Takeaway: John Romero’s Principles for Programmers

Getting Computers to Understand Us. This was a presentation on NLP and AI that started with punchcards.

How to Design Human Centered Chatbots? Takeaway: I didn’t learn how to design chatbots but I understood that chatboat euphoria is on a downtrend.

The Future of Online Money: Creating Secure Payments Globally. This was about PayPal money transactions and security. Takeway: eliminating middleman helps in improving processes.

Less Process, More Guidance. Takeway: The Atlassian Team Playbook.

Day 2

Extreme Continuous Integration. Automic company presented how they do hundreds of builds of different components for multiple platforms continuously.

Continuous Delivery Journey @ Wirecard. This was more of continuation of CI and CD topic.

Monorepos in the wild. A story of going to one repository. Some pros and cons where presented with a message that monorepo != monoapp.

Rebuilding an Aircraft on the Fly. Yet another story, now about fixing CSS by Trivago company. In my opinion this was just a common sense story.

Javascript @ Netflix. Standards of JS and their life-cycle were explained.

JS @ Uber. About programming languages & architecture approaches at Uber. Things like NodeJs, Go, Python, and micro-services were mentioned in addition to JS.

The Artist and the Machine. A lightning talk about nice spiral graphs. Takeaway: I bought my daughter a spirograph toy.

Working Backwards from the Customer. Amazon explained how they start developing with a press release. If they don’t like what is written it might not make sense to start doing it. If they like what is written and it sounds cool they add more details, create more technical translation and finally this is converted into development. I believe this was my biggest takeaway from the conference in general. In software projects it happens very often that customer does not get what they want. Starting with customer and being obsessed with the customer is probably something that makes Amazon stand out.

Model-Minded Development. A presenter from Google talked about importance of having a good model between computer and the real world.

Customizing Railways to Individuality. National Austrian railroad company talked about their challenges. They are in business for 178 years and can be considered dinosaurs when it comes to software.

Scaling Open Source Communities. Tips and tricks of handling an open source project were given. A lot of insight into OS software lifecycle.

Angular, Google’s Popular Application Framework. A relatively simple demo of Angular framework was given. Takeaway: Angular will last longer than any other JS framework. Let’s see.

PHP in 2017. This was somewhat hilarious talk by the inventor of PHP. He talked about lots of performance improvements that come with PHP7 and how that can “save the planet”. Takeaway: This blog is self-hosted word-press. I upgraded the PHP version to 7 making my contribution to more sustainable future.

Developers Are Writing the Script for the Future. Definitely the highlight of the conference was a presentation by the creator of StackOverflow Joel Spolsky. This was inspirational talk and a great way to close the conference.

Organization and conclusion

Many people have complained about significant overbooking for the conference. It was very unpleasant to see organizers bragging about 3,8K attendees when there was obviously not enough room for all of them. There are some angry tweets and blog posts online, like this one WeAreDevelopers – A Mess of a Conference. I agree. It was very disappointing to find myself in crowd of people and not being able to switch tracks. Basically, if you decided to switch track you would end up somewhere standing on the side not being able to listed or to see. Second day proved to be much-much better, but who knows, maybe, this is because of some people simply decided that this conference is not worth their time?

In my opinion it was the second day that saved the conference. Better talks were delivered at the second day and more comfortable access to stages, food, and company stands was possible.

In any case, I’m really happy that such a big conference was organized in the city where I live now and that many well-known speakers from well-known companies came to talk. There was a lot to learn. I’m looking forward to #WAD2018.


No comments


2017: Where Do You Want to Be In a Year?

February 3, 2017 YearPlanReport 2 comments

Again, not to break the tradition, here is my resolution for the year 2017.

  1. Start getting up at 6
  2. Run 40+ times; hike 3+ times
  3. Lead a project at work to success
  4. Teach dauther basics of  skiing and reading
  5. Travel Balkan countries
  6. Quit coffee and social media
  7. Read 24 books
  8. Write 24 blog posts
  9. Win a T-Shirt
  10. Make github green
  11. Learn something
  12. Buy something
  13. Enjoy the life

This list is rather cryptic and unconventional. As they say, it is not that “SMART” and I agree. Fortunately for me, I’m the boss of my life and this is how I would like to put it for this year.

The road on a picture below appears to be smooth and straight. There are some shadows and lots of light in the end. Also, I don’t know if the road is still there where the light is, do you?


2 comments


What have I done in 2016

February 2, 2017 YearPlanReport 2 comments

It is quite late into the year 2017, but I decided not to break the tradition and write my yearly report.

When I planned my 2013 I had “the best thing that could happen” listed as I knew my daughter was coming. When I was planning for 2016 I didn’t expect to have a second child.

But here I am with my son just some minutes after he was born on 16th of December 2016.

Me and Theo

I’m really glad and looking forward to see him grow and build his own life.

Except of this main and life changing event, few other things happened: we have moved to slightly bigger apartment, and I made some progress in my career (more on that sometime later).

Here is the list of planned things and their completion rates:

  1. Run 2-3 times a week for at least 5 warm months.
    100% I ran 50+ times totaling 320km. Here is a nice post from me that some people find inspiring.
  2. Make start of the day more healthy and productive. Ideal scenario would be: get up at 05:55AM, drink glass of water, do exercises for 15-30 min, shower, some important task and/or planning for the day, breakfast, work… But I will consider this item achieved if I start doing exercises regularly even if it is only 2 times a week just for 10 minutes.
    15% This is too difficult for me, though I managed to be at work around 7:30 for two months or so and do exercises sporadically.
  3. Travel to the UK, Norway, sea side country, and do a car trip somewhere nice.
    100% Visited UK, Ireland, Georgia, Croatia and few other Austria bordering countries for shorter trips. We had to cancel Norway because of the the wife’s pregnancy, but it was equally compensated by a trip to Ireland and adventures mountains in Georgia.
  4. Spend one hour every day with my daughter playing and learning things.
    50% I’m bit shocked that I had this in a plan. Spending quality time with children is important and should be done without saying, but we neglect it too often.
  5. Count not more than 12 weekends in a year when we didn’t go out to do some activities.
    50% I kept track of these “bad” weekends and there are definitely more than 12, though, in part, it was caused by unforeseen circumstances.
  6. Learn 12 simple skills from other people. To achieve this goal I will first identify 12 people from the community and those surrounding me and chose some characteristic I admire.
    15% Didn’t work out. Maybe very few things from guys at work.
  7. Read at least 6 technical books.
    65% 3 books read. 2 half read.
  8. Watch at least 12 pluralsight courses.
    100% Watched more than that but probably benefited from few.
  9. Write a simple stock analyzing web site. It could have any set of features, point is to get something interesting running.
    0% I don’t count retarded attempt on it.
  10. Write any simple useful open source tool. I have WCF related idea in mind.
    0% Unless this git bash script counts.
  11. Learn at least two web technologies. I have NodeJS and AngularJS in mind at the moment.
    25% No activities on NodeJs, though some on Angular. More are coming in this year.
  12. Share knowledge more actively. Minimum would be to write 24 blog posts, answer 12 questions on SO, help few people online.
    50% 16 posts. 7 SO answers. Few comments on blogs.
  13. Acquire B1 German certificate, attend German course, finish entire German Duolingo tree.
    100% All of these completed. This also allowed me to acquire permanent residence permit in Austria.
  14. Learn English language prosody and fix pronunciation of vowels. Optionally attend a specialized language course.
    10% Few failed attempts.
  15. Save 24X my monthly spendings, go through 13 investment books I read in 2015 and extract notes, do reviews and write about them.
    30% Saved some money, not as much because of the move. Total fail on book reviews.

This gives me 47% overall. Apparently, I fall into the 92% category of people who fail on their year resolutions.

Nevertheless, I find this exercise of planning for a year to be useful. At least it gives a sense of things that you want to do if otherwise you are too chaotic.

I hope you all have had a good year and will have even better one this year. Happy New Year! (Yes, yes… I know – it’s February outside, but someone had to be the last to wish you “Happy New Year!”)


2 comments


My Dell Laptops History And New Dell Precision 7510

December 11, 2016 Personal 6 comments

Time has come to buy a new beefy laptop for my blogging :). This time I bought Dell Precision 7510.

Dell Precision 7510

I have a history of buying Dell laptops. You can call me a fan of Dell if you want, but really I just continue buying them because they work and I have never had any issues with them, except of when I spilled tea on my XPS 13 and had to replace keyboard and screen. I’ve made few upgrades to XPS16 (RAM, SSD, battery) and now it is being actively used by my wife for some photo editing and general home use. XPS13 in some aspects is as powerful as XPS16 and at the same time weights only 1.3 Kg. It is really easy to carry everywhere. When I bought it I said that it is “thin as “Mac Air” and powerful as “Mac Pro” but costs less”. Unfortunately over time I could not feel very productive on it. Even though I could do everything I needed, I couldn’t pleasantly run heavy IDE or VMs or play games that required dedicated graphics. It felt like I needed a proper workstation.

Decision making on a new workstation went terribly wrong. I spent around 8 hours comparing options:

Choosing Laptop

I was seriously considering desktop PC instead of laptop, but eventually leaned towards powerful laptops that can be easily docked if needed. I was choosing between different Lenovo and Dell (yeap, no Mac). I stopped on Precision 7510 because it is real working station. It comes with thunderbolt interface, it is highly configurable and it is a brand I used for a long time. Another reason for choosing Dell was pricing. Since I was buying at dell.at as a small business I was able to customize my purchase very granularity: removed unnecessary support and useless stickers, selected Ubuntu OS and cheap delivery – something Lenovo was not offering. As of hardware I have chosen to reasonably max those things that I’m not going to upgrade (CPU, GPU) and leave room for other upgrades (RAM, HDD). I didn’t choose 4K touch monitor, as I don’t think it makes any sense on 15″.

 

Here below are some specifications for all of my Dell Laptops:

Dell Studio 1535

DellStudio1535

 

Dell Studio XPS 1647

DellStudioXPS

Dell XPS 13

image

Dell Precision 7510

Dell Precision 7510
Intel® Core™ 2 Duo T5850 2.16GHz Intel® Core™ i7-620M (Prev Gen, 2 Cores, 4 Threads, 4M Cache, up to 3.33GHz) Intel® Core™ i7-3537U (3rd Gen, 2 Cores, 4 Threads, 4M Cache, up to 3.1GHz) Intel® Core™ i7-6920HQ (6th Gen, 4 Cores, 8 Threads, 8M Cache, up to 3.80 GHz)
LCD (1280×800) 15.6″ FHD Widescreen WLED LCD (1920×1080) 13.3″ Hi-Def (1080p) True Life WLED Display W/1.3MP 15,6” UltraSharp FHD IPS (1920×1080)
DVD Super Multi 8X CD/DVD Burner
2GB DDR2-667 8GB Shared Dual Channel DDR3-1333MHz

(originally 4GB)

8GB Single Channel DDR3-1600MHz 16 GB (2 x 8 GB) DDR4-2667 MHz (two more slots available)
320GB 5400RPM 256GB SSD (originally 512GB 7200RPM) 256GB SSD 256GB M.2 PCIe SSD (I added a second 512GB 7200RPM HDD)
ATI Mobility Radeon™ HD 3450 ATI Mobility Radeon™ HD 5730 1GB  GDDR3 Intel HD Graphics 4000 Nvidia Quadro M2000M 4GB GDDR5
High Definition Audio High Definition Audio 2.0 with SRS Premium Sound Wave Maxx Audio Some Audio
Dell Wireless 1397 WLAN Mini-Card Intel® 5300 WLAN Wireless-N (3×3) Mini Card Killer Wireless-N, 1202 for Video & Voice w/ BT 4.0 Intel® Dual Band Wireless-AC 8260
56 WH, 6 cell, LI-ION 85 WH, 6 cell, LI-ION 47 WH, 6 cell, LI-ION 72, 6 cell, LI-ION
Bought late 2008, alive and used by Mom for Skype, audio-jack bad, battery dead. Bought Sep 2010, heavily used, became loud, upgraded with RAM and SSD, battery replaced. Bought Nov 2013, actively used, no upgrades, screen and keyboard replaced because of tea spill, battery completely healthy. Bought Dec 2016, using it right now, added second HDD, planning for more RAM when time comes.

I have ran benchmark software on XPS16, XPS13, and Precision. While 16 and 13 were somewhat comparable, Precision speed rocked. CPU speed was 2X of 3X faster depending on calculation operations (floating, integer). GPU speed was 14X as compared to XPS13 and 3X as compared to XPS16. RAM was 3X of XPS16 and 1.5X of XPS13. SSD write speed was 2X of both.

Lots of numbers, but I can simply feel the difference. It is a pleasure to use a fast machine. Who knows what my fifth column will look like.

 


6 comments


Do not misuse or over abstract AutoMapper

November 27, 2016 AutoMapper, Opinion 15 comments

AutoMapper is a great little library every .NET project is using (well, lots of them). I used it for the first time in 2010 and wrote a blog post about it.

Since that time I observed few things:

  • Almost every project I worked on, that needed some kind of object mapping, was using this lib. In rare cases there was some pet library or manual mapping in place.
  • Almost every project had some abstraction over the library like if it was going to be replaced or like different implementation for mapping would be needed.
  • Basic API of the library didn’t change at all. CreateMap and Map are still there and work the same. At the same time performance, testability, exception handling, and feature richness got improved significantly. Last one, in my opinion, is not such a good thing as it leads to the next point.
  • In many of those projects AutoMapper was simply misused as code placed in AfterMap or in different kinds of resolvers would simply start containg crazy things. In worst of those cases actual business logic was written in resolvers.

I have always been of an opinion:

Less Code – Less Bugs; Simple Code – Good Code.

Having seen this trend with the library, I would like to suggest simplifying its usage by limiting ourselves. Simply:

  • Use AutoMapper only for simple mapping. Basically, one property to one property. Preferably, majority of property mapping is done by the same name. If you find yourself in situation when over half of your mappings are specified explicitly in ForMember method it may be the case for doing it manually (at least for the specific type) – it will be cleaner and less confusing.
  • If you have some logic to add to you mapping, do not add it via AutoMapper. Write a separate interface/class and use it (via DI) where your logic has to be applied. You will also be able to test it nicely in this way.
  • Do not abstract AutoMapper behind interfaces/implementations. I’ve seen abstracting this in a way that you need to create a class (empty in many cases) for each mapping type pair and somewhere there would be custom reflection code that initializes all of the mappings. Instead, use built-in AutoMapper Profile class and Mapper.Initialize method. If you still want to have at least some abstraction to avoid referencing AutoMapper everywhere make it simple.

Here is how I’m using AutoMapper these days:

Somewhere in CommonAssembly a very-very simple abstraction (optional):

Somewhere in BusinessLogicAssembly and any other where you want to define mappings (can be split in as many profiles as needed):

Somewhere in startup code in BootstrappingAssembly (Global.asax etc):

And here is the usage:

That’s it. I do not understand why some simple things are made complex.

There is also another advantage of keeping it minimalistic – maintainability. I’m working on a relatively new project that was created from a company’s template, as a result it had older version of AutoMapper abstracted. To upgrade it and keep all old interfaces would mean some work as abstraction used some of the APIs that did change. Instead I threw away all of these abstractions and upgraded the lib. Next time upgrading there simply will be way less code to worry about.

Please let me know if you share the same opinion.


15 comments


Synch Two Git Repositories Using Bundle File And USB-stick

November 16, 2016 git, Tools No comments

Imagine working on the same code base in two disconnected networks. How would you synchronize your repositories using rudimentary storage device, like a USB-stick?

Undeniably for such a synchronization there could be multiple solutions starting with very primitive manual copying of cloned repositories finishing with some specialized devices and synch processes.

I came up with something intermediate, until the situation with the setup of project changes.

git-bundle-synch-on-usb-device

Idea is very simple:

1. USB-sharing device, so that USB-stick can be shared with a press of a button (physical in this case)

2. git bash script that does the following:

  • Tries to connect to both repositories to identify which one is accessible
  • Fetches sources from available repository
  • Fetches sources from bundle file on USB-stick (git bundle file is like a zip file with history and all files)
  • Tries to merge these two folders with flag –allow-unrelated-histories so that history is completely preserved
  • If merge succeeds it pushes changes to available repository and recreates bundle
  • If merge fails, you would need to manually resolve conflicts and push

3. A task to trigger the synch script when USB-stick with bundle is connected (I do not have this one yet, but it is a next logical step)

If two repositories were available at the same time the same script (with modifications) could be used to synchronize them on schedule or trigger event.

Here is the code of the script:

 

I also make it available on github under MIT license. Hopefully it comes in handy.


No comments


Single Git Repository for Microservices

November 14, 2016 Opinion No comments

Just recently I joined a team. We write intranet web application. There is nothing too special about it, except that it was designed to be implemented as micro-services and as de-facto at the moment it is a classical single .NET MVC application. This happened for a simple reason: meeting first release deadline.

The design was reflected in how source control was set up: one git repository per each service. Unfortunately this caused a number of required maneuvers to be in synch and to push changes as team was making scattering changes in multiple repositories. This also made it more difficult to consolidate NuGet packages and other dependencies as all of them were in different repositories.

I think that microservices and corresponding hard reflection of their boundaries in form of source code repositories should evolve naturally. Starting with a single repository sounds more reasonable. If you keep the idea of microservices in you head and nicely decouple your code nothing stops you creating new repositories as you service boundaries start to make shape.

Taking this into account we merged repositories into one. There was only question of keeping source code history. Turns out the history can be easily preserved by employing git subtree command and placing all of the service repositories as subdirectories of a new single repository.

As a result, team is working much more effectively as we do not waste time on routine synch and checking who did what where. 

Conclusion: Theoretically micro-services should be implemented in their own repositories. That’s true, but in practice for relatively small and new project, with only one team working on it, single repository wins.


No comments


Book Review: “The Black Swan”

October 30, 2016 Book Reviews No comments

The Black Swan - Book Cover

A black swan is a highly improbable event with three principal characteristics: It is unpredictable; it carries a massive impact; and, after the fact, we concoct an explanation that makes it appear less random, and more predictable, than it was. The astonishing success of Google was a black swan; so was 9/11. For Nassim Nicholas Taleb, black swans underlie almost everything about our world, from the rise of religions to events in our own personal lives.

Description by the publisher

I have listened to the audio version of “The Black Swan” twice. First time at the beginning of the year and the second time just recently. The book is philosophical in a way. It is not very easy to fully comprehend conveyed message as author frequently diverts to fictional stories, terms in French, and thinkers that are long time dead.

There were two striking statements in the book “anyone can be a president” if someone like “these people can get a Nobel prize”. Sounds actual? Think of Trump vs. Clinton presidential race and Bob Dylan receiving Nobel prize in Literature if you are not reading this in Autumn 2016.

bill-and-hillary-clinton-discuss-becoming-president

This does not mean that Nassim Taleb is any sort of predictor or prophesy maker. He himself says that he cannot make predictions, instead he highlights over and over again that rare events that seem improbable do occur more frequently than most of us would imagine and at the same time it is impossible to come up with mathematical models that would somehow calculate probabilities for these events. Unfortunately, we cannot know what we don’t know, therefore the best strategy for any of us is to build robustness to black swan events.

Application of the ideas expressed in the book is very wide. Starting with building financial portfolio consisting of 90% of very safe investments and 10% of extremely risky ones, therefore exposing yourself to probability of catching a black swan, like Google or Facebook. Ending with applying it to your life by exposing yourself to variety of endeavors. Careful here: event’s consequences are even harder to predict than occurrence of such events.

There is one aspect of the book that I don’t like. The author almost throughout the book despises other people imagining them as aggressive apes and suggesting nasty things like putting a rat down someones shirt. I do not exclude that he imagines his readers in the same way: silly monkeys reading higher caliber philosophical work. This, though, does not disqualify his book from being a really valuable contribution to human knowledge, but, in my opinion, it is only thanks to the black swan event of him benefiting from the 2000 crisis that made him successful and subsequently allowed him to write this and other books.

Conclusion

This book is definitely worth reading. It may make you look at the world as sequences of improbable events that change everything around. It could also make you way more skeptical about the theoretical modeling suggested by economists and other tie wearing experts. The book is not an easy read. On the contrary, it requires a lot of attention and thinking. Maybe leave it for a time when you are in a “philosophical” mood.


No comments