Skip to content

denis-ryzhkov/itse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Introduction To Software Engineering

Several people asked and will ask to teach them to code.

I am going to build here an introduction to software engineering,
to help starting quickly and in right direction.

Coding vs Software Engineering

Coding (reading and writing the code) is an important part,
but it is just a part of Software Engineering.

Processes

Here is a flow of processes I use to create a software:

  • Getting or generating an idea.
  • Negotiating requirements.
  • Learning new technologies.
  • Analyzing task definition and proposing how to improve it.
  • Planning architecture and details.
  • Documenting.
  • Implementing and testing.
  • Reviewing and refactoring.
  • Deploying and demonstrating.
  • Measuring performance and feedback.
  • Optimizing.

Principles

What ideas I selected to follow:

  • Value for user.
    • Sometimes I make solutions too beautiful inside, so reminding myself the main goal "Value for user" is helpful.
  • DRY - Don't Repeat Yourself.
    • "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system".
    • Design principle I use by default for everything. Aware it should not be over-used to avoid breaking KISS.
  • KISS - Keep it simple.
    • Adding complexity is simple. Making simple solution may be complex.
    • "most systems work best if they are kept simple rather than made complex".

You will read books and select what principles to follow.

Teach vs Learn

The best advice I can give to anyone looking for a teacher in software engineering is:
"Learn to learn by yourself".

And here is how:

  • Select a technology to start with. See "First Quest" below.
  • Ask google for links to original documentation.
  • Almost any technology has at least one "Getting started" guide, tutorials and eventually reference for everyday use.
  • http://stackoverflow.com/ and other communities have answers to most questions you got wrong from the docs. Just google your question.
  • Experiment! Try what will happen.
  • Yes, direct answer from someone you know can save lots of your time, but it should be emergency fallback, not starting point, because in this case:
    • You waste time of the teacher.
    • You miss related experience you could run into while searching for answer by yourself.
    • You don't train your learning muscle.
    • You follow only one existing opinion instead of a chance to build your own opinion and to invent something beautiful.

First Quest

  • Find "developer tools/console" in a menu of your desktop browser. Ask google to help you if needed.
  • Type alert('Hi') there and press Enter.

About

Introduction To Software Engineering

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published