Jump to: navigation, search

Youtube search... ...Google search

We had a deal, programmers are supposed to automate everyone else's jobs, not automate our jobs.

Major differences:

  1. More emphasis on information pipeline management; data collection, preparation, feature determination, and pipeline configuration management.
  2. Developing a machine learning application is more iterative and explorative process than traditional software engineering. Learning / Testing / Validation of models is an upfront task

Developing a machine learning application is even more iterative and explorative process than software engineering. Machine learning is applied on problems that are too complicated for humans to figure out (that is why we ask a computer to find a solution for us!). Differences between machine learning and software engineering | Antti Ajanki - Futurice

Life Cycle

Youtube search... ...Google search

Machine Programming


Youtube search... ...Google search

AI has changed software development by exposing human perception, definition, and execution of programming. ...Future programmers won’t maintain complex repositories, analyze running times or create intricate programs. They’ll collect, sanitize, label, analyze, and visualize data feeding neural networks. 9 Ways To Implement Artificial Intelligence and Agile-Powered Management in Software Development | Chandresh Patel - DZone

...Introduce machine Learning (ML) techniques into your Software Development Life Cycle (SLDC) as follows:

1. Coding Assistants: Most of a developer’s time is spent debugging code and reading the documentation. With smart coding assistants implemented using ML, developers can get quick feedback and recommendations based on the codebase, saving a lot of time. Great examples include Java’s Codota and Python’s Kite.

2. Automatic Coding Refactoring: It is important to have clean code because it makes collaboration a lot easier. Maintenance of clean code is also orders of magnitude easier than unclean code. Here's the deal; whenever an organization scales, refactoring becomes a painful necessity. With ML, it is easy to analyze code and optimize for performance by identifying potential areas for refactoring.

3. Making Strategic Decisions: A large chunk of a developer’s time is spent debating the features and products to prioritize. An AI model trained with data from past development projects can assess how applications perform, helping business leaders and engineering teams to identify methods of minimizing risk and maximizing impact.

4. Providing Precise Estimates: The profession of software development is known for exceeding budgets and timelines. To make a good estimate, it’s important to have a deep understanding of both the context and the development team. You can train an ML model using data from past projects like user stories, cost estimates, and feature definitions. This can prove very helpful in predicting effort and budget.

5. Analytics and Error Handling: Coding assistants based on ML can identify patterns in historical data and identify common errors. If the engineer makes such an error during development, the coding assistant will flag this. And that’s not all…after deployment, ML can be used to analyze logs and flag errors that can then be fixed. This makes the software developer proactive in solving errors. Who knows? Maybe in the future ML will correct software based on errors without the need for human intervention.

6. Rapid Prototyping: Converting business requirements into technology takes months at best or years to turn into technology. Today, however, ML is reducing development time by helping individuals with less technical knowledge to develop technologies.

7. Using AI for Project Planning: The human brain is an astonishingly great knowledge powerhouse. And what’s even more surprising is that we all have different cognitive abilities from one another. No two project managers will have the exact same thoughts on the same project. Enter ML. By replicating human intelligence, ML can create various permutations of a situation similar to the human brain.

8. Risk Estimation: Making informed decisions on risk estimation in software development is complex and factors in budgeting and scheduling constraints. In the beginning, healthy completion levels appear likely for every project. But here’s the kicker, when you start the project, the external environment and project interdependencies alter the probabilistic scenarios. Our limitation as humans is limited by the capacity to store and reproduce information. ML allows you to retrieve parameterized information on demand. You can train the AI model with past data of project start and end dates. This way, it will give you a realistic timeline for the current development project.

9. Project Resource Management: Delivering a software product depends on having the right people working on the project. Again, AI goes deep into the data on the history of past projects. It can give you information in real time on which developers are engaged in other projects. This makes it easy for you to know which developers are ready for deployment. Based on the ML prediction, you can either increase or reduce the number of developers.