from my work as a developer
dailylog
hiring
Apr 10th
Our company is growing, when I had joined the company, there were working 6-7 people, right now after over a year there are 17 people working on many different projects and clients across the world. I didn’t expect how all this will go, what future will bring. I just made a move to change something. And it was worth to do that move
At some point we realised that to hire a new person, a team mate, we need a process. Not a strict, multilevel strategy like for example Google has, but something that allows us to improve who we hired, to minimise waste – waste of time when you make a review with improper person, when you ask question which doesn’t give you an answer you’re looking for. And so on.
Simple, straightforward process, easy to be adopted by any other team members as we quite often exchange who will do the review. There is one important rule here – we’re always making a review in two – to have a better overview and different points of view on the same questions and answers.
So we finished with a process where the first step is to send a CV to cv@softwaremill.pl, where it’ll be reviewed roughly and if accepted you will get an invitation for a review – over Skype of course
The second step is the review – we have a list of questions we’re using during the review process. The range is from informal questions, like what you like to read, what kind of hobby do you have, and so on, over strict technical questions up to agile related questions. As we’re inspiring to be the most agile company in the world, so our team of experts must be aware of Agile in all kind
When we ask questions we are looking for honest answers, if you don’t know the answer, just tell us. We don’t expect that everybody will know everything about anything
The review should give us answer to one important question: do I want to work with him on a project ? That’s it, no hidden tricky questions, just simple, honest conversation. You can ask questions as well, we answer them the best we can.
The last step is a project with simple requirements, you’re free to choose a technology stack. What you must to do is to present your technical skills, even if you are applying to be a Team Leader – you must write a code! Just show us what you can do, what a brilliant fancy code you can write. We’ll review your code and you’ll get the answers – you can disagree but …
At the end, even if you were hired by us, there is a golden rule of our CEO: “At the end it doesn’t matter who you hired, but to be able to fire him” ;-)
To show you some mercy, please watch that very interesting talk from TED: ”What would you attempt to do if you knew you could not fail?” before you decide to send your CV to us
a new layout
Mar 14th
I’m a Mac user, as you probably know, but I was using Mac in a wrong way – is it possible anyway?
The most frustrating thing when you start using Mac is CMD+W shortcut or CMD+Q is even worst because Q is next to W
Anyway, in my beloved IDE, IntelliJ IDEA I was using the old behaviour to close windows – CTRL+F4 (as I recall). It was again frustrating and slow. Such a key combination isn’t optimal to use, to hit those keys you must move the whole arm. Try and you will see and figure out that you’re doing that few hundred times a day – what a waste
… but there is a solution for that, not for everybody but for those who use at least IntelliJ IDEA 10.5. With that version a new keyboard layout aka keymap was introduced specially for a Mac users. It’s called Mac OS X 10.5. On the beginning is weird, you must very often use keymap reference (printed out and lying down next to keyboard).
It could take few weeks or months to get used it, but after that you become a real Mac user in case of using your IDE
You will gain a lot of fun and pleasure to use common Mac shortcuts in IntelliJ IDEA and you’ll never want to go back to the old time consuming shortcuts. Give it a try!
As usual at the end some TEDs. For a long, long time there were no interesting talks from TED – as for me of course, but today with a new newsletter I’ve got two very inspiring videos, I encourage you to spend around 20 minutes to watch them.
Questions no one knows the answers to
Larry Smith: Why you will fail to have a great career
what I learnt
Nov 25th
Do you remember my posts about the fourth question and fast thursday ?
Here is another constant behaviour for another day – friday with constant question: what you learnt (during this week).
Your answer can be related to your job or to hobby or to whatever you want. Give just one small example of what you learnt, it can be something small and funny or huge and very important
It’s up to you, but share your knowledge, make other start wondering what to do next, maybe you’ll inspire others to do something like you. It’s very informative attitude, you’re expressing yourself, showing you aren’t just a nerd
Ok, so what I learnt ? I remember two things:
- below 0 degrees it’s hard drive a bike, not because it’s cold, but because a glass from the helmet freezes and you see nothing on the road
- at last I understood what’s the difference between @Inject (JSR-330) and CDI (JSR-299), CDI bases on @Inject, but you cannot put equal mark between them
There were probably more, but it isn’t important to say about all of them, just two is enough. Please try, share your knowledge!
And as usual some nice presentation from TED – be smart, play games
a fast thursday
Oct 27th
Do you remember the post about the fourth question ? If so, there is a little backward of that. Some people like to talk, they talk a bit too much, especially in a case of the Daily StandUp. You should answer short and on topic, not to talk about what if … just answer the three questions: what I did, what I’m going to do, what blocks me.
The fourth question should be used to bit relax the discipline (it isn’t the Army
) , but overused it can have negative influences. To stop that, we introduced a fast thursday – the day without the fourth question, you must answer the standard three questions. Nothing more.
Some says, if you talk too much, you did nothing
So, don’t talk, answer!
Today I have another interesting presentation from TED, to sum up: “All right, so for some of you, this may be really, really out there.”
fourth question
Jul 27th
Many of you know how the Scrum’s Stand Up Meeting is going to be held. There are three questions you must answer:
- what did you do ?
- what are going to do ?
- what is blocking you ?
It’s quite obvious and after some time it’s getting bored also. So to change a schema you can add the fourth question. It was proposed by Pawel – our Scrum Master and I must say, it was a very good idea – think out of the box
What is the fourth question ? It depends … as say consultants
It shouldn’t be related to your tasks, it must be more about surrounding environment. Like for example: what kind of book have you read recently (not related to software development) ? or what was the lats boardgame you have played ? or what did you learn from the last week ? and so forth …
Why the fourth question is so important ? To break rutin, to express a different you, to show up that there is something other than coding
When people are laughing, sharing experience in different areas they’re socialize, they become more a team of friends instead of a team of geeks. We aren’t just geeks, behind we’re humans
This time no new interesting TED’s presentation, but if you understand polish language you maybe find something interesting in talks from Confitura 2011 conference. Enjoy!
extend or not extend
Jun 14th
That’s the question!
When you are managing a project using the Scrum methods, each of your tasks must be grouped in sprints or iterations. The whole team is preparing a sprint, estimating the tasks and fitting stories in a given period of time – the Iteration.
As usual, the estimates are just estimates
It’s always some kind of guessing … even if you spent a lot of time on the project and you know each line of the code and all the business behind (do you?). The problem is, there are many unrelated things that can happen. People can be sick, a build server can blow-up, a team member can left the company and so on and etc …
The reasons you cannot imagine and predict.
So, because of that should the sprint be extend or not ?
We can fail, we can move tasks and stories, we can spend hours trying figure out what was wrong … Or maybe extend the sprint for one, two more days, solve all the issues, close all the tasks. No one will be frustrated because of fail of sprint. We will not lost time for looking into the problems, we just passed over them. What do you think ?
At the end there should be a presentation from TED, but I didn’t get the newsletter yet, so I’m going to say how I work. As a member of highly distributed team which is working remotely, we use Skype to communicate. And because of that there is a drawback – you don’t know when someone just left the room and he / she isn’t at his / her desk. So, we use the short status messages (you can use “/me text” to change the status in Skype). The list is below, feel free to share it or extend!
- ś – śniadanie (breakfast)
- b – back (I’m back at the desk)
- brb – be right back (means I will be back in few seconds / minutes / hours)
- biab – back in a bit (means I will be back in few minutes / hours / days)
- bbiab – be back in a bit (means I will be back in few hours / days / years)
- o – obiad (lunch – in Poland not known)
- z – zupa (soup – if you eat)
- dd – drugie danie (second meal)
- out – out (means you finished the work for today and now you’re coding for pleasure)
Enjoy!
copy pattern
Jun 8th
Recently I’ve joined a new ongoing project. In theory it should have been easily jump into it, but as usual each project is specific. The team developed a custom framework to generate JSF view base on an entity class. The framework after first look is quite simple, but as always the devils is in the details
So, I’ve spent a bit of time to catch up what is real going on. The next thing I had to implement was an option to export entire view to PDF – there was already an example how to do it and I followed it. Just copied the source and started adjusting it to my needs.
That’s the Copy Pattern. It’s used very often when you join a new project, when you learn a new language, when you do something first time. You need a pattern to base on, to follow.
So, it isn’t a bad idea to use the copy pattern, but you cannot stop on that. After first step, after you grasped the problem you must apply another patterns – real software development patterns. Leaving the code as is after using the copy pattern is bad – we’ve seen it a lot in many places. The copy pattern is just a beginning, is the easiest way to get into the project.
And the beauty of this is that you can change the name of the class, extract methods, extract new classes – just before messing with a code repository, before posting too match changes,that no one will know what is really happening;-)
Don’t be afraid to use the copy pattern, but also don’t stop on it!
And as usual at the end a talk from TED, this time about a car for blind people. And about new control interfaces we can face soon
Enjoy!
reactivation
May 6th
I’ve decided to reactivate my technical blog (in Polish) hosted on Java Developer’s Network – why? I’ve stared missing strict technical entries and discussion over them. And there are plenty of english technical blogs out there, so I didn’t want to be another one here. I’m still planning to post some small examples in English, but larges one will be posted there.
Few weeks ago I was moved to join a new project and for last two weeks I was trying hard to recall how JSF 2.0 works. It isn’t an intuitive way and for a guy as me – who was growing up on request-response paradigmate of the Web - the whole components approach is a big fake
The frameworks are cheating us and the users, http protocol is stateless and over it we try to build a statefull application. Jsfize are flying in the air
What else is going on? A lot, I can say. A brand new Apache Struts 2 is out – the web page should be updated soon (on my todo list), also we’ve a few new very active contributors and a new PMC Chair. It looks like we’ve a new opening
The fourth thing, another we are working to prepare upcoming annual Warsaw Java User Group conference – Confitura 2011 aka Javarsovia. It’s a hard peace of wood now, but hopefully we redo it in something nicer
And the last thing – a new Agile conference in Warsaw is over the horizon – Agile By Example!
That’s it folks …. naha … what’s left is some new presentation from TED – not only software can be open sourced
not a live demo
Apr 18th
I like the idea when the Iteration is done and you have a lazy day – an easy friday. In my new project that’s how we finished the last week. We had the whole day to read requirements for a new iteration, we were able to do some administrative tasks and to prepare a demo – not a live demo
It’s a quite good idea – you don’t have to organize a room, invite people – forget about wasting time to look up for a best time and place for everybody. You don’t have to worry that something will blow up. You just sit and record what have you done – one demo per each User Story you have implemented. It must be short, 2-3 minutes with comments – this will allow people to follow you smoothly.
Juts all the demos on a server, collect all the informations and send an e-mail to everyone who was normally be invited to the room. People can watch your demos at any time, they can go directly to a demo server and do it yourself base on what they’ve seen. No one is frustrated or bored, they can just watch and give a feedback or ignore your e-mail and go home.
… but that isn’t your problem any more
a bit confused
Apr 15th
Yup, I’m. I’m confused because of lack of good TED presentations for last few weeks. Maybe I’m wrong and there were some, please feel free to show me them, because if so, it means that’s something wrong with me
Never mind, back to business. I was working hard for last few weeks to release a new Apache Struts 2 version. The first attempt failed, as during the Vote progress a bug was detected – so it’s good, better sooner than later
The second attempt is under Vote right now and I’m testing it – like a tester, by clicking here and there with the example Showcase application. It looks good, but Matt reported that tests for AppFuse are slower for version 2.2.3 comparing to version 2.1.8. Hmm… only two seconds but always …
I figured out how to check what can be wrong. In the latest version we’ve introduced mechanism to escape action’s name and method’s name as with Dynamic Method Invocation mechanism a hacker can use them for XSS attack. And as an Action is created per each request, that can slow down the whole framework. So I will use YSlow to measure load times for pages in the Showcase application, next I will rollback the changes regarding escaping and re-run the tests. And then compare the results.
Maybe it will give me the answer
Staying around the Apache Software Foundation – proposal to join ASF is almost ready for OGNL project – it’s a very good information as OGNL was homeless for some time. Many thanks to Simone for taking care of that, lot of good work!
Another thing, I’ve started or rather joined a new project or better an on-going project
It’s for financial industry – again someone could say – but it’s something different from what I had been doing for a previous bank. Anyway it should be funny and interesting – lot of JSF2ise, CDIse and JBossise stuff will be flying in the air
What else is going on ? We’re working hard to prepare the next edition of the Warsaw JUG Conference – Confitura 2011 aka Javarsovia – see you there in June. On the beginning of May the GeeCON conference take place and hopefully I’ll be there as well.
