It was months ago when I got a new job at Smart Team Tunisia, an adventurous period for me as it's my first experience ever in the professional world.
In the following lines, I’ll share the lesson I've learned, the technologies I work with, and how my day at work looks like. Curious to know more so let's start the journey!

  1. Lessons I’ve learned

Ibn Qtaiba says: "one is still a scientist as long as he is asking for science: if he thinks he knows, he has begun his ignorance".


As a newcomer, the first months are all about learning. Learning Smart Team culture. Learning how to behave in meetings and learning how the codebase is architectured, learning how, where, and when to ask questions and many more.
In my case my first task was getting the application running on my work computer, I’ve needed to install the software tools, also different databases (the software has many clients).
In order to do that, the Smart Team granted me access to the codebase on GitLab, and my job was to get the program to run successfully.
Meanwhile, I had to go through reading the documentation, trying to understand how the program works, writing down remarks about the architecture, systems components. Big work, as the program is running for 20 years and has a lot of stuff! All as preparatory steps for incoming development and configuration.
Learning how the team operates, the next thing I have to learn and it can be placed as the first since we'll be integrated into a team from the first day. A skill that we get used to it as students, but here the atmosphere is largely different, we are talking about a business area.


You are still following, nice! You might guess that the next lesson is learning how to behave in meetings. Let's keep it to a next blog post and instead let's have a look at the work environment.

2. Environment:

Java: is a general-purpose programming language that is class-based, object-oriented, and designed to have as few implementation dependencies as possible

Java Server Pages (JSP): is a server-side programming technology that enables the creation of a dynamic, platform-independent method for building Web-based applications. JSP has access to the entire family of Java APIs.

Maven: is a build automation tool used primarily for Java projects.

Databases:

PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.

Tools :

The Eclipse IDE is famous for our Java Integrated Development Environment (IDE), but we have several pretty cool IDEs, and in the next lines, I'll list a bunch of shortcuts that will facilitate you work this tool:

  • Ctrl+E: lists all open files
  • Ctrl+Q: jump to the last edited location
  • Ctrl+shift+N: create a new resource
  • Ctrl+D: delete the current line
  • Ctrl+ shit+ / : comment a code line or block of lines

-f: You should pay attention when using it, it can erase a teammate's work on a branch in a second as I did once ;).

Git commands:

Through this professional experience, I have learned many useful git commands and below I'll list a bunch of them:

  • git rm: removes staged files.
  • git revert: undoes a commit, but saves the correction as an additional commit over the mistake.
  • git reset: has more options to delete files and commits, but is risky to use!
  • git commit -amend changes your commit message.
  • git prune to remove orphaned branches
  • git reset --soft: can uncommit and keep your files staged.
  • git reset --mixed can uncommit and unstage your files.
  • git log: is used to traverse the ancestry of each commit providing details on who, when, and what was committed.
  • git reflog: is a history of all the actions you've taken on your local repository.
  • git blame is a detailed look at who added what line in the source code.
  • git cherry-pick can add a commit from one branch to yours.
  • What about git push origin <branch> -f: You should pay attention when using it, it can erase a teammate's work on a branch in a second as I did once (;.

SmartGit: is a Git GUI client with support for GitHub, BitBucket, GitLab pull requests, and comments. I like working with it, as it facilitates the work, through an easy and understandable interface.

GitLab: is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking, and continuous integration/continuous deployment pipeline features.

We are using Gitlab as a source code management and delivery tool!

Teamwork:

Jira: software development tool used by agile teams

Google Meet for team communication, daily with external team members.

To conclude my little trip, I'm going to list a few of the things that I have learned throughout these months as a Web Developer.

  • The syntax doesn't matter as having the analytical skills to take a problem, split it into smaller bits and going through it little by little, it helps.
  • Git is such an important skill to have, and knowing how to use it as part of a team instead of just typing typical git commands will help you go a long way.
  • Know what questions to ask when and to whom.
  • Keep in mind to enjoy what you're doing.