Adapting to the work environment

27 Apr 2018

Reading time ~ 12 mins

I believe what every student wants out of an internship is the same as what I’m expecting from mine: knowledge. I’ve always been told to have a sense of the skills and experiences I want to gain from my co-op term.

When I started my current internship at Pratt and Whitney Canada (PWC), I had no idea what I will be working on. The first day at work, we had a small introduction period, which helped me learn a bit more about the company I was working for and what kind of work I should expect doing from now on fro 4 months.

My first thoughts were that the company is huge, and has a bit of history. Founded nearly a century ago, Pratt and Whitney wasn’t a typical tech company one would expect. Turns out my internship was very different from the last (first) one I did.

1. The Technology

Pratt and Whitney is an aircraft engine manufacturer in the aerospace industry. The company is very hardware heavy in the Montreal department; most of the employees are working on hardwares. Software development seems to be more of a minority there and it wasn’t going at a very fast-paced environment as all the software applications were in a very late maintenance stage. As a result, for me, an intern, there was a more relaxed nature to the work.

I’ve been put in one of the software teams, and I’ve been assigned a mentor that I will be following for the remaining of internship. When I first started working at PWC, I only had some theory based knowledge on C++ and nearly no experience on most of the technologies they were using to develop applications. I have to say that what scared me at first about this was that there will be an awful lot of new technologies I had to learn and to work with.

1.1. Subversion Control

Having a good version control tool is essential to the effectiveness of employees within a Company. The version control tool within PWC is IBM Rational Clear Case.

The first ever task I was given after my orientation week (which I spent to read some online tutorials about the essentials I will need during the internship) was to fetch an application’s source code from their subversion control system.

Unlike what I used to work with (GIT), Clear Case is completely different in terms of its usage. I have to say that I did like it a lot because of a whole bunch of reasons, but I still think that GitHub is a superior tool to track changes of a code. Here are the main things I liked and disliked about Clear Case.

What I like

IBM Rational Clear Case supports most platforms. It has a very user friendly tree view of files modification that I personally find better than the GitHub history view. It also has a built in features that allows the merging of two files manually by comparing them side-by-side. In addition, Clear Case has a GUI interface that allows user to quickly switch between views and branches.

What I dislike

On the other hand, Clear Case is a very old product and sometimes the GUI can be very slow to respond. Also, the user is required to checkout files before making any modification, which causes a lot of time wasted by checking out the files and checking them in again. Another downside is that it only allows one user to modify a file at a time, which turned out to be quite annoying a few times during my work term.

Using Clear Case was very confusing for me at first, because the view management wasn’t really straight forward and the documentation was poor. I think the complexity of its installation and configuration requires the team to spend some time training anyone new to this version control system. Apart from that, IBM Rational Clear Case is a very powerful software that served the company well for years and even though I believe it could still serve the company well for many upcoming years, I’d still recommend switching to a more popular version control such as GIT.

1.2. IDE

The integrated Development Environments (IDE) is an enhanced tool to the normal code editors. As someone who uses text editors for programming tasks, I consider IDEs as an improved version of it. I usually code, compile, test and debug using different small programs (command line), but an IDE offers the possibility of doing everything in a single editor.

In PWC, since we are using C++ as primary development language, it’s a no-brainer that the IDE wins by a huge margin over text editors. It’s no doubt that a lot of time can be saved by using the IDE features like debugging and build tools. In fact, during my time at PWC, I haven’t even touched a normal text editor; I’ve been using Visual Studio IDE the whole time!

What I like

Most IDEs (including Visual Studio) contains a very powerful debugger. The ability to set breakpoints on certain lines of my code can be very convenient for debugging in some specific languages, but could be quite useless for other languages. As for PWC, using C++ definitely got simpler with the use of Visual Studio IDE.

What I dislike

For many projects, IDEs are a bit overkill. Talking specifically about Visual Studio IDE, the installation can go up to about 30GB and even the most basic installation is no less than 1GB. The obvious downside to such a huge application is that it can be very slow at startup and run time. Another reason why I tend to not use IDE is its flexibility; there’s no option to add or remove features like the ones in text editors.

Overall, any IDE by definition has more features than a text editor, but it may not always be necessarily useful. Text editors nowadays are very easy to customize and have a community-driven plugin system that extends the performance of all sorts of useful tasks. Even thought it was a blast to be able to use Visual Studio IDE in PWC for this winter work term, I’d still choose code editors over IDE for daily usage.

2. What I worked on

As cool as the applications I have been working on, there is very little I can actually say about them. For a big company like Pratt and Whitney, a lot of technologies are kept top-secret ;) I have been able to write and launch a bunch of new features though, it was really amazing!

During my programmer analyst internship, I worked as part of the Test Facility Computing (TFC) team at PWC. This department team mainly develops and maintains software systems used to support aircraft engine testing processes.

The engine testing is done using a Data Acquisition System, which is complimented by a graphical user interface. TFC is also responsible for an additional software system used to analyze the engine test data. At last, TFC implements software applications for Customer Support and other personnel performing the engine testing. This last part is what I worked on for my internship.

1.1. The applications

For most of my time there in PWC, I’ve worked with the Data Collection Unit (DCU) and its associate application and software. I ended up doing a lot of coding on an emulator, because there was a need on my team during my internship. In fact, during a three weeks period, I had the opportunity to work with the Data Memory Module (DMM) Emulator. Although it was already a working application started by previous interns, it had to be rewritten due to some malfunctioning. I was very surprised to see how much more could be improved/done with it. Aside from this, the bigger part of my internship was really on an application complementing the DCU.

I spent a fair amount of time trying to understand all the libraries used before I actually started working with the product. I was working independently on it at first, but after a while, I would have meetings with different people to discuss aspects of the product. In fact, I was introduced to a testing team in Poland. This is where I really got to see if the features I developed was working properly as they were doing a much more in-depth testing than the trivial test I did.

1.2. What I learned

During my winter internship at PWC, I’ve been able to work on some quite aged softwares as well as some newer ones using Microsoft Foundations Class (MFC) Library, a C++ object-oriented library used to develop desktop applications for Windows.

This internship has been much more than a simple software development internship. I’ve learned to patiently and fully understand a problem before trying to solve it. A problem that might seem simple at first might get very complicated once I finish exploring the depth behind it. And that’s how the best softwares are written.

Comparably, I’ve also learned a whole lot about teamwork and communication. We had weekly meetings with different teams and monthly meeting among the TFC team. In addition to theses, I’ve had one-on-one sessions with colleague across the world in order to discuss some more specific problems.

The biggest challenge for me – but also one of the most interesting part – was to understand what I was working with. Since PWC is a big company, the applications used were HUGE, with hundreds of source code files for each and every one of them. It sounds impossible to find a specific feature in this, but I managed. I was forced to spend a lot of time going through the project files every time I work with a new project, but once I understand it, it becomes quite easy to find what I’m looking for quickly.

3. The Culture

The company’s culture is an inescapable and inevitable part of every employee experience and here is mine at PWC.

1.1. Mentorship

I was paired with my full-time mentor from day one of my internship. It gave me a resource to ask any questions I had during my entire work term; it also introduced me to a friendly face of the work term right from the start. Honestly I have to say that I was very lucky to get such a good mentor. He took time each and every day to follow up on my progress and help me with anything I had trouble understanding. He wasn’t pressing me with hard deadlines and let me finish my task at my speed. This really allowed me to explore the whole project I was working with, instead of just rushing through tasks. I really respect him for always being more than happy to help.

1.2. Activities/Events

Settling back into Montreal in Canada was very easy. Since I grew up there, I already had friends and finding a place to stay wasn’t a problem either. Being able to speak French freely is also something I haven’t been able to do since I moved to Waterloo.

Software development aside, this internship has been a priceless experience. Our department, the TFC team, has a catered lunch every other Friday, which I really appreciated. Though, I really wish our team had more of those social events.

PWC vs Startup

I’ll do a little comparison between the two types of internship based on my personal opinion, since I worked with a startup for my previous (first) internship. I might do a longer blog post concerning this topic once I have more experiences with internships. Let’s see.

A lot of my friend say that the learning curve and opportunities are better in a startup as compared to a bigger company, but I really didn’t feel like it. I even felt like I learned more in Pratt and Whitney as compared to my last startup experience. I feel like having a dedicated mentor throughout the internship really contributed to the learning experience. Being the only intern on the team, everyone offered great help when I was in need. As I said before, the work is not extremely fast-paced here, which means that the full-timers had some free time and thus, had a number of opportunity to teach me.

Another difference to it is that, in a startup, I got to touch a lot of different things, completely different technologies (ReactJS, NodeJS, Drupal, PHP…) while in Pratt and Whitney, I primarily worked in C++ using Visual Studio. I was working on the same language, but with different approaches (run-time, efficiency, methods and even a little bit of software design).

My final thought on this internship

My time at PWC showed me how to apply the skills I already had learnt from class, but also showed me what I should focus more on during my future internships.

The only improvement that I would like to have seen was for my internship to do more with the hardware section of the company.

One last word – Thank you, Pratt and Whitney and the TFC team, for the amazing winter 2018 internship!