Monday, September 29, 2014

Wasted Time

Today I have defined a gated check-in build in TFS.

In other words, when a developer check-ins his code, the code is built and if it passes correctly the code is checked into repository. We thought about doing something like that in my previous gig, but it was estimated as a couple of months work and was dropped. 

We did not have time to sharpen the saw. We were busy fixing broken builds.

Today I did it in TFS. I had TFS server running with source control. I had a sample code in C#. I had a build agent installed on another machine and file share server running. Nothing was installed on file server, it was plain Windows 2012 server.
  • Hmm, lets define a build for the path in version control. 
  • Pick "gated check-in" build option.
  • Few more options, like retention policy.
  • There is an option of where to put build artifacts. I need a new share on the file server.
  • Go to the file server. Define a new share. 
  • Back to the build configuration and put the new share. 
  • Save. 
  • Change a code and commit. 
  • Open a panel and see the build progress. 
  • Hmm, progress is printed...
  • Looking good...
  • There are 3 warnings...
  • Need to fix them later...
  • Done.
Look at the clock. 10 minutes passed.

I will say that again: the entire process took 10 minutes.

God Damn!!!!

Tuesday, August 26, 2014

Why your VP is just like a Godfather

Anything."

Tempting. Very tempting. It is like having a school bully to owe you a favor. Who would say "no" to you now? You have the biggest stick now! "You don't cooperate with me? I will talk to my VP!"

What people do not understand is that asking VP to solve your problems is like asking Godfather for a help. There are strings attached. More often in the end, you will wish to rewind the time to stay with your original problem.
You have found an unbelievable deal on iPad in your local store! You run there and buy one. You run home, unpack it and it does not work! The iPad does not work. Naturally, you want your money back. Do you go to the local "Godfather"?

I know what you are thinking: "But, my VP is such a nice guy".Well...
  1. When you present your case to the VP, do you know what he will say? The response might surprise you and not necessary for the good. What if he listens to you and to the other side, and decides that you are the one who is wrong? What if the Godfather decides that you don't get your money back? Are you prepared for this? What if the shop owner is his brother-in-law and you will have to pay him even more for the trouble?
    This leads to the second point:
  2. What do you do if you do not like the answer: "You don't get your money back!"
    What now? Do you go to police or a bigger boss (Senior VP)? Do you want to go to SVP with this problem? CAN you go to police with this problem?
  3. If you ask for decision, you comply with the decision. Today you went to VP and it worked. You have got what you've asked for. Next week, somebody else will ask VP to get something from you, instead of talking to you. Do you want this to happen? 
  4. You have asked him for a favor and now you owe him a favor. So, you have got your money back. All is good, until he asks you for a little favor: "You work in downtown, right? Please take this package to my friend there". Do you say no now? 
  5. Every ask for VP's help, it drains your power both in VP eyes and in eyes of others. Going "up" for a help, means that you cannot solve this issue alone.
    You draw a limit of your abilities by yourself!
    Next time, you will get less responsibilities, as everyone knows that you cannot solve such problems alone.
  6. You grow when you overcome obstacles. It has to be hard. If there is no pain, there is no gain. Bringing help reduces the pain, but it also takes away the gain.
  7. This is no fun.
    I loved playing Doom. It was so much fun. Up to a point where I've got to a level that I could not complete. I've wiped the level clean, but the boss. For some reason, I just could not kill them. Time after time, I've tried and failed. Tried and failed, tried and failed.
    Then, I've found a cheat for immortality. I have passed the level. The fun has passed as well. I don't think that I have ever completed Doom. It is no fun playing with cheats.
Not everything is bad about upper management thought. There are also good things about consulting with your VP:
  • get your problems solved quick
  • see higher-level view of the product
  • get to know more VPs, as usually they come in packs :) 
  • more exposure
  • feel more important
It is up for you to decide what to chose. Me? I always ask myself: "What would Keyser Soze do?"
If you look for me, I am busy solving my problems by myself...



Friday, May 30, 2014

Why Should Customers Buy Your Product?

In my new product, we are still trying to define the killer feature of the product. We are getting closer with a lot of sweat, shouting, cookies and coffee.

The question is "why should customers buy our product and not competitors?"

The answer, is not surprisingly: it depends.
Our product manager wants the product to do stuff that competition do not do. The reason they didn't implement those features is because they are physically impossible. Let's just say that one of them is a time machine.
I don't like being just a negative guy and saying people, even product managers, that this is impossible. I want to do constructive, so I've compiled a list of things that we can do which will be our IP. Or in other words, those are the reasons customers will buy from us instead of the competition.

  1. Algorithm, a.k.a. Idea. This is the most common thing people are looking for. Every geek I've talked about doing startup invariably talks about "having an idea". If there is no idea, there is no product. Google's page rank is a great example. Another great example is ...
    It talks to our engineering hearts, but even for Google it take time to come up with their second great idea. This would be, ehhh, news or maybe, glass? Why this IP type is rare? Few reasons:
    • There is only one "the best idea in the world" idea in the world. It is hard to find one. It is like winning a world championship.
    • In many cases, there is no such thing as "best idea". Is there a best software developer? Nope. Because they cannot be compared. How do you compare web developers and assembly nerd? How do you compare architect of operating system with a coder that writes optimized code (John Carmack)? You can't. There is no such things as best developer! Even though, TopCoder might disagree...
    • Most of the problems are not solved by one idea or an algorithm. Usually things are much more complex than that. Google could fail even with page rank. They had to build a huge datacenter, invent Map-Reduce, spread things around the world, build indexing engine, best crawler, hire enough good people, resist pressure from investors and etc.
    • Nobody is a world champion forever. Everyone will bite a dust in the end. The same is with (many) algorithms. There always will be a better one. If all you count on is the best algorithm, you will fail when the next "best algorithm" appears.
  2. Expensive Hardware or Software. Not every company can build a satellite, a tank or a ship. Neither every company can build a cloud or operating system. This is not only an engineering undertaking, but also a huge investment that only a few companies can afford. As a big company, we can afford to target big and expensive market, this could be our salient feature.
  3. Trust. Little trust is required to sell 1$ application to users, but how about 1M$ system? Will "Bank of America" even let some small company to present their product? Not very likely. I have been in storage startups before. It is damn hard to make a customer not only to trust your product with their data, but also to pay you for this. Microsoft, on the other hand, have bank's trust already. They do not have to deal with this sort of stuff.
  4. Get dirty. Do a stuff that others are not willing to do or simply offload the stuff others don't want to do. There is plenty of stuff that is not sexy, but it needs to be done and people are willing to pay for it. This is why data conversion companies are huge business, why there are some many project outsourcing companies and why IT is moving to the cloud. This is "buying free time with money" for IT guys.
    • Convert data from one format to another.
    • Connect to some old database.
    • Upgrade existing software to the new technology.
    • Support many different types of printers or custom made hardware.
    • Run Exchange servers or a version control. 
    • Buy licenses for Word and run file servers.
  5. Just works. This is nothing magical about this type of software. It just works. It has been around, probably version 7 or 11. It has all the right functionality and nice UI. It works fast, good and users love it. It is a result of years of development, feedback of many users, many versions, bug fixes and incremental development. Those years and efforts are the IP of "just works".
What is the right sort of IP for us? How will we succeed?

I don't know yet, but I do know what is success...


Sunday, May 11, 2014

5 most annoying things about changing expertise field

I've moved from storage to cyber security. Quite a move. Completely different field. I've been working in storage industry for about 12 years. Eyal has come to me saying "I'm doing this startup, join me". So, I've asked what it was about and he said Storage. This was 2000 and the startup was SANRAD. iSCSI was only beginning to happen and we were to ride its wave. Well, few years later iSCSI wave did not flip over FC boat, but I was working in storage ever since with a single exception.

I've been thinking bad things about security for a longer time. I basically, find it weird that people try to break other systems and other people defend those systems, when there are so many things yet to be done. We don't even have a good AI! No augmented reality! Damn, to play a video from your iPhone on SmartTV is not a simple task! So, the time being spend on fighting one another is seems like a such a huge waste. 

Apparently, it is a big business now. I've got an offer to start a product and a group from ground up. This is not an offer I can turn down. So, here I am, working on cyber security project. In the meanwhile, I've compiled a list of 5 most annoying thing when you change an expertise:
  1. It feels weird not knowing stuff. Its like you are a fresh graduate all over again. I look around me and everybody looks much more experienced and knowledgeable than me (well, I have it all the time). It is weird instead of answering questions, ask them all the time about everything. Ask and translate even the simplest things: what is APT? Everybody talks about it, I have no idea what it it. It is exciting! This feeling was already worth the change!
  2. Not knowing the field. I actually not talking about the "things" of the trade, like what is maleware, how it penetrates, what are the stages of attack, what is APT and etc. Those are easy to pick up. The problem is the Industry. What is the history and what are the hot trends. What are promising products and what products are doomed because the idea is dumb. I have a good feeling and strong opinions in storage industry, but I have no idea in cyber security. This is critical and a major obstacle actually, as we are trying to decide on the killer feature of the product and all I can add to discussion is more question marks.
  3. Second thoughts. What if I've made a mistake of changing a field? Why didn't I stick to what I know the best? Why not make stay in the "expert mode"? There are pros and cons of course, and the main mean to relax is the thought that I can always get back. There are still doubts.
  4. Phony experts. The real problem is not the phony experts, but rather that I can't tell the phony from real ones. Both sounds the same with the same acronyms, both talk with confidence, both have years of experience. However, one is talking nonsense while other is talking wisdom. Who is who? 
  5. Crawling instead of flying. Learning is hard. I am actually waxed out after 5-6 hours of learning new stuff. I look at what I have achieved last week and it seems like nothing. I've learned a couple of things. Then I've found out that I've misunderstood one thing, so I had to re-learn it. In the same time, I am working very short hours, because I can't get any more new stuff in my brain. It is annoying! 
 Overall, it is really exciting :)  And I promise to write about it! 

What's in a title?

Senior, Principle, SDE II, Consultant and etc.
Many big companies have a technical career ladder usually with something like:
  1. Junior Developer
  2. Developer
  3. Semi-Senior Developer
  4. Senior Developer
  5. Principle Developer
  6. Senior Principle Developer
  7. Partner Developer
  8. ...
  9. Distinguished Engineer 
  10. Technical Fellow
Some companies, like Microsoft, get obsessed with those titles. In every major project you have to have a Principle Developer. Otherwise, how those simple Senior Developers could do anything?
You want to move to the next level? You have to prove that you are worthy. This gets into a many waste days hours discussing how this guys is a Senior and that guy is Principle, while this one is better.

EMC, my current employer, has a better attitude towards levels. It basically boils down to: "its not your business!"
In other words, nobody knows and pays much attention to the title/level. Why it is better? Because titles are basically like belts in martial arts.
The belt signifies that its owner trained for at least a certain amount of time and that he knows a specific moves. It does not mean that brown belt will always kick ass of green belt!
On average, this is probably true. In other words, if you take 100 green belts and 100 brown belts, pair them one with another, then most of the matches will be won by brown belts. It is still possible that the overall winner will be a green belt! Especially if this is previous boxing champ.

The point is that having a title does not make the person into a kick-ass developer. There might be lower-titled developers who are much more capable, but simply younger and didn't advance enough yet.