Programmers, there are rules to follow

For those of you new to software engineering, the Association for Computing Machinery ACM developed a code of ethics for all programmers and professionals in software engineering. If you are asking yourself: if I am able to code anything, why do I need to follow rules? Well, your code must have a target public, and these rules apply to commit to the health, safety and welfare of that public. There are eight basic principles as stated by the ACM:

  • PUBLIC – Software engineers shall act consistently with the public interest.
  • CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
  • PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
  • JUDGEMENT – Software engineers shall maintain integrity and independence in their professional judgement.
  • MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
  • PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
  • COLLEAGUES – Software engineers shall be fair to and supportive to their colleagues.
  • SELF –  Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

I, as a software engineer, agree with you. We are the future, software engineering is the future of society, and when we are coding we appear as wizards. Let’s aim, however, for a better future, and contribute with our programming to develop a healthier coding ambiance.

Full version of ACM’s code of ethics

References:

http://www.acm.org/about/se-code


The beginning of Software Enginnering

It began in the late 50’s and the early 60’s as computers were introduced to universities and research institutions. Computers quickly became indispensable for many, and programming soon became an activity under appeal. Programming, however, had no interaction with a computer, programmers would give the program to a dispatcher, who queued the programs, and the results came hours or days later.

Coding was almost too difficult, and, in order to ease this process, formal notations were created. These notations are now known as programming languages. The first one was Fortran by IBM in 1957, followed by Algol in 1958, and Cobol by the US Department of Defense in 1962.

Computer capabilities had grown, and with it, programs and programmers demands; henceforth, a friendlier programming language was created known as PL/1. Programming languages and compilers became a principal cornerstone of computing science. [1] C was created to be capable of doing software development in UNIX. That’s how programming took a leap backward, where languages were gaining high level features, but C is only higher level than assembly code.

Ever since, different compilers and programming languages have been created, with different methods, and objectives. Procedural, modular, and object-oriented languages are some of the most known ones. For example, Java, Ruby, C, C++, HTML, Python, etc. and software engineering has grown exponentially. It has grown to a point where future expects lots of software engineering contributions.

Software Engineering has been so important that it is not only considered professionalism, but also art or craft.

References:

[1]: http://people.inf.ethz.ch/wirth/Miscellaneous/IEEE-Annals.pdf


The art of Software Engineering

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler

Technology and scientific knowledge has increased for the past centuries, and with it, the engineering field has acquired several disciplines based on the needs of these technologies. Software engineering is one of the latest disciplines; furthermore, it is different because professionals are not building a tangible structure. It is as important, though, as most technological equipment used in daily life require software. In fact, software impacts most aspects of our lives; for example, banks platforms, and businesses trust software programs.[1]

Software engineering is not just programming, it involves a series of steps priori and posteriori of programming. When a project is required there’s research to be done about the requirements of it, creation of algorithms to follow by the program, followed by the actual coding process, which needs comprehension, logical thinking, machine language knowledge, and programming abilities; finally, there’s validation and maintenance to the program, as it needs to keep running.

The question is, is it a discipline or an art? Most software engineers consider their labor as art [2]; however, software engineering is both of them, it is a discipline as all other engineering branches, which are considered as professionalism. Simultaneously, it is an art because there are no limits when developing software. Limits exists when the physical unit is not capable of supporting the virtual one; however, everyone can create their unique piece of software.

Video

Sources:

[1]: Software engineer insider

[2]: Steve McConnell