Wednesday, January 22, 2014

That was a long night

Wow, how hard is that! Getting back to work after quite a while. Things like setting up a Debian virtual guest seem to be tricky. No step can be made without a google search. And why am I not cheetah fast on my vim? Ups... the client is waiting, so at least there is a whip.

I stepped out of programming in Ruby when the version was... OMG! I've completely lost the track on software versions and it was just a year and a half. So I read magic like: The current stable version is 2.1.0. I remember a talk by (wait, what was his name), right, Matz! Yes, in 2011 in Berlin, he said something about Ruby 2.0. I've left around 1.9.4 I guess. Rails was before version 4. Jesus.

My market value went from 50k €/year to 6k (in programming field). I've changed, OK. Let it be. But still, I'm a third engineer in line after my grandfather and dad. So I'll fight for the family name as if it was a Game of Thrones season five.

I've travelled and I ended up meeting people from Jiva Institute. Ou, I remember – I stepped out of programming to become a human system engineer (gems, magic, reiki...) and now I go to India to work as a software team lead/brainstormer on Ayurvedic ideas. At the end, not everything got vanished, I've just lost the sense of a productive software developer. Well, the internal journey had to happen and it has a price. And value.

It's not that bad. I've looked through my past posts and different blogs I've managed. They surprised me and made me happy – there is nothing about myself. It's just work and interests. They are like a footprint that stands for – this guy was very curious about the world. That's good. Now it's just about time management and finishing tasks one by one.

In the meantime I wrote a book (releasing this year), I've sold everything and traveled with a backpack (which you can check at soldnpacked.com), I had a lot of fun and finished off gracefully like a brave Apache. Changing continents soon and posting on WIFI! Cheers from Peterborough, Cafe Nero.

Wednesday, January 11, 2012

Refactoring approach story

I have a feeling that everyone is omitting the shit. Or maybe they just not shout when they found it . Every time we find shit we need to shout - it makes others pay attention to it and stare at it for a while. It may happen that is was actually not a shit, but a similar looking pile painted in brown for some very important reason. Then maybe someone who made it can explain his/her intentions. Otherwise it should be cleaned as a regular shit.

Points are not given by stepping over the shit, only by cleaning it and being sure that some other shit was not dependent on it. If you think its faster to just run and jumping over all the piles than I asure you that you will find yourself in the air with a scary face expression, anticipating the fall into so cold 'deep shit' or 'big browny'. Jumping is allowed only when shit is not ours, or we cannot clean it. 'Cannot' refers only to a situation when the shit is not ours.

If you can't recognize the shit by how it looks, you need to smell it. If you are not sure of the smell you can ask others and then we will smell it together. It's always better than omitting it. To make yourself able to distinguish the shit from a not shit you need to be sometimes in the shit-free places. And learn how it is not to smell it. Otherwise you can just get used to it.

Sunday, August 28, 2011

The Clean Coder

I enjoyed this tiny book very much. Robert C. Martin lays down here many important issues that many programmers should be aware of.

I will not even try to write a review of the book - I just want to point out some things that influenced me. In general, I like soft-software books, I mean without the code, just mentoring. I like that Mr Martin is recalling the days of his early programming adventures, when he was a high school geek or 2* years old passionate hacker. That means to me that he has a distance to what he does even though he is a passionate and claims himself being a professional. Someone I want to learn from about programming.

Number one (and this an interpretation, not a quote) you don't have to be experienced to be a professional. I know it sounds silly. But there is, I guess, a space for unexperienced-professionals. What I mean is that everyone can behave professionally. Experienced-professionals for me are the ones who tried to behave professionally, they succeed, and they follow their path no matter what. The attitude is the power.

When I was 19 years old I remember working with so called "experienced" programmers. They were supposed to teach me, and I was supposed to learn. Thankfully there are many sources of knowledge and I could take a different path. I can easily see now the difference between an experienced and experienced-professional developer. Thanks to that book I can also define it.

Second thing is about prioritizing and learning. Never more ocasional priority inversion. If there is a task that is more important, don't do other one because it's easier. Don't even follow the internal dialog, about how right is it to work on another task while the most important one can wait a bit.

One sentence was really nice. It was about practicing after work. He recommends 3 hours a day (quite a lot I must admit). I will put it in bold: Practicing is what you do when you aren't getting paid. You do it so that you will be paid, and paid well.

And one more thing. If you don't follow TDD (or any other discipline that is as effective as TDD), you can stop calling yourself a professional. I like that he says that with no illusions, that there may be another way of being a good programmer who doesn't write automated tests for his/her code. No, there is not.

Anyway, I recommend that book a lot. I'm still on my way to be professional, but I guess that this book indicates one of the best ways to succeed.

And the cover is there for a reason, astronomy has a lot to do with programming.

Friday, August 12, 2011

Basic needs of programmers

If anyone thinks that the most important thing for programmers is the ability to code - they're wrong. Even if it is a super interesting project that involves millions of users it will fail if programmers have no possibility to meet their basic needs. And I'd like to stress the word possibility.



How many of us, programmers, were sitting in front of a computer for hours without eating, drinking or going to the toilet? Do you remember this project that you had once, when you just have to finish in three day and one test is not passing or you want to make this query run even faster that it could? Or just refactor the code before pushing it so it shines more that it needs? And you were this hacking-freelancer that will do the best project ever! Yes - a freelancer working from home.

It works completely different in the office. You start working with a coffee, water, little chitchat with everyone. You see people going one after another to the toilet, eating snacks, walking around. And then on of them brings the news: there is no running water in the builiding! OMG!! Panic!! How are we gonna pee after first three coffees? We have to go home!! Everyone needs to pee in the exact same moment! Dear God!! I didn't drink anything but maybe I'll need to pee! I have to go home! There is no water running!! NO WATER!!

Forget about programming. This is not freelancing at home, this is working in the office. Even if you don't have to pee, you will leave just because the toilet is out of order. And there is always that argument of Maslow's pyramid.

BTW. I need to pee (excrete) and I'm the only one left in the office... shit...

Thursday, August 11, 2011

Khan Academy subtitles

Thanks to sharing knowledge and open-community I discovered a very badly page ranked website called Khan Academy. Of course if I had followed TED more carefully I would have known about it before.

I mentioned open-community because it was Melodie, friend from Couch Surfing, who showed me the Academy. Moreover, we found it in a paperback Creative Commons magazine... just saying that I was there because of ECOOP 2011 (programming conference) makes me dizzy. Too much knowledge sharing! I will write a summary of ECOOP soon, but let me get back to Khan Academy now.

The Academy is simply a great place to learn. One teacher, good teacher, trying to explain the magic of math, physics, biology, chemistry, organic chemistry, astronomy, economics, banking and more in a very approachable... especially math. I realize that many people know about it, but I didn't so I'm still under its influence. By now I have gained around 130,000 energy points, and 67 badges! What a great way to make humans want to learn. Shame that I cannot share my rank using some kind of a widget.

As I finished a degree in computer science, I must say that the way this guy explains math is just awesome. Anyway... there are subtitles. Everything is subtitled in English, which is a base language for others. I translated first video to Polish! I was shocked when I saw that this is the first video translated to Polish on the Academy. Ever!

We Polish people need this Academy for our kids! It should be subtitled in Polish to terminate the stagnation of our education system! OK... I don't believe in that, but it can start something, can't it? Why didn't I have a teacher like that when I was in high-school? Or better, why the hell didn't my teachers know about it? It is already 5 years old!

I think I'll write a petition to students' governments of English Philology departments around Poland. Who knows, maybe together we can translate it in one term, cause by myself I'd need 46 years to finish...

Polacy, do roboty! :)

Friday, July 22, 2011

filet gem just released!

We finally found some time to finish the work on the gem for acceptance testing - filet. It's available via our employer github account: https://github.com/xing/filet

filet is a dsl for acceptance testing on top of Test::Unit.


Hope you'll find it useful!

Thursday, July 7, 2011

How to re-implement a cartesian product algorithm

Yes. So did I waste my time, or not? Of course not. I just got a big slap in my programming face. Un pollazo. I over-implemented a cartesian product, without even noticing it. But it's fantastic, I can learn every day :)
I was even showing it around to my friends at work. They didn't notice too! Maybe this algorithm could be used for something else. But I have no fucking clue where :D
Of course I learned a lot, but still, feel a bit stupid. Do not overdo and read more - that is the lesson of today!

Ou programming... my dear...