What is the future of software development in next 10 years?
-
Some things that may happen: Software development becomes highly accessible. Everybody will be able to create software. It will be so easy. Just a matter of dragging, dropping and hooking up components/widgets. Software development becomes increasingly accessible but it will still be necessary to have a small group of professional developers around to write customized software. This group might be concentrated in "low wage countries". Software will be created from UML or some higher level language. A bit like what happened to assembler. Or something else entirely?
-
Answer:
The future of software development will probably have one or more of the following characteristics: - Highly parallel. Sequential code will be relegated to a minority of code. - High level. The trend in languages is to ease development at the cost of performance. - Functional. Functional programming gives so many advantages this cannot be ignored, whether this will happen in a pure or mixed language is not clear. - Logic programming will make a comeback possible, certainly more declarative styles. The driving force is the limit on single thread performance of CPUs. This drives the need for more parallelism in software. The current state of affairs of having a handful of cores will be a relatively small step to the massively parallel CPU future. Current imperative languages do not handle parallelism well, so we will have to develop a whole new set of parallel primitives that do work in a data-parallel fashion (think map/reduce/filter/scan). Programs will be built on this premise and start to change the way people think about programming from being a sequential flow-chart fashion to being parallel & data-driven. In concert with this some though will need to be put into how we describe the patterns of data-access the software performs. This will be essential to reducing communications overhead for parallel s/w. Functional programming languages already give us some of the above and are 'naturals' at doing so, especially when complemented with immutable data structures a la Clojure. As for most of your points above, completely disagree. Software cannot become 'standardised'. Software solves problems. Unless the problems are standardised, this will not happen. Graphical programming tends not to work very well (see LabView). It works ok for very simple solutions but rapidly gets out of control. Text tends to work well for this so I cannot see that changing.
Steve Tickle at Quora Visit the source
Other answers
Software will continue to be at least as complex as the problems it is used to solve. Software development tools will continue to advance making it possible to more easily solve problems which used to be challenging. Software will continue to use asked to solve increasingly complex problems as its demonstrated capabilities improve. There will be a continued need for software developers who are able to express problems with enough precision for a computer to solve them. As the use of computers grows the demand for developers will continue to expand and development on some level will become an expected part of more and more jobs. If we're lucky we will be able to keep software development only slightly more complicated than the problems it solves and accessible enough that increasing numbers of individuals who are not primarily software developers can make use of it. If we're unlucky demand for software development will continue to outpace our ability to supply developers who can execute it efficiently and we will be faced with an hugely wasteful system. Or maybe we'll build an AI who can write the rest of our software for us.
Jonah Williams
The tools for software development will improve for application developers but a large amount of software effort from large companies and foundations that maintain frameworks will go into employing software developers who would be maintaining and upgrading those tools and platforms. One can look at the number of IBM and Oracle propriety stuff that's been around for over 3 decades and would be for some more time. Programming languages will evolve and a lot of large scale and distributed features currently part of specialized implementations would be native to the programming language APIs. A lot of asynchronous event based programming concepts in I/O and other blocking operations will come into play at the application level and threading would largely remain a system level concept. JVM based languages will dominate the enterprise and server markets while Javascript has a good chance of being the de-facto standard from mobile to the web. Program verification will mostly get commoditized to mechanical but highly skilled turks unless someone cracks the theory on program correctness or every developer knows how to write good tests. *aas where *=Software, Platform, Infrastructure, Logging, Gaming, Analytics would be essential for everyone and aggregators on top of these would be useful for people in CIO/CTO roles. Includes consumer stuff like Dropbox as well. Rest think Amazon, Heroku, Google and what not! Git for source management whether on Github or privately hosted Mobile first for consumer facing apps, maybe even Google Glass, Connected TV or the Google Car be the hot thing to build an application for. This covers only part of the software development world and there's plenty more in every specific domain of software at the application level (Finance, Healthcare, Military, Telecom, etc.) and the systems (OS, VMs) and Networks/Security and Storage levels. And then there is also the likelihood of software overpowering mankind and making us do the unthinkable in which case, you should stop bothering about the future.
Pratik Mandrekar
Well, it depends on your time frame. However, in the medium term - 5 to 10 years - I think software development will continue to become ever more focussed on single purpose systems - embedded software, phones, tablets, games consoles, smart TVs, in-car entertainment systems etc. PC development will obviously not go away - but the focus will go towards building software for simple, ubiquitous devices. The app store as a way of distributing software is going to become ubiquitous; this in turn will almost certainly mean that reputation of software developers will become a big deal. Reliability, security, usability and performance will have a huge impact on the success of programs - because the app store is driven by reputation. Extensibility and maintainability will help developers turn a single hit into a long-running revenue stream. I'd like to think this will drive a renewed focus on software development tools and processes which promote those characteristics.
Neville Kuyt
I believe that the growth in infrastruture software for virtualization, user management, super-high volume analytics, etc. will continue. Such kind of software requires deep knowledge of systems programming. Business software vendors already offer myriad choices of commercial off-the shelf (COTS) applications with hooks for customization. Therefore, software development activity in IT shops will continue to shift to software vendors.
Anil Bhat
Looking back at the past fifteen years of computer technology, we have seen the dominance switch from desktop PCs to laptops to tablets and smartphones. Now, as Google Glass and other wearable devices use even more powerful and smaller technology, we are entering a new phase, and a new level of acceleration of the technology. Kurzweil, who is also an accomplished inventor and futurist, predicts that by 2029 computers will match human intelligence, and nanobots inhabiting our brains will create immersive virtual reality environments from within our nervous systems. I think that computers would be dominantly touch screen, portable, and great wifi, or free internet service. Nanotechnology would become more predominant, and a basic foundation, computers will be very mobile, and all computers would be taken over by cloud computing.
Michael Jordan
I don't think that software development would become a matter of dragging and dropping. Therefore, it won't be accessible to everyone. Software development can be divided into two main activities: "serving problems" and "serving computers"(/networks/operating systems/browsers/etc.). "Serving computers" is becoming easier with time for the most of us (of course, if you're not working of low-level programming or something like that). Gone are the times when we we all had to worry about pointers and memory management. Programming languages and frameworks are becoming increasingly high-level. But the "serving problems" part won't become any easier. We will still need a way to define the logic of solving these problems. Hence, we will still need a language to define this logic. We might use even more high-level programming languages in the future, but we will still need someone to think about app details and code their logic using whatever the tool will be popular in 10 years. In my opinion, most of us programmers are not really engineers, we are more of information architects who specify every little detail of the application behavior. Applications won't become any simpler, so making them is not likely to become a lot easier too.
Sergey Zuev
There already some very good answers but still, I found to embed my views in that by explaining latest trending term 'Software Language Agnosticism'.Whatâs this âLanguage Agnosticismâ software developers just canât stop talking aboutLanguage Agnosticism means choosing a language that best fits a particular task based on factors like ecosystem, developer skill-sets, performance etc. If you are a language agnostic aspirant, you need to transcend the boundary of a specific set of language. Image source: http://www.youtube.comYou may have heard the new buzzword in software development world - Language Agnosticism. Language Agnosticism is a skill that programmers develop by expanding their reach to different languages. Simply knowing a programming language does not seem to be the thing of present anymore to make a mark in the software development industry as a software developer. Since software development paradigm has witnessed radical changes in the past few years, language agnosticism appears to have become a kind of necessary skill software developers should have. Letâs talk about what Language Agnosticism is and implications it has for software developers.Why Language Agnosticism is being touted as a boon to software development?Software engineering is no longer restricted only to writing code. It requires much more than that, like finding an effective solution to any problem related to software development, script, algorithm etc. Software developers also need to know about https://byparker.com/blog/2015/language-agnostic-interfaces-for-software-development/. Language Agnosticism gives software developers the much-needed freedom to develop apps in their preferred languages. Letâs better understand this with an example: You are a Java developer, but you have a new development task ahead for which Ruby or Perl is more appropriate. So, despite being a Java expert, you decide to go with either Ruby or Perl since they best suit the development task you are going to take up. This capability of a software developer is called as Language Agnosticism.Below are the benefits of being language agnostic: You become a complete software engineer rather than simply being a Java Helps figure out how to use certain language features effectively Gives rise to nimble thinking A language agnostic software developer is a happy software developer Performance and quality of software have a direct impact on the happiness of software developers. Since language agnosticism paves the way for building good software, a language agnostic is happier than the ones who are not. Moreover, a language agnostic feels encouraged to keep on honing their skills and become better software engineers.If you want to get insight into language-agnostic interfaces for software development, http://evontech.com/what-we-are-saying/entry/is-language-agnosticism-the-future-of-software-development.html. Language agnosticism opens new avenues for software developers to enhance their programming skills and stand out to offer unique solutions to their respective clients or organizations. Your views are highly welcome in the comment box below.
Harish Pal
Answers from others encompass almost all aspects of future Software Development. I just want to add one more area of Software Development, which is highly probable to see boom in near future; Big Data. Many companies, biggies and startups, are exploring their options with Big Data processing. Future certainly belongs to Big Data processing with systems like Apache Hadoop and Twitter Storm.
Anonymous
Next 10 years software might develop itself. Google is using new technology: "Deep learning", which uses network of simulated neurons. According to this article (http://www.technologyreview.com/lists/innovators-under-35/2014/visionary/quoc-le/), without any human guide, the system learnt itself how to detect things. Next 10 years we might have something like the software in "Person of Interest", so I guess no software development any more
Vinh Doan
Related Q & A:
- what are the best advanced android development books?Best solution by Quora
- What's the scope of biomedical engineering for next 5 years?Best solution by jobsrecruitments.com
- What will be the future of software technology?Best solution by Quora
- How do I get a job in IT or Software Development if I have no experience and only a 3rd class degree?Best solution by answers.yahoo.com
- Will the US Immigration know that I received a police caution nearly 10 years ago?Best solution by Yahoo! Answers
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.