Skip to content

10-Academy/Software-Eng-and-Development-Env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

Software-Eng-and-Development-Env

What is Software Engineering

As defined by Techopedia, Software engineering is the process of analyzing user needs and designing, constructing, and testing end-user applications that will satisfy these needs through the use of software programming languages like python, c#, java etc. It is the application of engineering principles to software development. In contrast to simple programming, software engineering is used for larger and more complex software systems e.g github, which are used as critical systems for businesses and organizations. It may also involve the process of analyzing existing software, and modifying it to meet current application needs.

A programmer is somebody who knows the programming language used in a project. They create code.

Adopted from Quora: A software engineer is someone who can perform the complete process of creating and supporting software in a modern, well structured process. This person can formulate and understand requirements, create a design, review designs created by others. They can write code, they can review code. They can create test cases for an automated test system. They can fix bugs. They can respond to problems that happen in the field once a product has been released. They can understand and manage the process of creating the next version of a piece of software.

Programming is a subset of software engineering. If you want to be a good software engineer, programming is the most basic and most important skill. You can teach yourself how to program. Read some books, write some code. It generally takes some job experience to learn software engineering.

An engineer does not start constructing something until they have satisfied themselves that the thing can be built, and it will work. It is like building a bridge. No concrete pouring until calculations are complete, we are sure it will work.

What is Development Environment

A development environment is a collection of procedures and tools for developing, testing and debugging an application or program. The development environment normally has three server tiers, called development, staging and production. All three tiers together are usually referred to as the DSP. Read More here

What is the difference between coding and Software Engineering? (aka What is not Software Engineering)

Coding, sometimes called computer programming, is how we communicate with computers. Code tells a computer what actions to take, and writing code is like creating a set of instructions. Software engineering is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them. Learn More here

  • Software Engineering is designing products that satisfy users need
  • SE is NOT designing for one single user but multiple users
  • SE is thinking critically about a user requirement and designing in a simple way that gives room for easy update if need be i.e getting and integrating user feedback

Writing a bunch of functions to perform a specific task like reading your text messages out loud can be seen as coding, making that code scalable i.e (can serve many other people), accessible (other programmers can contribute to the code base to improve it functionality), packaged and deployed (users feedback is intergrated into the app and is easily available to them), version controlled etc are steps in SE.

When will I use Software Engineerning in my ML career

  • When you work on ML projects ++ in test environments, or for real-life deployment? Can we give an example/diagram here?
    image

  • When analyzing user requirements

  • When you contribute to Open Source ML projects

  • When you work with teams with diverse skills set

  • When you write anything that must be tested

Why is it important to learn about Software Engineering

  • To be able to work with teams effectively and effortlessly
  • To allow other people contribute to your work when you Open source it
  • To develop systems that are tested, scalable, interoperabable
  • MAJOR POINT IS THAT ML IS ONLY A TINY PART OF PRODUCTION SYSTEMS - SOFTWARE IS A HUGE PART OF THE NEED

How Software Engineering (SE) and Development Environment help solve problems

  • Using the practice that SE preach, you can easily implement customers feedback and deliver good product that get good reviews
  • It helps to be structured and knows what needs to be done at different stage of the application development
  • Building a Machine Learning model is not enough to make it available to users, you'll need the knowledge of SE to package the model either as a pickled file, build an interface that consume your pickled ML model and a way to get user feedback to know how to improve the ML model.

Examples of how you use Software Engineering today

  • Planning your day ahead is one way you probably use some technique of SE
  • When you build a ML model and you use it to make prediction, the process of packaging your ML model, building interface that users can interact with to use your ML model (get predictions) are some of the practice in SE. SE makes ML model more useable

What components makes up Software Engineering

  • Programming Language: When an application is being created, a developer must choose a language to write the project’s code with. Just like the languages that form our world, programming languages perform the same purpose but have a different structure and benefit.
  • Platform: Provides a foundation for the application
  • Framework: acts as a structure that keeps code simple and consistent
  • Quality Assurance: (QA) is a set of activities intended to ensure that products satisfy customer requirements in a systematic, reliable fashion. Read More here

What differentiate begineers from experts in Software Engineering

Experts follow the principles of SE for all their projects

Design your system before you start coding Testing of components before release Design and coding for maintainability

Other resources:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published