RSS

Author Archives: gvaireth

Pay your debts

Episode 41

I’ve seen recently a nice movie based on actual events – the Deepwater Horizon. Aside from being well made and entertaining, the movie had an additional value to me. It was a story of what happens to a project with insufficient tests and short sighted management putting pressure to release unfinished product with monstrous technical debt. It blows up in huge ball of fire.

dwhepkSocial.jpg

Technical debt

Ward Cunningham coined the term technical debt while working on financial software. The idea is, that when developing software, you can often go in two directions. You can spend more time and implement the new functionality cleanly, soundly and with respect to existing architecture. If the functionality does not Read the rest of this entry »

 
1 Comment

Posted by on October 27, 2016 in Agile, Clean Code, Technology

 

Tags:

Building Microservices

Episode 40

I haven’t written anything in Books category this year, so it’s time to fix this. I have found Building Microservices by Sam Newman when browsing shelf of mini library next to the kitchen in our office, while waiting for my coffee. What caught my attention was a new and shiny book among bunch of uhm… mature ones. Besides, amongst all that noise regarding microservices in the industry, I thought it’s good to read some damn book instead of watching random talks from people shouting, “hey we did microservices in our company too, we are so cool and trendy!”. I like books, I’m old school.

Premise

lrgQuoting the book cover itself:

“Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures”

Yes, we can hear that everywhere now. You might have an idea that everyone has migrated to microservices or is in the process of it, but it’s bullshit. Most systems I’ve seen recently are nowhere near that, and it doesn’t seem to change anytime soon.  So perhaps it’s good to rant about this on and on, but also investigate the topic a bit further that “hey we have to do this, everyone is doing it, let’s do this!”. There are pros, there are cons and there are Read the rest of this entry »

 
3 Comments

Posted by on October 20, 2016 in Books, Technology

 

Tags: , , ,

Zawiercie Oct 2016

Episode 39

First thing that comes to mind, if you are not my coworker, is probably “What the hell is Zawiercie?”. I hasten to explain, Zawiercie is a city in southern Poland, and recently a place of integration trip of my company. How is it related to Java or software development you may ask? Well, the blog is about software and peopleware, and there was a lot of people from software house there.

Off we go

It was actually first time I’ve been on event of this type that spanned more than one evening. Three groups of buses started at different hours from our three offices: Wrocław, Rzeszów and Gdańsk in order to meet in the same place at roughly the same time. It felt a bit like going back to school days. People are trying to seize the rear of the bus, since it’s the place where cool folks sit. Teachers (uhm… I mean HR people) are in the front to lead and watch the driver. And pretend nothing wrong is happening in the back. I thought I will do some reading, but later I went to the back of the bus and first thing I heard was: “Hey, you seem to be too sober. We need to fix that right away, sit down”.

off-we-go

After arrival we met at the grill hall to eat something and Read the rest of this entry »

 
1 Comment

Posted by on October 13, 2016 in News

 

Tags: ,

Software Talks Wrocław and Gdańsk Sep 2016

Episode 38

pgs-software-talks

Software Talks is an event hosted by my company, PGS Software, in three cities in Poland where we got our offices: Wrocław, Gdańsk and Rzeszów. The idea is to meet, share knowledge, talk about various aspect of software development and IT in general, drink beer, eat pizza and have fun. I’ll tell you the story of how that happened this time. And the story of my first truly public talk.

Behind the scenes

I joined the company just two months ago, and few days later I’ve read an email from HR addressed to Java team asking if anyone wants to be the PGS speaker at Software Talks. I thought “what the hell” and responded. Apparently I was the only one to do so, thus I became the first speaker. The other guy turned out to be guest star Piotr Konieczny,  founder of Niebezpiecznik.pl, well known (think 100 000 FB followers) Polish website / company with web security content and Read the rest of this entry »

 
1 Comment

Posted by on October 6, 2016 in News

 

Tags: , , ,

Why work for a software company?

Episode 37

When I was looking for a new job recently, I had a strong resolution, that I’m going to work for a company that is doing software. Not telecommunication equipment that requires software. Not financial products that require software. Not trucks that require software. I wanted a company, that does the damn software for a living. And I will tell you why.

Case one: Technology Corporation

800px-base_transceiver_stationIt’s not bad, could be worse. Companies that focus on technology usually have some kind of understanding for engineers. Usually. There is the corporate aspect though with all the bureaucratic nonsense. The bigger the company is the more problematic the aspect of scale becomes. Some people are allergic to presence of nonsense, and probability dictates, that with scale, at some point you will encounter the nonsense and might get frustrated.

The urban legend says, there is a quarter million Euro device rusting on the shelf in a lab. It’s needed, but no one knows how to turn it on. The one competent guy who knew left the company because he was unable to get a hundred Euro rise. We can’t rehire him for a year because of policy. Meanwhile new people straight from university are paid more than that  competent guy who left, because Read the rest of this entry »

 
6 Comments

Posted by on September 29, 2016 in Misc, Recruitment

 

Tags: ,

Good commit message

Episode 36

Last time we talked about version control, so let’s elaborate a bit on that. One of the aspects of using version control is the possibility of commenting on changes you do in the code. Actually, it shouldn’t be only the possibility, it should be a necessity.

The Template

Git documentation provides a standard template and guidelines for commit message, let’s have a look.

Capitalized, short (50 chars or less) summary

More detailed explanatory text, if necessary.  Wrap it to about 72 characters or so.  In some contexts, the first line is treated as the subject of an email and the rest of the text as the body.  The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run thetwo together.

Write your commit message in the imperative: “Fix bug” and not “Fixed bug” or “Fixes bug.”  This convention matches up with commit messages generated by commands like git merge and git revert.

Further paragraphs come after blank lines.

– Bullet points are okay, too

– Typically a hyphen or asterisk is used for the bullet, followed by a single space, with blank lines in between, but conventions vary here

The News

The most important question to be answered by the commit message, is Read the rest of this entry »

 
1 Comment

Posted by on September 22, 2016 in Misc, Technology

 

Tags: , , ,

Git Intro

Episode 35

Since last time I finally showed you some code and mentioned storing examples on GitHub, let’s talk about underlying version control system and surrounding tools. Many of you probably used SVN as version control, especially if you worked for big corporation which are not that fast at adopting new stuff. Some of you perhaps switched to Git, maybe after leaving the corporation for smaller and smarter company. Well, that would be me right now :)

The System

logomark-orange2x“Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency” says the homepage.

Git is distributed. Everyone has his own copy of the repository on a local machine. You can commit to it and fall back to earlier versions without relying on central server as in SVN. What about the Holy Trunk then? In typical workflow there is a base remote origin repository, where all changes are pulled, acting more or less like the SVN server and source of truth.

Git is fast. Contrary to SVN, each time you change a file, Git creates new snapshot of this file instead of delta between two files and adjusts the commit tree accordingly. This can take up a bit more space, but Read the rest of this entry »

 
2 Comments

Posted by on September 15, 2016 in Technology

 

Tags: , ,

Angular Intro

Episode 34

Talk is cheap. Show me the code.

– Linus Torvalds

          I’ve talked about recruitment and clean code recently, but I haven’t shown you any (or almost any) actual code for some time. Time to fix this. In November 2014 I’ve written articles about GWT and Vaadin. Now I’d like to present you something similar on AngularJS, which seems to be the most popular JavaScript framework nowadays. And despite being JavaScript, it’s actually pretty good. Let’s take a look.

Overview

AngularJS-huge

          Angular is a JavaScript open source front-end, single page, web application framework maintained by Google.

          It provides a standard structure for front-end project part, like GWT, much as Spring provide standard structure for back-end part. Its simplification, because you can do the front-end in Spring too via Spring MVC, and the structure for entire project is also partly defined by Maven or other convention over configuration type build tool, but it’s an idea to start with.

          It is single page framework, also like GWT, meaning Read the rest of this entry »

 
10 Comments

Posted by on September 8, 2016 in News, Spring, Technology

 

Tags: , ,

Embrace the Change

Episode 33

Everything changes and nothing stands still.

-Heraclitus

          Software changes. Technologies change. Build systems change. Deployment environments change. Requirements change. Markets change. Clients change. Some people refuse to change though. How to deal with all that fuss without losing sanity?

Wind of Change

          This week’s episode of How To Train Your Java is hosted outside of the usual place, namely on my company’s tech blog, right here. Enjoy :)

Sweet Sixteen

          By the way, if you happen to be in Wrocław, Poland in four weeks from now and you are not afraid of Polish language, you are welcome to join my talk on principles in object oriented programming. I’ve titled it Sweet Sixteen (since there will be 16 principles). Its free, includes beer and pizza, you just need to sign up on the event page, right here.

          In the next episode I will do something I haven’t done for quite some time. I will show you some actual code. Stay tuned.

embrace the change

 
2 Comments

Posted by on September 1, 2016 in Agile, Sweet Sixteen, Technology

 

Tags: , , , ,

The Pomodoro Technique

Episode 32

          I was recently attending a talk about planning stuff, and one of the aspects of it was an introduction to time management method called The Pomodoro Technique.  I’ve decide to try it myself and share some insights here.

The Idea

                The idea is simple and involves a timer and some discipline.

pomodoro

  • Decide what should be done.
  • Set the timer to 25 minutes, the interval is called a Pomodoro.
  • Work on the task until the timer rings. If you get distracted, just write it down, but get back to the task at hand immediately. Try to shield yourself from any possible distractions as much as possible.
  • Take a short break (3-5 minutes), stand up, walk, get something to drink, do a quick exercise. Anything that is not related to the task and will help you clear your mind. Go to next Pomodoro. Repeat.
  • If you complete four cycles, take a longer break (15-30 min) instead short one. Repeat.

The Execution

                It requires some time to get used to. Especially if you find it difficult to focus on one task and constantly think about dozens different interesting things to do, like me. Before I stumbled upon the Pomodoro, I tried to work in 45-minute focus and 10 min break cycles. Like in school, more or less. However, it actually seems that 25/5 cycle is better for me. I’ve noticed that after longer cycles, I tend to drift away much more, especially towards the end. Also, school is over.

                20160823_161540Besides timing, there is an issue of shielding from distractions. I’m trying to shut down email, social media, phone and all that stuff, put headphones on. What to do if someone comes to your desk in the middle of Pomodoro? Well, it’s up to you.

                As a tool, I’m using tomato-timer. It’s simple and got all that’s needed. There are plenty other pages and a lot of mobile apps, some with fancy statistics, but I didn’t research them. It’s just a damn timer. When I get up from my desk I usually leave my phone, and I haven’t used a wristwatch since high school, so I usually mess the break timing. Before I leave though, I start the break timer on my computer. If it’s still on when I come back, I just mindlessly browse cats or something in the internet or play with radio controlled Lego excavator I keep on my desk. If I come back too late, well… I just hop onto another Pomodoro (shame… shame… shame…).

                Using timer has also an additional advantage. You don’t have to check the time periodically and think about whether you should take a break or not, asses your mental fatigue level, decide if you are in a good place to pause and all that stuff. When you hear the Pomodoro rings, just finish your current thought, line of code, sentence, or whatever you got there, set a break timer and get up. Or just leave everything and get up immediately if it works for you.

                In typical office conditions it might be difficult to sustain perfect cycles. There are irregular meetings, there are people that want to ask something in person, there are delivery guys that won’t show up at exact hours. There is The Flow. There are fuckups on production… Just don’t try too hard, remember it’s a tool to help you, not to restrain you.

                Some mentally old people might have objections that the Labor Code (at least in Poland) states that you should work 55 min and then you got 5 min break. Yeah, that might apply to a factory, not to software development. If your manager would make you fuss about that, tell him he should manage factory workers not programmers. Any smart company would understand that it’s just a number on a paper that HR has to keep signed in a binder, and we are here to get the shit done efficiently, not to sit at the desk for a given number of minutes a day. And, remind me, why would you want to work for a dumb company?

The Retrospective

                stay_focusedPomodoro works for me. Perhaps, to some extent, it’s a placebo to help you focus. You might think somewhere around “Damn I’m using a legitimate time management technique that has a name, so I should ignore this Facebook notification and keep working until the timer tells me to stop”. Intervals? People are different, some can focus for more than 40 minutes, but most probably can’t. Where is the efficiency threshold? I guess it requires some experimenting and might be difficult to measure. 25 minutes seems fine. Go ahead, try the Pomodoro. It’s healthy.

toothless-wallpaper-25

 
3 Comments

Posted by on August 25, 2016 in Misc

 

Tags: ,