What future we want for our Software Industry?
Some notes, resources and links that helped me while preparing the talk
A few days ago I gave a speech at Codemotion Milano, about what I foresee as a “senior” developer for the future of our profession: fears, risks, opportunities and challenges.
Aa very personal and opinionated talk about the personal responsibilities that we – as software developers – have.
About the temptations we have to adopt approaches, processes and mental models typical of the Industrial era, instead of building our own “rules of the game” and decide on which values we want to ground our profession.
About the importance of the communities, the open source, the culture of making and sharing the knowledge, instead of simply re-sharing or re-using someone else’s work.
Below you can find some notes and quotes (with relative sources) that helped me during the preparation of the speech.
“the moment we finally stop thinking about projects like building process, and start thinking about them like collaborative learning processes, then a whole set of possibilities finally become clear” (cit. Alberto Brandolini)
“You are not paid to learn, but to build stuff!” (myself)
Programming is a LOT of problem solving. There’s a ton of stuff you need to know, and it keeps changing! It’s not something you can be truly great at unless it’s your main focus. You can’t be a “weekend programmer.” It takes years of practice to learn everything necessary to get beyond just a basic level where you can write short programs that work. No one has ever become a great programmer just by taking classes or reading books. It takes hours of practice. And contrary to popular belief, CS programs do not teach programming. CS programs teach theory.
Programmers are often treated like factory workers. People with no programming talent (and less business sense) are often in charge of projects. They think programmers are cogs in the machines. The truth is programmers are artisans and to get the best results from a project the wise thing to do would be to ask the people who are experts at programming how things should be done!
The great programmers realize that they’re not being paid more than the crappy programmers because management can’t tell the difference – and on top of that, they’re doing extra work to compensate for other programmers being below-par. And great programmers who speak up and try to change things for the better are often intimidating to managers, who often try to get rid of them (which is a general employment trend discussed in other posts).
That’s why is relatively easy to find programmers. The hard part is to find good programmers.
How the Other Half Works / Software Engineers vs. Managers
The first is that we lack “sheep dogs”. A sheep dog, in this sense, is a pugnacious and potentially vicious person who protects the good. A sheep dog drives away predators and protects the herd. Sheep dogs don’t start fights, but they end many– on their terms. Programmers don’t like to “get political”, and they dislike it even when their own kind become involved in office politics, and the result is that we don’t have many sheep dogs guarding us from the MBA-culture wolves. People who learn the skills necessary to protect the good, far too often, end up on the other side.
The second is that we allow “passion” to be used against us. When we like our work, we let it be known. We work extremely hard. That has two negative side effects. The first is that we don’t like our work and put in a half-assed effort like everyone else, it shows. Executives generally have the political aplomb not to show whether they enjoy what they’re doing, except to people they trust with that bit of information. Programmers, on the other hand, make it too obvious how they feel about their work. This means the happy ones don’t get the raises and promotions they deserve (because they’re working so hard) because management sees no need to reward them, and that the unhappy ones stand out to aggressive management as potential “performance issues”. Not to be passionate is almost a crime, especially in startups. We’re not allowed to treat it as “just a job” and put forward above-normal effort only when given above-normal consideration. We’re not allowed to “get political” and protect ourselves, or protect others, because we’re supposed to be so damn “passionate” that we’d do this work for free.
What most of us don’t realize is that this culture of mandatory “passion” lowers our social status, because it encourages us to work unreasonably hard and irrespective of conditions. The fastest way to lose social status is to show acceptance of low social status. For example, programmers often make the mistake of overworking when understaffed, and this is a terrible idea. (“Those execs don’t believe in us, so let’s show them up by… working overtime on something they own!”) To do this validates the low status of the group that allows it to be understaffed.
Executives, a more savvy sort, lose passion when denied the advancement or consideration they feel they deserve. They’re not obnoxious about this attitude, but they don’t try to cover it up, either. They’re not going to give a real effort to a project or company that acts against their own interests or lowers their own social status. They won’t negotiate against themselves by being “passionate”, either. They want to be seen as supremely competent, but not sacrificial. That’s the difference between them and us. Executives are out for themselves and relatively open about the fact. Programmers, on the other hand, heroize some of the stupidest forms of self-sacrifice: the person who delivers a project (sacrificing weekends) anyway, after it was cancelled; or the person who moves to San Francisco without relocation because he “really believes in” a product that he can’t even describe coherently, and that he’ll end up owning 0.05% of.
Automation / The Grid
In Spring 2015, The Grid will revolutionize how you develop your website. The new blogging platform for the future uses artificial intelligence to automatically design and enhance the content of your website, tailor-made specifically to you. The in-progress system will require no templates, no grids and no walled gardens. The Grid ‘s autodesign works so that when you post to your site, our engine measures and mangles your content beyond recognition and spits out a beautiful site using best practice design principles. you can request for the site to drive sales, increase customers, expand your network or include e-commerce. Time-sensitive recommendations ensure you get up-to-speed suggestions of related content around the web. Content production and graphic design are two targeted skill sets that we expect — in the digital age — to evolve hyper-congruently, but this is not often the case. Humans can excel at one without the other, but our digital facade relies heavily upon both. With a responsive design algorithm, you don’t have to worry about how your website will look across devices. Your site will automatically adjust to every browser, and across mobile and tablet versions.
This is not another do-it-yourself website builder. The Grid harnesses the power of artificial intelligence to take everything you throw at it – videos, images, text, urls and more – and automatically shape them into a custom website unique to you. As your needs grow, it evolves with you, effortlessly adapting to your needs. Want to add e-commerce? Social feeds? A different layout? The Grid just takes care of it. This is not a website builder. This is your personal AI web developer. Its first masterpiece is the website you’re looking at right now. Its next one could be yours.
More followers, more sales, more clicks. You can set a purpose for your site, write a call to action and sit back. Our AI will automatically test thousands of subtle variations to find the one that works best.
Uh-oh. We’re all out of a job. The Wizard of Oz has arrived.
The Grid Uses Artificial Intelligence To Design Your Websites For You
I’m 61 years old. I still write code. I love writing code. I’m very, very, good at it. So why aren’t there more 61 year old programmers? Because, 40 years ago, in 1974, when I was 21, there weren’t very many programmers at all. I estimate that the world, today, has twenty-two million programmers. One of of every 300 people is a programmer. In the US it’s closer to 1%. But in 1974 the number of programmers worldwide was vastly smaller, and probably numbered less than 100,000. That implies that in 40 years our ranks have increased by a factor of 220. That’s a growth rate of 14.5% per year, or a doubling rate of five years. If the ranks of programmers has doubled every five years, then it stands to reason that most programmers were hired within the last five years, and so about half the programmers would be under 28. Half of those over 28 would be less than 33. Half of those over 33 would be less than 38, and so on. Less than 0.5% of programmers would be 60 or over. So most of us old programmers are still around writing code. It’s just that there never were very many of us. What does this imply for our industry? Maybe it’s not as bad as Lord of the Flies, but the fact that juniors exponentially outnumbers seniors is concerning. As long as that growth curve continues there will not be enough teachers, role models, and leaders.
Impact on jobs and income distribution
The Information Age has affected the workforce in several ways. First, it has created a situation in which workers who perform tasks which are easily automated are being forced to find work which involves tasks that are not easily automated. Second, workers are being forced to compete in a global job market. Lastly, workers are being replaced by computers that can do the job more effectively and faster. This poses problems for workers in industrial societies, which are still to be solved. However, solutions that involve lowering the working time usually find high resistance.
Jobs traditionally associated with the middle class (assembly line workers, data processors, foremen and supervisors) are beginning to disappear, either through outsourcing or automation. Individuals who lose their jobs must either move up, joining a group of “mind workers” (engineers, doctors, attorneys, teachers, scientists, professors, executives, journalists, consultants), or settle for low-skill, low-wage service jobs.
The “mind workers” are able to compete successfully in the world market and command high wages. Conversely, production workers and service workers in industrialized nations are unable to compete with workers in developing countries and either lose their jobs through outsourcing or are forced to accept wage cuts. In addition, the internet makes it possible for workers in developing countries to provide in-person services and compete directly with their counterparts in other nations.
This has had several major consequences, including increased opportunity in developing countries and the globalization of the workforce.
Workers in developing countries have a competitive advantage which translates into increased opportunities and higher wages. The full impact on the workforce in developing countries is complex and has downsides.
In the past, the economic fate of workers was tied to the fate of national economies. For example, workers in the United States were once well paid in comparison to the workers in other countries. With the advent of the Information Age and improvements in communication, this is no longer the case. Because workers are forced to compete in a global job market, wages are less dependent on the success or failure of individual economies.
Automation, productivity, and job loss
The Information Age has affected the workforce in that automation and computerization have resulted in higher productivity coupled with net job loss. In the United States for example, from January 1972 to August 2010, the number of people employed in manufacturing jobs fell from 17,500,000 to 11,500,000 while manufacturing value rose 270%.
Although it initially appeared that job loss in the industrial sector might be partially offset by the rapid growth of jobs in the IT sector, the recession of March 2001 foreshadowed a sharp drop in the number of jobs in the IT sector. This pattern of decrease in jobs continued until 2003.
Data has shown that overall, technology creates more jobs than it destroys even in the short run.
The net impact of the IT industry, although on one side is destroying old industries and existing jobs, on the other side is creating new jobs with an overall positive increase in the numbers of employed persons.
Source: http://en.wikipedia.org/wiki/Information_Age + http://www.slideshare.net/SERIWorld/does-technologycreatejobs
Mahatma Gandhi — ‘Be the change that you wish to see in the world.’
What normally happens is that someone that has always been a software developer, gets promoted to a more managerial/lead position. He has no preparation of any kind in this, so he simply replicates what he has always seen and adapts his behavior to what have been told to do: “go and manage people”. So the solution is to start to study today, to learn management (the new one, I mean). Don’t simply adopt way of doing you have seen in use by other “senior/elderly” persons at work.
We have a big responsibility towards the future generations: there is an army of young, junior developers entering the profession. They will adopt the models and behaviors they will see as “standards”. So we need to lead by example.
Also, within a few years the ratio between available developers and jobs positions will reverse, so we will not be anymore in the position to push for these values.
Future / Human Economy
Over the course of the 20th century, the mature economies of the world evolved from being industrial economies to knowledge economies. Now we are at another watershed moment, transitioning to human economies—and the shift has profound implications for management.
What do I mean by the human economy? Economies get labeled according to the work people predominately do in them. The industrial economy replaced the agrarian economy when people left farms for factories; then the knowledge economy pulled them from factories to office buildings. When that happened, the way workers added value changed, too. Instead of leveraging their brawn, companies capitalized on their brains. No longer hired hands, they were hired heads.
In the human economy, the most valuable workers will be hired hearts. The know-how and analytic skills that made them indispensable in the knowledge economy no longer give them an advantage over increasingly intelligent machines. But they will still bring to their work essential traits that can’t be and won’t be programmed into software, like creativity, passion, character, and collaborative spirit—their humanity, in other words. The ability to leverage these strengths will be the source of one organization’s superiority over another.
Managers are still using outdated leadership and organizational models – the ones designed to work in past economies. Most, as our data has shown, still treat employees as inputs to production whose variability is a problem – and as workhorses whose own ideas and impulses must be reined in.
The Three Essential Skills You’ll Need to Survive the Future of Work
In the future, we will need a diverse group of technologically literate people, skilled at needs assessment and design thinking, who are effective, economically resilient self-managers.