Monthly Archives: November 2016

Wheel of Technical Debt

So we have loads of stuff still in our office from http://buildstuff.lt. I was just sitting with some of the people in the office and one thing may prove to be quite useful.

Technical debt is always an issue on teams. We always say we will work on it and don’t. There are other ugly tasks we deal with at well like writing that pesky documentation or a simple example that people can use. It is easy to get too caught up on getting new stuff out to deal with such tasks and they build up over time to the point they are overwhelming.

I have an idea that may help with this.

We have this in our office now:

spinner

The idea is to not put technical debt/documentation/etc cards in the backlog. Instead put them on the spinner, you can always put them directly in the backlog if you want to explicitly prioritize them. If you try to add a card and there is not space you must make space for it.

When you finish a task you spin the wheel. If it lands on a card you take it and do it, if not go to the backlog.

This has what I believe to be a few benefits. The first is that you end up with a fixed size buffer for these types of tasks. The second is that the wheel reaches an equilibrium on when things should be scheduled (the more things there are, the more likely you are to land on one).

And of course its a bit of fun!

Some of the guys are hopefully going to be able to give it a try or if you try it please let me know any feedback you have on it.

AI Develops Software

At BuildStuff.lt this year in Vilnius I moderated a panel. Normally when moderating a panel I have found my role to be to possibly reword original questions, follow up on points made by panelist, and generally direct the discussion. In this panel though there was one question that came up that I felt the need to actually give an answer to (even as a moderator) as none of the panelists answered similarly.

The question was (paraphrased): Artificial Intelligence seems to be moving at breakneck speeds, how long will it be until artificial intelligence starts actually writing the code.

 

My answer:

It is correct that artificial intelligence has been moving forward with amazing speed. 10-15 years ago it was viewed as being 25-30 years before a computer could beat a human at go let alone drive a car. Our advancements have been amazing.

That said software development is a completely different type of task.

Let’s imagine how things would work with an Artificial Intelligence that would create our software for us. The first thing we would need is some way to describe our business problems and what the software should do, we want something specific.

In order to do this I imagine we would want some kind of textual language. This language would likely need to support some basic concepts including basic boolean logic, arithmetic, and some form of control flow. We could then describe the software using this language …

The hard part about most systems is figuring out what to build. AI has a long way to go until it gets to that point.

 

Update: added image

commitstrip

Q/A from local media

I had to do a QA with a local paper this weekend. It will all be translated to Lithuanian but my wife pointed out it might be a good idea to put on the blog. Note many questions are non-technical

Lately IT sector and the programming services market increase so much. Which parts of the world, countries or regions, it is felt the most?
[can we reword the question slightly?]
To be fair it has been felt everywhere for IT services, IT services is a global market. Entire economies appear and disappear with speed unheard of in other industries.

Technology in general is moving at an exponential pace and there are few places in the world not affected by it. I was sent recently an article about how farmers in rural areas of Africa now use ten year old phones to better manage risk for their crops. Certainly these are the people who have had the largest change due to technology. [link http://www.economist.com/blogs/baobab/2011/10/smartphones-africa%5D
We currently stand at the edge of the artificial intelligence cliff. Our artificial intelligence progress is approaching a level where it can make a huge impact. The changes brought by this will likely be greater than the changes brought on by the internet.
Do Lithuania stands out in this context? Is a good Lithuanian programmer on a demand by employers?

Lithuanian developers are in large demand due many reasons. The largest driver is the concept of “nearshoring” or outsourcing work to a geographically close region. While nearshoring does not tend to reduce costs as heavily as outsourcing to the cheapest region, nearshoring has benefits in reducing other difficulties such as timezone, communication, and cultural issues. The Baltics in general and Lithuania specifically are perfectly situated for nearshoring from Scandanavia as well as Western Europe. The ease of doing business is far better than with competitors such as Ukraine or Belarus. An educated populace with high levels of English fluency further benefits Lithuania.

In public, we often hear that programmers earn salaries several times higher than the average in the country. Is it so easy to reach that kind of salary? What are the typical developer “career ladder”?

It is true that IT has much higher salaries than many other sectors of the economy. Much of this is due to the entering of the European Union years ago which allowed for easier capital flows and due to the nature of the work developers do. To clarify the latter, in many cases the physical location of a developer is not that important. Developers are thus competing in an EU/world wide market whereas many other industries are competing in a regional market. On the positive side this same trend towards equalization though moving slower has affected other industries as well which can be seen by Lithuania having strong relative growth over the last 20 years; 2015 was an all-time high GDP per capita and 2016 will likely be a new high.
Developer career ladders diverge greatly. If I had an enterprising young developer today ask me, I would recommend her to look at learning COBOL and mainframe systems as it is a forgotten skill highly in demand at financial institutions in London; I did say it was a global market. Most developers though tend to follow a path of working on what-is-popular. The obvious problem with this is what-is-popular changes quite often. 

Overall many see the high salaries in computer science and try to obtain them. Unfortunately the drop out rate for Computer Science in university is high [note I don’t have LT numbers but worth putting here]. Beyond that the career drop out rate over the first five years is also high. 

What people are seeing with the high salaries is survival bias. This same bias can be seen in the startup community. We see the successes but miss the many failures. Unfortunately especially in Eastern Europe though also a global problem the losses along the ladder are more prevalent for women. Currently the number of female developers in Lithuania is around 10%. This is not healthy.

If you do not have a love of programming I would be hesitant to try to become a developer for the salary.

How and why the programmer is important to accumulate experience, constantly update it? Is the fact that the developer is investing in their knowledge, expands horizons employers take?

This is best seen from a different perspective. If we were to talk about the need to accumulate experience and update knowledge for an accountant, the laws tend to change at a linear pace. For developers it is estimated that 50% of what you learn today will be invalid or useless in 5 years. How many developers were building mobile applications in 2007?
In such an environment acquiring new skills is the lifeblood of your career and from an employer perspective, the gateway to opportunity.
There are however some things you learn that are common throughout. This is the theme for Build Stuff this year. While there are talks on newer subjects many talks are on fundamental subjects that do not change greatly over time. Tom Croucher from Uber’s talk is a good example of this https://buildstuff16lithuania.sched.org/event/8jR5/tom-croucher-sh1mmer-how-to-be-reliable-even-when-things-arent-working.

Do programmers important to have a formal school leaving certificate? Perhaps employers still pay attention to the competence, experience rather than formal education? Why?

The level of formal education required depends heavily on the position being discussed. For many developer roles the ability to code and to deconstruct problems is far more beneficial than to have a formal education. That said many companies do like to use a university degree as a qualifying metric for hiring young developers as it signals some level of these abilities. 

Said briefly, a formal degree is a depreciating asset and is important while you are young, after five years of experience very few if any prospective employers will enquire about it. Instead they will focus on what you have done since leaving university.

Some of the best developers I have worked with came up not through the university system but through constant self-learning and engaging in open source. There is a huge amount of information available online today including courses from prestigious institutions as MIT and Stanford. A disciplined self-learner can quite easily get the same material as a university would offer for free or at little cost.

How do you assess Lithuania as a IT country capabilities? With who Lithuania need to compete? Is it realistic to become the Silicon Valley it is intelligent IT decisions? Why?
It becomes tiring of everywhere wanting to be Silicon Valley. Can Lviv become Silicon Valley? Can Lublin become Silicon Valley? Can Riga become Silicon Valley?

Lithuania will not become Silicon Valley. 

Lithuania and Silicon Valley have a completely sets of strengths and weaknesses. Lithuania has neither the investment culture nor the overall drawing power of Silicon Valley (Silicon Valley is about 40% foreign born and more than 90% of people are from outside of California). I would however argue that Lithuania should not aspire to be Silicon Valley.
There are other models that would play much better to Lithuania’s situation. As example in the US, Boston or Austin is a better model to look at. Boston does not have the massive venture capital system of Silicon Valley. They instead focus heavily on research as they have a very good academic system. The same could be said for Cambridge in the UK. The startups tend to be highly innovative with participants coming from strong academic backgrounds.
Another model worth mentioning is that of Estonia. While a much smaller country; Estonia came from a very similar history to Lithuania. They have for a decade made a strong effort towards making business easier to do while promoting local start ups. This model has been successful previously in other cities and countries as well, Singapore would be a good example.
The goal should not be to clone an existing system. Lithuania is a unique place with it’s own set of strengths and weaknesses. We must find our own system for Lithuania. Looking at others for inspiration is a good idea; trying to clone them is a terrible one.

This year’s conference “Build stuff” to emphasize that “old programming trends – new shapes. What does that mean specifically? Can you give examples to understand and not only for the professionals?
Yes the theme this year is “the old new thing”. Many of the ideas we deal with we have dealt with before. There is an expression in English “The more things change the more they stay the same”. Although the tooling that developers use changes at breathtaking speed, many of the core underlying ideas stay the same. So we want to focus on these core ideas.