DEV Community

Cover image for Is generalization killing creativity in the software industry?

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...
Collapse
 
ben profile image
Ben Halpern

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.

Collapse
 
silvestricodes profile image
Jonathan Silvestri

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.

Collapse
 
gypsydave5 profile image
David Wickes • Edited

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.

Collapse
 
fpuffer profile image
Frank Puffer

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.

Collapse
 
steveblue profile image
Stephen Belovarich • Edited

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 ✋.

Collapse
 
jamesmh profile image
James Hickey

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 !

 
steveblue profile image
Stephen Belovarich

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.

Collapse
 
erikaheidi profile image
Erika Heidi

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.

Collapse
 
flrnd profile image
Florian Rand

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.

Collapse
 
anwar_nairi profile image
Anwar • Edited

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.

Collapse
 
_hs_ profile image
HS

Had the same thought today. As a matter of a fact I came to conclusion that since would "die out" (exaggeratedly) if everything went down "industry style". Also considered writing blog about it but you got there first. So PATTERNS one main evil and also extremely useful thing. It speeds up development sooo much like frameworks. Also it limits developer a lot sometimes. However I tend to think that - "Clean Architecture" and TDD - alike got us here. Reason is that it complies with a lot of rules and helps a lot industry in certain cases that it actually does kill creativity in a way that people stop thinking for themselves and start just trusting books and others. It's done huge damage so far to the industry I would say. But it also separates people willing to go extra mile, or, their own mile I would say, from those careerist who are in IT because of money or job security or such. These guys start new companies with new ideas and set another standard.

Look at the industry now, microservices with netflix OSS in them running on Google stuff (K8s) using Python or functional things like Elixir with Kafka in the middle, hatting Java, screaming Agile is dead while loving TDD without any specific (personal) reason. Anddddd having AI or at least ML somewhere for their data.

This happens always and industry will never be the place for actual science or innovation. They do stuff for themselves to earn more money or just keep customers. Or just to offer new things. Most loved company for "inovation" was Apple and it took a lot of project rejected by Xerox or others. So innovative thing was making them approachable for customers.

Of course industry offers a lot in terms of new and useful. But those are discovered mainly while working on a product to sell and usually are byproducts by accident like C programming language.

I may get a lot of heat on this one but... I just thought could be useful to discuss.

Collapse
 
fpuffer profile image
Frank Puffer • Edited

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.

 
fpuffer profile image
Frank Puffer • Edited

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.

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao

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.

Collapse
 
maumay profile image
Thomas Ball • Edited

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.

Collapse
 
jeklah profile image
Jeklah

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.

Collapse
 
fllprbt profile image
fllprbt (Alkis Giouv) • Edited

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.

Collapse
 
sebbdk profile image
Sebastian Vargr • Edited

I might have misunderstood, but i don't see that generalization.
I do see more an more layers being added on top as programming becomes more verbose.

Au contraire, my impression was we were specializing, not generalizing.

from web developers to frontend, backend, database etc. engineers.
Among that you have language variants, patterns frameworks etc.

And below that several layers of tool makers doing everything from normalizing assembly code from different architectures to writing platforms like browsers, or operating systems.

And those are just the code programming related thing, on top of that you have UX, design, analysts. etc,

I have this poster hanging at home to remind me of how little i know:
flickr.com/photos/95869671@N08/362...

Collapse
 
samosborn profile image
Sam Osborn

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.

Collapse
 
steveblue profile image
Stephen Belovarich

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.

Collapse
 
lysofdev profile image
Esteban Hernández

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

Collapse
 
fpuffer profile image
Frank Puffer • Edited

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.

Collapse
 
lysofdev profile image
Esteban Hernández

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.

Collapse
 
zakwillis profile image
zakwillis

200% amen to that. Read Eric Frohm's a man for himself. Developers should be creative in being efficient, not getting tied up in process. To create something great takes huge sacrifice.