Internet started as an utopia but has grown to our third nature over the years. While we are still waiting for a poet on the scale of Baudelaire (yes, I’m looking at you xdaseinx) to vocalize our experience in virtual environment, Internet is quickly becoming as threatening to our existence and well-being as were urban environments and nature in times of the past. Spam, porn, phishing, identity theft, DDOS attacks, industrial espionage, and cyberwarfare are no longer just topic of science fiction, but the reality we live in.
And that’s also the reality where our children are growing up. I’m struck each time I see a child roaming Internet freely without any adult supervision. The same parents who would never allow their child roam back alleys of a city or dark forest by themselves, let their son or daughter roam Internet freely ignorant of all dangers preying on their child. And with every teenager possessing a wi-fi enabled phone these days and free-of-charge wireless networks children safety on Internet just got completely out of control. While several organizations are actively campaigning to inform the public of the dangers present in virtual worlds, the generation of children that’s currently in adolescence will most probably have to learn everything the hard way from their own experience, since their parents are ill-equipped to protect them.
This post was inspired by the yesterday’s visit of Zemanta by children taking part in LogOut & ReStart program. I hope we managed to inspire these children that Internet is not just a place of escape from the problems associated with the pain of growing up, but also the place of great creativity and endless potential.
A clear indication that an economy is in a dire state are programmers waiting for an employment at Employment Service. That’s the situation we are currently experiencing in Slovenia and I’ve come to understand it much better recently when we posted a job advertisement for a full-stack software engineer and got a stream of candidates relayed to us from the Employment Service of Slovenia (the official registry of people actively looking for work). While great programmers with a lot of experience still find job at software vendors with ease, candidates with less experience or potential struggle. Namely, several software vendors went bankrupt recently while others severely limited hiring, thus creating imbalance between supply and demand for programmers.
Just like the rest of Slovenian economy, Slovenian software vendors relied too heavily on government procurement and shady markets of southeastern Europe. When these markets imploded over the past four years, many (if not most) Slovenian companies received a serious shock. I believe that in the long run such shock is very beneficial since it will force Slovenian companies to develop innovative products and services, and not just develop whatever sells at the moment. But in the short run there will be only tears, blood, and sweat, since inadequate ownership structure, lack of capital, incompetence at product development, and poor sales capabilities severely limit possibilities available to Slovenian companies, both those developing software and those in other industries.
Let me conclude with a proposal/request to hiring managers at the few companies (such as Zemanta) that still employ new people. When posting a job advertisement, post it also at Employement Service. While stream of candidates that you will receive won’t be of such high quality as from StackOverflow, there are still quite many interesting people waiting for employment there.
On Thursday we staged a competition between Slovenian olympic team in informatics and Zemanta. We lost badly but it was fun nonetheless trying to solve programming tasks with well defined inputs and outputs. In elementary school I competed at programming competitions also myself. The best I could manage is to come 7th at national competition in 1988 (category of 5th and 6th graders). Of course, in these 25 years I forgot all the tricks needed to solve assignments typically given at programming competitions and such problems are never encountered in a day to day work of a professional programmer.
Seeing real programmers in actions made me think if the things we are doing in a typical software development company should be called programming at all. We rarely define new data structures, devise new algorithms, or process complex inputs. Instead, what we really do is we circumvent bugs, hire new systems, terminate legacy software, connect dispersed components, push data around, motivate decisions, set objectives, and track progress. I think computer programmer is a misnomer for what we actually do and we should start calling ourselves computer managers instead.
For almost a decade I watched with admiration some of my LinkedIn connections having 500+ people in their network. Yesterday, I’ve reached this milestone also myself and now I’m also a part of this club which isn’t so exclusive anymore. I joined LinkedIn already in 2004. At that time I was recruiting programmers for one large project and Matija Mazi suggested LinkedIn as a good source of candidates. I’ve been using LinkedIn ever since for recruiting and background check of candidates, and it is quite hard to imagine today that we could ever live without it.
While role of LinkedIn for recruiting is self-evident, it is becoming increasingly important also for sales. Namely, in sales it is essential to know who is the right person to contact. The bigger the company the harder it is to pinpoint the right person to pitch. Our sales guys, for example, spend quite a lot of time studying internal structure of potential clients in order to contact the right person. LinkedIn in it’s current form doesn’t expose explicitly internal relations in a company, but it’s still possible to deduce a lot from job titles of company employees. It might very well be that LinkedIn will extend itself also in this direction, though I don’t know if organizational structure is something that companies would be willing to expose to outsiders. Sales people all over the world would be delighted, though, if LinkedIn would provide them with better information on the right person to sell to.
We are doing code reviews for more than two years now and our code has substantially improved in this time. What has improved even more is the understanding of more people of various parts of our system. Namely, by sending a code review to a colleague you not only get a feedback about the code but you also inform the colleague about changes you’ve implemented. Code reviews are not all gold, though. We have identified at least one big shortcoming of code reviews so far which is false sense of security that code reviews give to the submitter.
Reviewing coding style, patterns, unittest coverage, and similar stuff is easy. Therefore most of the reviewers concentrate just on these aspects of the code review. But really difficult thing for reviewer is to understand whether the implemented solution is the right one for the given problem. To do so, the reviewer would need a complete understanding of the problem, in-depth knowledge of the system, and a very good grasp of the solution. All these would require quite some investment of reviewer’s time and therefore most of the reviewers only concentrate on stylistic and syntactic aspects of code under review while relying on the submitter that the code is semantically correct. The responsibility for providing the right solution for a given problem therefore remains with the submitter and getting “ship it” doesn’t change that in any way.
I attended TSstartup mentors meetup yesterday and I came away again impressed by the current generation of startups there. Not only they have some great ideas, but they also seem to be working hard and are not afraid of pivoting on their conceptions. Among these startups I was in particular impressed by the progress of ShowMeAround team. What they are trying to build is something similar to airbnb, but for sightseeing instead of lodgings. The idea is that many visitors are fed up with standard packaged tours and want to have pristine experience of a new place and actual interactions with the locals. On the other hand, locals who want to earn some extra money (e.g. students) can share their knowledge and love for their hometown, while meeting interesting people from throughout the world.
In my opinion, the only Slovenian startups with a decent chance of success internationally are the ones exploiting some particularity of our local environment. Ljubljana has a huge student population, it’s becoming very popular with visitors, and locals still aren’t annoyed by tourists. I think all these makes Ljubljana a perfect place to kick-off a service such as ShowMeAround. If I would have some 25K euros for an angel investment to make (unfortunately, I don’t) I would seriously consider these three young lads. I think they are up to something big.
Job interviews are not just a big time sink. They are also a great way to learn about trends and fashions in our industry from diverse set of people applying for a job position. A candidate I interviewed yesterday got me thinking about one such trend, the disappearing sysadmins.
System administrators were from the dawn of computing the interface between developers and bare metal. They were the ones setting up servers, replacing failing disks, configuring networks, installing system software, and doing everything required so that programmers could concentrate on developing application software. The advent of Internet and the rise of cloud computing is quickly commoditizing infrastructure and rendering classical system administrator jobs no longer necessary.
The response of many system administrators to this trend has been to become interface between developers and the new cloud computing infrastructure. So instead of editing linux or mysql configuration files, they are becoming experts in Amazon Web Services web administration panel. While such role might be necessary at the moment due to immaturity of cloud computing, I have doubts that the role of cloud computing sysadmin will exist for a long time. Personally, I’d advise sysadmins to become full-stack software developers and accept the fact that everything below application layer will eventually become a service entirely managed by third-party providers.
Thank you very much for your application. As much as we want to, due to visa requirements we are in no position to accept candidates outside of Europe or North America. I’m very sorry about such discrimination, but it’s beyond our means to do anything about it. I hope you’ll find great career opportunities nonetheless.
This is the response I gave to a candidate from Egypt applying to our job advertisement on Careers 2.0 by StackOverflow. The response made me sad and got me thinking how unfair my response to this candidate really is. He’s using the same technology as we do, he’s programming in the same languages as we do, his work is on display in the same Internet as ours, but him being born in Egypt effectively prevents us from employing him.
I understand that just opening borders and let people go where they want, would wreak too much havoc on status quo in this world. Still, I wish it will happen in my lifetime still that the non-sense of working visas disappear. Just like it was impossible to fathom 25 years ago that a Slovene could work without any limitations from Estonia to Portugal, it is beyond our imagination today to dream up that people could move freely from London to Capetown and work where their efforts are best appreciates and not where they were confined by their birth.
With Todd on-board we have started to put much more attention to transparency and accountability of our work. Consequently we have defined a few key performance indicators (KPIs) about target reach, revenue and monetization of our network. These KPIs are the most important ones for Zemanta as a business, but they are not covering all aspirations of Zemanta as a company. Namely, Zemanta is and plans to stay a company that takes a lot of pride in being technological advanced and staffed with top notched experts in their respective fields. We see our mission as a start-up to be not only finding a viable business, but equally important, to build a great company.
There are many aspects of a great company but the most pronounced is its capability to attract and retain great people. Therefore besides business-oriented KPIs, a company striving to be great should also introduce a KPI that measures desirability of great talent working for it. Unfortunately, in Slovenia we don’t have a list of most desirable software development companies to work for, that we could use to track and compare “greatness” of companies. I think we should start compiling such list and I call on fellow engineering managers to respond if they feel the same need and are willing to participate in this initiative.
it shouldn’t be there.
Unfortunately, it rarely happens that you have a clear cut case if a feature is used or not. In most cases you see some traction, but not enough to be certain that the feature is valued by the users. One thing you can do in such situations is to kill the feature and wait for the response of the users. If no one complains, you can be pretty sure that users didn’t appreciate the feature. But if they do complain, the user feedback will induce a fresh wave of enthusiasm about the feature within the product team and push the feature forward. Additionally, you can ask users advocating for the return of the feature, to participate in its development thus giving additional boost to product development.
Of course, such approach should be seen as a last resort and only used if you just cannot define the right usage metrics. If you keep on suspending and reinstalling features, even early adopters of your product will just abandon it altogether. But you also shouldn’t forget that the primary goal of a start-up is not to please each and every customer, but discover a product that customers would love. Therefore, killing a feature should be one of the more important tools of a product developer.