среда, 28 ноября 2012 г.

TODOs

TODOs
Our project is in the middle of development sprint, but has 3 //HACK comment, 16 //TODO's, 5 of them is //TODO: refactor this. Something goes wrong или все вообще зашибись©

четверг, 15 ноября 2012 г.

Simple, but genius things

Have you ever thought about spoon? How is it designed? Who's creator? Why does it have exactly that shape, not the other? Why european and japanese spoons are different?

All I want to say with that question is every simple thing is genius(and sometimes vice versa, but not always). Just think a little about it: you need something that would transport food from plate to your mouth. And it has a lot of features inside we never mention about:

  • it is universal, so we can use it for liquids and solid foods

  • it's safe

  • and it's really easy-to-use! Of course, you need some time to cope with, but since you handle it, it's getting normal to your life.

Another example. No, no, I don't mean iphone, everybody knows about it. Just an example from real life. I need to import my blog to my own site. Here's default solution:





If you didn't catch the idea, i'll show you:



That's it! I need to select my blog and press import! No more, no less! How could that be easier? Isn't that KISS principle?



Sometimes I think about things that could be better, easier to use. Today I went to bank and saw an awful bank terminal interface, almostly impossible to use. Tomorrow I'll take off underground and see ugly ads instead of simple but very effective beautiful posters. Month later I'll think about my app lifecycle and will find things that could be made much easier. And it should become my principle - do as simple, as you can.

среда, 24 октября 2012 г.

Your app status is In Review

"Your app status in review"(54 minutes ago)
I'm going to bed after reading new e-mail from Apple company with that subject. I hope it will pass review and tomorrow about 4000 users will get an update.

If everything goes ok, we'll have an update for lugat sozluk. Now it's called cep lugat and has redesigned icon(thanks a lot to our designer)!
What's new:

  • iPad support - some users will be really excited with this!
  • better detailed view - it's much better than previous one
  • automatic paste from copy/paste buffer - i heard this feature was implemented in Lingvo and is one of the most favourite users feature, so why not use that?
  • some bug fixes that will prevent from crash, slow working, etc...

What will be in next release?
  • more words - now it has just only osman words. I have some arabian-osman words, they will be added soon. And I would like to add turkish words to dictionary, but I can't find turkish-turkish offline dictionary. If someone has it(not a paper :) ), please tell me.
  • the most searched words - it's awesome thing when you try to memorize words.
  • [maybe] ANDROID version! I have just wrote some sketches and app seems to be working on android simulator, but i don't have any device to test, so it's delayed until I buy an android device.

пятница, 3 августа 2012 г.

Еще раз о дизайне

К сожалению, прописная истина:  Главная задача дизайна — удержать пользователя в те первые секунды, когда он про продукт(сайт, приложение, девайс) еще ничего не знает.


Никогда не забывайте об этом.

суббота, 30 июня 2012 г.

U do not need scrum

Well, I tried scrum. Honestly. It's a pretty good development method and very effective. If everything goes right, it may rapidly increase yr and teammates development speed. Everyone knows his tasks and may predict time to complete them. If something changes, there will be time to easily change direction of development and fix everything up.
Unfortunately, scrum has its own boundary of applications. In imaginary ideal world, where everything is predicted and anything u want to do u do from first attempt it is an ideal solution. But we live in other reality where above mean sea level may be positive and negative values, where sin or cosine values can be any value and there's no prohibition of taking square roots from negative numbers. And there's no place for creativity.

So, it's just words. Why do u need scrum? U need scrum:

  • when u have detailed, self-explanatory concept document
  • when u know exactly yr tasks
  • when u can estimate yr tasks
  • when u have an image of app in yr head  and may guess how it would work
  • when u need to quickly get results
  • when u need to see changelog of the app
But u do not scrum:
  • if there's no agreement with teammates about design and functionality
  • if u can not estimate yr tasks, because it's a creativity process depending on inspiration
  • and u can make over one task again and again
  • if u need to create something new, conceptional
Now I have six tasks on my board and can estimate three of them. Others are connected with design and may be overdone many times. So, if u ask me when I'm gonna finish my work and release next version, I won't give u any estimates or predictions. Even if I do, that will be not truth.

воскресенье, 24 июня 2012 г.

U do something wrong, man!

Sometimes I'm writing code and my inner voice tells me: "Stop! U do something wrong, man!" There are some signs of writing "code smell" I wanted to share with u. Of course, they aren't true in last  instance, but they are reasons to stop coding and think a little about what u're doing.

So, u do something wrong, man:

  • if u don't recognize ur code after two days u wrote.
  • if u have more than three level deep class inheritance
  • if ur unit-tests change the state(db, ini, etc...)
  • if ur unit-tests runs hours
  • if u have such class names as "AnotherClass, SuperSingleton, ButtonX", or variables like "a, b, buy_1, buy_2"
  • if u have 4-5 connected to each other singletons.
  • if yr task takes 4-5 days to complete.
  • if u have MVVMC instead of MVC
  • if u agree with everything with designer, yr investor and has no idea to change it.
I'm sure, to be continued...


When programmer needs to be designer

In any type of work or hobby inevitably comes such a moment, when u don't like to do. For example, I don't like drawing. I don't know anything about beauty, proportions, I hated every single minute holding brush in my hand in school. I'm negligent about clothes I'm wearing, I really do not care about beauty, about interfaces. It simplifies life.
Unfortunately, it had bad consequences. In past days every program I had written I used just myself. Now I'm writing code for others. And I know they don't care about how program works inside, what design patterns are used, how genius it is and what it really can do. They use program and if it doesn't satisfy their requirements, they will delete it or even write in review something like: "You're such a bastard, return my time, money, ex-wife back!". Their requirements are various, starting with program functionality, ending with design. 

Stop! Here's a big mistake. Firstly design and then functionality, not vice virsa! Program may be super-functional, but the first thing user sees is design. 
Are u knight of brush or not, u need to know how to design good-looking, user-friendly interfaces.
As a example, let me show some screenshots: both of them are ugly. The difference of them is in second line: in first pic, not all text are visible, but in second it's small. What of them is better and what changes can be made to make this screen attractive?