Software Engineer in 5G at NOKIA
TL;DR
Since 2016 I am working as a software engineer for the next mobile broadband technology 5G.
The main technical topics are:
- Design, implementation and review of C++ C-Plane software components of a 5G gNB base station.
- Representative of performance team
- Analysis and removal of critical bugs
- Development of a parser plugin for CLion in Kotlin(for the TTCN3 testing language)
- Giving tech talks for other developers which introduce functional designs in C++
- Initial skill adaption training for junior developers
- Working in a Scrum team under the agile manifesto
More Details
It has been quite exciting to participate from day one in a new technology and project.
The shift from LTE/4G to NR/5G was not hard for me, since I already gained a lot of experience
from my previous role at NOKIA.
Having a good network already built up, many colleagues which were in the project before me, helped me in case I had problems with the new technology stack or new project processes.
Working in CPlane
CPlane describes the control plane(layer) of a mobile broadband system.
Here we develop performance- and security-critical software for a 5G basestation,
be it a hardware unit or a virtualized cloud entity.
All components are written in C++ 17 and my focus is on the user-equipment(UE).
Together with my squad team, I design and implement new features.
As an example, we implemented a handover scenario in which a UE switches cells from LTE to 5G.
When we check in, we review the code with Gerrit.
I am also responsible for performance related topics for which we use tools like Valgrind, Callgrind, Massif etc.
For this, I have written test tools which will detect if a specific commit in CI degrades CPU and/or memory usage.
In a round robin fashion, I support in analysing and fixing critical tickets from tester or customers.
That is quite a challenging task, since you first have to narrow down the problem which might be located
in code/specifcation areas where you never have worked before(we are several thousand developers working on master!).
Furthermore, the fix has to be ported back to other branches as well, which requires additional bookkeeping.
TTCN3 Plugin for CLion
Our main testing language is TTCN3, which is specifically designed for messaging verification
in system component tests.
To accelerate the development of testcases, we need good tool support and since many of our
developers use the CLion IDE, we needed a plugin which supports TTCN3 as well.
I assigned to this task since it was about parsing and being able to use Kotlin as plugin language.
I could make use of my knowledge in formal compiler and parser building and Kotlin supports
many functional concepts out of the box.
The final product is now capable of browsing/jumping the code base sematically, mark syntactical errors
and many other useful and customizable features.
Functional programming in C++
I actively drive the awareness for functional programming and designs to achieve higher code quality.
For that, I have given tech talks serve a contact person for all questions that come up.
I also incorporated very simple algebraic data types to our codebase which will prevent some common pitfalls/errors all together.
As an example consider std::optional, which still requires a check if the underlying value is present.
Introducing an optional monad to critical places saved us now quite some headaches.
Working Role
Over the years I have gained quite some experience on software engineering and working on very
large codesbases respectively.
Therefore I do my best(with pleasure!) to help junior developers to acquire the necessary skills relevant for our
projects.
Since we work under the agile manifesto, I participate in daily scrums, discuss the backlog with the product owner,
create tasks in JIRA, write articles in Confluence and so on…