10 Pines Blog

Learning Programming

Learning

Dealing with failure and frustration

I’ve recently finished my apprenticeship program here at 10Pines. The experience was way beyond my expectations. Really. I’ve learned much more than I expected. In order to show some of my experience during my time here, I was asked to write a post about something I’ve learned. I’ve decide not to write about the techniques or tools I have gained, but about the human aspects of this educational period, which include, in my opinion, two very important concepts.

2 Nov 2015

Caring about coding

craftsmanship

This is a repost of an article we wrote with our friends at 8th Light. See the original article here.

As a programmer I spend a lot of time in front of the computer. But despite appearances, I am not there. I am not in front of a computer every day for 8 hours drying my eyes and weakening my muscles. I am somewhere else.

2 Nov 2015

Tips for introducing yourself in a conference or 'the conference elevator pitch'

conference elevator pitch tips agile personal elevator pitch introducing yourself

It could sounds basic, but when you talk with people in a conference, you have to think quickly. So it’s very important to have in mind a successful path to a productive five-minutes chat. After being talking with a lot of people and making a lot of mistakes (since not knowing what to say about what our company do, to not asking how to contact him/her back); I’ve decided to write down a guidelines to introduce yourself and getting to know the other person, avoiding typical mistakes.

13 Oct 2015

Review of Agile 2015 @ Washington DC

agile agile 2015 agile alliance summary conference Washington

The organization & the conference

This was the biggest conference I’ve ever attended. There was 2300 registered people. 5 days of talks. More than 13 tracks in parallel every hour. Everything was in big scale. One thing that called my attention was the average age of the attendees; I’m used to see young people in the agile conferences in south america. But here, it’s really different; most of the people were around 4050 and even more. So I understood this conference and the US agile culture about software is in a later stage than in South America. And this is pretty interesting because you will find people who have been working with agile practices for more than 10 years. Even in the government there are a lot of projects working that way. So I think it is time to see agile software development as the “classic” way to develop software and not as the “new” way. Another weird thing for me is that the conference is designed for you to miss things. There is a lot of things going on at same time, beside the talks, you have a coaching clinic, lighting talks, TDD workshops, space jam, companies lounges with activities, boost, and more. So, I think it’s designed to cover all needs, but it’s impossible not to miss anything you are interested on. For a guy like me, who don’t like to miss anything, it was hard to be relaxed.

7 Oct 2015

Tests: Paving our way

TDD Tests Design

Three Months have passed since I started working in 10 Pines as a participant of the apprenticeship program. Although we covered different topics and technologies, one of the things that has touched me most during my short journey as a programmer is that you can actually use your tests as the documentation of your system (you read it right, I’m not insane). This was a breakthrough for me so I decided to write this post to share some thoughts about it.

Why do we write tests?

I’d like to start with a short reflection about tests and the meaning we give to them. It’s true, testing gives us security and confidence. It lights our way, allowing us to perform changes without blowing the entire system into pieces. However, there is another (and equally important) reason to write tests: It’s the place where we write down the things that we’ve just learned about the domain we’re modelling. Bearing this in mind, tests have become a compilation of my discoveries and that’s what they must reflect.

18 Sep 2015

Organizational Debt and The Romantic Dev

development organizations romantic opinion technical debt

Introduction

While thinking what I could write about, I remembered a distant sunny afternoon, back at the beginning of my professional experience. I left writings about what is now a possible future post and began to write these words…

18 Aug 2015

Enterprise Lean Canvas

agile

A few days ago, we were asked to estimate a new big extension for a previous application we developed a year ago. Since we had a strong deadline to send this proposal, and we couldn’t do it the way we are used to (through a Product Discovery Workshop), we decided to try an idea which was in my mind some time ago: a Corporate Lean Canvas, our customized variation to the original Lean Canvas [1].

13 Jul 2015

How to gently upgrade your Java application

migration java8 development experience

When I think about getting an upgrade I usually picture myself like this:

{% img /images/Feel_like_a_sir_in_hd_by_lemmino-200.png %}

But… as the time passes… I feel like Homer applying for the university, something like:

{% img /images/homer205ei9.png %}

Since in 10Pines we reached a successful migration I want to share with you our experience on the road. Also, I want this post to be as short as it can be in order to be handy and easy to read, so, if you have doubts please leave a comment!

15 Jun 2015

Java Interface Default Methods. What?

trait mixin java inheritance behavior interfaces

In my last post I’ve presented both traits and mixins, with the promise of identifying the Java 8 Interface Default Methods. So, let’s get on it.

First of all, if you don’t know what I’m talking about, read my previous post -and please ignore the fact that it took me almost half a year to write this second part :)

A quick summary:

  • Mixins: Abstract subclasses. You can call super from inside the mixin, and can define both methods and variables. Mixins automatically solves conflict by linearization (inserting the mixin in the method lookup chain from left to right).

  • Traits: Allow us to define behaviour outside the class, but don’t define state. The methods defined in the trait «have the same semantics» as the method defined in the class (Flattening property). It’s like they were copied into the class. You have to handle conflicts by yourself.

Now we can fully dive into Java Interface default methods.

19 May 2015

I do not want to do Agile

This post comes from a conversation I had with a client, let’s call him Joe. He was reluctant to adopt this new Agile Methodology that some other folks in the organization were suggesting. “I just want to put the business people to work with the developers and do the work” he said. Wait a minute. Is there much more to Agile? Not much to be honest.

Let me summarize what I think are the essentials to working with Agile:

15 Apr 2015