Fundamentals of programming and programming languages

To better understand the world of software, we should at first understand the difference between programming and computer programs.

Programming is the activity of writing computer programs, while a computer program consists of instructions for the computer and its Central Processing Unit (CPU).

 

Programming languages are a subset of computer languages and their grammar is usually very rigid. Programming languages are also usually Turing complete.

 

During the history of programming languages, we have already had 5 generations of programming languages. From first to the third generation are considered imperative, from 4th to 5thdeclarative, even though each programming language has characteristics of both paradigms.

 

1th Machine language.

These languages are computed directly on the machine (hardware).

2d Assembly language

Assembly languages need an assembler to be compiled by the machine, they are strictly related to the hardware

3rd High-level language

High-level languages focus on the problem

4th Domain-specific language

These languages are used in a specific domain and they focus less on the problem but more on how the solution should look like

5th Problem-solving language

These new languages are mainly used for artificial intelligence and machine learning, they focus on specifying the problem and defining solution constraints

 

In order to translate the code to machine language, computers need utility programs called assemblers. But starting from 3rd generation programming languages, assemblers aren’t enough: computers also need compilers to be able to transform abstract descriptions to computer instructions.

 

A compiler enables a program to be launched directly on the hardware.

An interpreter, instead, emulates hardware that would be able to run that high-level language.

 

Some languages like Java use a hybrid method: a Java program is first compiled into an intermediate language called Java Bytecode, and then is interpreted on the virtual hardware Java Virtual Machine

 

The process of software development isn’t just programming. We can define 5 different phases:

  1. Design. Design is the conception of the software
  2. Coding (or writing). Coding is the actual implementation
  3. Testing. In this phase, functionalities previously created are tested
  4. Debugging. Correction of so-called “bugs” (errors in the code)
  5. Maintenance. Further enhancements, updates

 

In this article, we have discussed the foundations of programming and the distinction between programming and computer programs. You should now have a better knowledge of what programming is and how it is used.

Why should you follow this blog?

Nowadays there exist millions of blogs, profiles on social media, and newsletters. Why should you follow another blog? 

I’m Simone Torrente, a 26yo from Italy. I’m passionate about product management and the digital world. I founded a startup when I was 19 and I found out that it was more complicated than I thought to become a unicorn* (*a startup valued $1billion).

 

What I will write about?

I will write about digital project management, productivity, informatics, stoicism, startup, strategy and innovation (you’ll see how these topics are related).

This blog will be full of my notes on books and courses I’ve followed during these years, including my notes on the university master degree in IT Management (International University of Applied Science).

I’ll teach you everything I know and everything I learn about project management.

This is my first time managing a blog and I hope you’ll find it useful!

I don’t want to lie: I’m not yet an expert on these topics above. I’m not a professor, I never had a TedX talk and I didn’t write a book.

But I like to learn new things and I like to share my notes with others.

Even though I currently work as an IT consultant for a company, I’m still a student (like many of you) and I want to share my journey with you.

But I’m not altruistic: even though my friends say that I’m a good guy I don’t write these posts just to help other people improve their careers and their personal life.

Yes, that’s a big plus, but at first I do it to push myself to study harder (and to practice my English). In fact, a “secret” technique to learn a topic faster is to explain that topic to someone else.

Then I will be happy if you want to share with me your knowledge (through your comments or posts).

I hope you liked this short presentation of the blog and I invite you to read other articles!

Thank you for your time!

Simone

 

The 5 phases of a project

How do we know what to do during a project? What are the priorities? What are the activities that a Project Manager should do at the beginning of the project? And at the end?
To answer these questions, the theory of the 5 phases of the project (project life cycle) comes to our aid.
The main role of a Project Manager is to have the current status of the project under control: it means knowing where the project is and what to do to achieve the set objectives.
From experience, we know that each project can have 5 different phases.
For each phase we have guidelines to follow that help us always know what to do in case of loss.
As you will see, the project can go through several phases at the same time (Executing and Monitoring), but in general one follows the other in chronological order.
The 5 phases of each project are:
  1. Initiation
  2. Planning
  3. Executing
  4. Monitoring
  5. Closing

Initiation

In this phase the manager collects all the information necessary for the project:
  • contact with the client (or with anyone proposing the project, for example other company departments or management)
  • analysis and drafting of project requirements (needs analysis, functionality), Statement of Work (SoW) and Project Charter (or also called PID, Project Initiation Document)
  • feasibility analysis

Planning

In this phase the manager decides how the objectives established in the first phase are to be achieved. These are the main activities to be carried out:
  • project plan, planning of milestones, deliverables, choice of project priorities. Often the WBS (Work Breakdown Structure) and the GANTT are used (mainly used in the “waterfall” methodology. It is not used by startups who prefer to work with “agile” methodology)
  • financial plan: drafting of the budget and analysis of the necessary liquidity (cash flow)
  • resource plan: analyze all the resources needed for the project, such as personnel, technical equipment, spaces, etc.
  • risk plan: identification of risks (for example on initial assumptions or possible future obstacles) and creation of a plan to mitigate these risks
  • communication plan: this is a fundamental aspect in any project in which several subjects are involved, it is often underestimated but it is essential to ensure clarity in the management of the project. The Digital Project Manager here makes a list of the stakeholders of the project and establishes how he will keep them updated and the timing
  • procurement plan: plan to identify the right suppliers
All these analyzes are inserted within a SoW in order to obtain the official approval of the customer.
In this way, the risk of “scope creep” is considerably reduced, that is, of creating a project with characteristics different from those requested by the customer due to continuous changes or additions.

Executing

In the executing phase, the project manager proceeds to implement the plan created in the previous phases. The key steps are:
  • team leadership: having a clear and motivating vision and mission to convey to the team (it is a serious mistake to think that employees are motivated only by salary)
  • tasks: write the activities that each team member must complete and make sure that everyone has understood the task to be done
  • client management: communicating with the client in order to receive feedback and make sure you are creating the project in the required way
  • communication: inform all stakeholders about the progress of the project (even if there are difficulties in the project)

Monitoring

During the Executing phase of the project, the project manager must also be in charge of monitoring performance and results. This means collecting the data and comparing it with the forecasts made at the beginning of the project.
The steps to monitor a project are:
  • cost and time management: monitor the budget and timing of the project
  • quality management: making sure that the procedures and functionalities created reflect quality standards
  • risk management: predict and mitigate all possible risks
  • acceptance management: making sure that the features created satisfy the customer
  • change management: planning changes (to be submitted to the client) when there are obstacles in the project or when the team wants to propose improvements

Closing

This is a phase that many project managers overlook. At the end of each project (both when it has been successfully completed and when it has failed) it is useful to stop for a moment and analyze what went well and what did not work.
Only this work allows the team to improve by learning from the experiences made. It is also an opportunity to celebrate the eventual success of the project.
The steps are:
  • project performance analysis: general evaluation of the project and deviations from the initial budget
  • team analysis: analyse the effectiveness and efficiency of the team
  • project closure: documents to prepare to finish the project (e.g. close
  • contracts with suppliers) and reorder the project documentation
  • post-implementation review. write the analysis of successes and failures

Conclusions

In this article we have seen what are the 5 phases of each project (digital or not).
Obviously, at any moment of the project you can go to modify a document created in a previous phase (indeed, periodic revision is recommended).
Each Project Manager must know perfectly the activities proposed in each phase and must commit himself to carry them out.
A project can only be successful if the Project Manager does not neglect each of the activities proposed here.
Soon,
Simone