Is generalization killing creativity in the software industry?

Erika Heidi on May 29, 2019

Cover Photo by Tianyi Ma on Unsplash As software gets more and more integrated into our lives, the industrialization of its crafting process becom... [Read Full]
markdown guide
 

Oh! This is a really interesting topic!

My comment is a bit tangential:

A few years ago when I was thinking through ideas around dev.to and its place in the world relative to Medium, Twitter, and other very popular publishing/social which have similar features and very broad reach. I started having the realization that the software community was never going to be more than an edge case for them, as entirely generalized platforms.

The theme I came drawn to was that the center of this project's universe was the needs of the user, not the functionality of the platform. Medium centralizes around publishing, and has an inherently hard time delivering value and aligning interest with the software community.

As technology evolves, generalization sometimes becomes the best scenario. Personal computers becoming generalized in the 70s/80s/90s instead of strictly programming devices was a tide that rose all boats, but over-generalizing is indeed inhibitory. This touches creativity, as you have mentioned, and other facets of our interaction with the technology.

 

My mother hammered the "no failure" mentality into my head at a young age. It definitely made my transition into software engineering a lot harder, because I was so damn afraid to fail.

I still suffer from this from time to time, and I definitely have issues coming up with my own ideas, whether at work or if I want to do some casual coding.

 

Thank you Erika for the thoughtful article!

From a design perspective I think this is very interesting considering the switch from Photoshop (open ended tool) to Sketch (specialized tool). Sketch and applications that proceed it like InVision have toolkits that make it easy to duplicate Material Design components. I heard the same argument over and over again from designers that Photoshop wasn't intended for web design, it's a multitool that is mostly useful for photography. So here comes a tool tailored for the process of designing software. In Sketch the workflow is based on symbols, objects the designer stamps throughout the layout. This has the effect of creating consistency throughout the implementation of the design system, but it also allows designers to easily pick up symbols from existing design systems like Material Design and reuse them. In a sense, web design is having a "Helvetica" moment where UI is becoming easily readable, clean and minimal. On the other hand everything looks the same and we loose that creative edge that once defined each web site you visited, however crude it may have been in the Web 1.0 days.

P.S. I'll volunteer and take some risks ✋.

 

Love it!

I was listening dev.to/erikaheidito a phenomenal talk by Randy Shoup about building fast-moving teams/organizations.

One of the main points he makes in speaking about cross-functional teams is the fact that other disciples don't teach critical problem-solving skills as engineering does. Thus, engineers/developers become critical in helping think through business problems, questions solutions, understand complex ideas, etc.

And if we happen to use code to solve those problems, fine... 👍

Good stuff @erikaheidi !

 

Don't get me wrong: software engineering theory is important for anyone who wants to program professionally ... creativity is crushed by formal education.

This is sad to hear. I have no formal education in computer science or engineering; I have two degrees in the highly practical discipline of European Philosophy. What I would point out is that 'engineering' has the same linguistic route as 'ingenuity'; if your engineering degree isn't teaching you how to solve problems creatively then it's failing you.

Industrialization targets efficiency, normally by providing ways of automating processes or making them more efficient, so they can be executed in batches.

This analysis is correct, but I think your pivot to targeting 'formal education' is a misstep.

Automation requires generalization

If you were to ask me for examples of generalization in software development that stifle creativity...

  • Java
  • Angular
  • React
  • Spring
  • Material Design

'Enterprise' frameworks and languages. When a business invests heavily in one or more of these technologies they're ensuring that very little actual engineering will go on; all solutions will be worked on within these technologies, eventually all problems will be seen through their prism. Developers will become fungible - one Spring developer is pretty much the same as the next Spring developer for a certain class of business. Consistency is achieved both in terms of product and in the way it's produced.

That consistency is prized above simplicity and innovation.

Simplicity goes out of the window when SPAs are regarded as necessary in situations where serving up plain HTML would be enough.

And woe betide anyone who would try and solve a problem without using a standardised framework, you're going against "best practice", "nobody will understand your code", "you're just going to end up writing your own framework"... all from developers who are all, dare I say, perhaps suffering from Stockholm syndrome having worked within a framework for too long?

Is full of examples in the comments.

 

I am not sure if framworks stifle creativity.

Creativity does not mean doing whatever you want. You always need an outer frame that you normally do not leave but inside of which there is room for creativity.

Think of music. Most of it adheres to very strict rules of harmony, rhythm, form and so on. Still, composing and even performing music is undoubtedly a creative activity.

 

Why?

You are mixing what is a work/study with a personal life.

Let's say the job is tedious, monotonous and boring. So what?. I worked in a boring job. However, I play electric guitar, I paint (a little) and I love Zbrush. My work and my personal life are unrelated and I'm not alone.

One of my colleagues is a member of a punk band. He dresses formally every working day. Other of my colleague was a painter and others play classical music.

So, if we want creativity then we could look for our own means.

 

What if you could have fun in your job? Some people can't tolerate working boring jobs for their dear life. Everybody is different, and we still need creativity in all industries.

 

I don't think that this is the main point of the article. There are jobs where creativity is a hindrance. (Although there is some evidence that this type of job is slowly disappearing.)

But software development is essentially a creative activity. Even if you don't create new products but for example do maintenance of legacy code, it is creative problem solving.

If you have a developer job that does not allow and require creativity, there must be something going massively wrong.

Aside from that, separating work and private life is fine to a certain extent. But there are limits. I personally appreciate being myself at the job and not faking anything.

 

If you have a developer job that does not allow and require creativity, there must be something going massively wrong.

There are create jobs and jobs that don't require creativity.

In general, programming is :

  • X problem
  • Y solution.
  • Join X with Y and that's it.

However, let's say that we NEED creativity. Creativity is a hell of expensive, and it could tire everybody.

For example, the so-called "creative wall." It's not rare to find a writer that ran out of creativity; it's simply is not doing anything because he is unable to do. Now, how many programmers are out of creativity for days, weeks, or months and they are unable to work at all?.

Now, we could solve something using a creative solution or solve it by following-by-the-book but again, it's up to us and it is good.

Okay, I am probably using the term creativity in a broader sense than you are. Even if solution Y already exists for problem X, it typically requires some creativity to find it.

In my point of view, creativity is nothing mystical. It is the ability of our brain to generate more or less random ideas and then quickly rate them to find the better ones. Just like biological evolution but much faster.

 

The internet has become the vernacular. IMHO someone should always be creating in the space that is used by people in everyday life. Art is not just for the artist, art is for the people as well.

 

And they can and again, nobody is stopping to be creative unless it affects others.

Also, there is a difference between creativity and to act on your own volition.

For example, one of my colleagues was "creative". He wrote code like this one:

    pony.price=200;
    pony.discount=24;

where the pony is a variable that means a customer. Why he called it "pony", because he is creative. But it was stupid and it affected the clarity of the code but again, he was creative.

In this case, he wasn't creative but he tried to push his vision!. Anyways, he was forced to rewrite all the code. Teamwork > individuality.

And for another part, I worked with the guys of marketing. Marketing is a creative job and trusts me, it is not fun!. But again, marketing is not about to put your vision but to put something with a specific aesthetic and meaning.

I also find a "creative" guy on marketing, he tried to put his vision and style on some job. He was fired in a week.

We can agree on one thing. There is a clear difference between someone being creative and someone being an egotistical jackass. They don't have to be one in the same. A creative person can still be a "team player".

I don't think this is a prime example of creativity in our industry. In any case, creativity pushes the boundaries and does illicit reactions. You can certainly have an opinion one way or another. Take Apple for example. They have pushed creative designs for hardware again and again. Love 'em or hate 'em. Some people have even commented the computers look like they "belong in a museum". Mac computers are also highly useable for the vast majority. Hell, they even invented an entire market segment with the iPhone. Apple doesn't seem to be hurting because of this, they have money in the bank to spare. Taking a risk can return huge rewards.

 

Tough question, for me creativity does not born in a closed, generalized, and structured environnement.

So to fix this, we could do more and more initiatives like :

  • wednesday: free for all (to code whatever they want)
  • auditing multiple techs to solve a problem
  • taking advantage of a new project to explore new APIs, softwares, IDEs, ...
  • Personal side projects (so important IMO)

Organizations should also play a role in this by pushing employees to allocate a time for these activities. If you think about it, an active person might spend more time at his job than with their family and friends, or with themselves.

Allowing people to have some spare times will improve creativity because they will not feel caged at work for sure.

 

This is wonderful!

I couldn't agree more, and I think you touch on several of the main antagonists of creativity in our modern world: a failing education model, and more generally our post-industrial capitalism.

But, zooming into code and generalization:
One of the wonderful things about specificity is its volume when carrying both explicit and implicit meaning. The right word, in the right place, is what distinguishes poetry from prose. Generalization is convenient, for reasons you mention, but generalization is also the evacuation of meaning and intention from the specific and tangible. More poetically, it is the departure from art and the arrival at utilitarianism.

It seems like if we can say anything about human intelligence, it is a strategic oscillation between the general and specific. We need to generalize and abstract concepts well enough to linguistically categorize them, while at the same time we need to map those abstractions onto the hard and dirty objects we bump up against in the world.

This reconciliation between the linguistically abstracted and the specifically encountered is absolutely what is missing in computer science. I do not think that it is a coincidence that AI research is hitting a hard wall at exactly this point (moving from rote recognition into meaning-making), and I would argue it's partially because computer scientists are bad at balancing between the two extremes of generalization and specificity. We certainly see the costs of that failing on other fronts, not least of all creativity - as you so well describe.

 

Let's talk about creativity and web design. But first, let me show some examples:

Apple web site (early ages and today)

screenshot of apple website

Early days ebay (one of my favorites)

early days ebay screenshot

Standardization and generalization is not a bad thing. Those examples were the "creativity" of those days, and would you agree with me that general approach of web design is a lot better now?

Yes, it kills creativity, but creativity sometimes needs to be killed and that's why Design systems exists, to establish some rules to follow and avoid more early ages of ebay.

 

I feel that as years go by our industry has created jobs we had never thought of 5 - 10 years ago.

As we progress, there will definitely be a emphasises on creativity for software developers.

To learn through failure, blending diverse knowledge to create value by delivering product & services that comprise of this to solve hard problems.

 

Are you really saying that creativity is not trained in a degree program which contains an extensive amount of problem solving? Although I did not study computer science I feel that my creativity has been improved immensely by my formal education.

 

There is good reason for the acronym K.I.S.S; keep it simple silly!

Also this is the same reason Linux was designed the way it is and why people programming on Linux tend to stick to the way of thinking of "Make something to do one thing only, and do it well."

Lots of tools that are good at doing thier one job well is better than a jack of all trades tool. This doesnt mean things cant be automated this way either it just takes a bit more planning.

 

It is ironical that once I'd swear about things perceived as "coding axioms" only to find them problematic under certain conditions. In the software engineering process (similar to other engineering types), established methodologies do exist. Their dominion came after they had 'consistently' generated value.

This partially stemmed from the fact that a dev is usually a mere implementor rather than part of the vision. The biggest risk he could potentially take would lose him his job, but nothing else. Nevertheless, he is simultaneously part of something bigger (either that being an IT team or a crowd of consumers). I've been told that in coding one may do whatever he wants; in life not. I think this statement is wrong as things entwine.

Are we doomed then? Is the Industrialisation the end of creativity? Nah, disruption will always be achieved for those ready to partake the extra risks hence I do agree with your stand. It's just that (fortunately or unfortunately) there is no golden rule to achieve greatness. I would personally suffer if my work did not involve creativity but there are fellows out there who when needs be can do it without any problem.

Generalising, modelling processes, even leaving something undecided, imposes a decision on its own. How do we know what to do then? Deciding on being creative or not and to what extend, needs some creativity on its own. Interdisciplinary teams as some have pointed out may be a remedy. Of that I can't be sure yet; still trying to solve it for my own case.

 

Unfortunately, the powers that be have no interest in creativity and diversity as they see this contradictory to the idea of economic Darwinism.

 

I don't think that these "powers" exist. Software development can never be economically successful without creativity. Software development means solving problems, creating new things, researching, investigating, communicating, all highly creative activities. Projects and companies that ignore this are destined to fail not only humanly and socially but also economically.

 

Maybe I've been working in Fintech for too long but there is an absolute refusal by upper management to break the status quo. The way they see it, diversity is unnecessary until it's necessary. Once a unicorn startup proves success through diversity only then can the product of that diversity be adopted. Internally, developers are discouraged from deviating from company standards. I personally feel like any attempt at improving existing functionality receives an absolute no from my supervisors. There simply is no incentive to be creative from within when other companies will do it and either succeed or fail without affecting your profitability. In most large companies, there is no space for creativity that could endanger profit margins.

code of conduct - report abuse