Programming languages come and go over time, and it always seems there is some new, language that is all the rage. With things changing all the time, if you were to start a new project, how would you decide what language your software should be written in?
First, and see what companies are hiring for; you can follow news sources and get a feel for what is in the news; or you can get statistics from popular code-related sites.
Ultimately, you want to use a code base that stays relevant: both in terms or language support and developers who still write that language. For that reason, you want to consider a language that has been around for some time. The more popular a language is, the better the chance there is some great open-source solutions to help your cause. You don’t always have to reinvent the wheel, and these days, it is best practice to use existing frameworks and packages to both expedite and stabilize your software. Popularity should play a part in the decision, but in reality, there are many more important factors to consider. Things like:
- What is the intent of my software?
- Who are the intended users?
- What environment will the software be run ?
- Should data be centralized or localized?
- How important is security?
- How important is speed?
- What type of data will the software be working with?
Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Agile methods or Agile processes generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. Agile development refers to any development process that is aligned with the concepts of the Agile Manifesto. The Manifesto was developed by a group fourteen leading figures in the software industry and reflects their experience of what approaches do and do not work for software development.
Scrum is a subset of Agile. It is a lightweight process framework for agile development, and the most widely-used one. A “process framework” is a set of practices that must be followed for a process to be consistent with the framework. (the Scrum process framework requires the use of development cycles called Sprints) “Lightweight” means that the overhead of the process is kept as small as possible, to maximize the amount of productive time available for getting useful work done.
A scrum process is distinguished from other agile processes by specific concepts and practices, divided into the three categories of Roles, Artifacts, and Time Boxes. Scrum is most often used to manage complex software and product development, using iterative and incremental practices. Scrum significantly increases productivity and reduces time to benefits relative to classic processes. Scrum processes enable organizations to adjust smoothly to rapidly-changing requirements and produce a product that meets evolving business goals. An agile Scrum process benefits the organization by helping it to, increase the quality of the deliverables, cope better with change, provide better estimates in less time and be in control of the project schedule.