☑️ Keep geeking out
My name is Almir Mustafic. I live in Southern California. I am a solutions architect and a software engineering leader.
My interests are computers, cars, tennis, basketball, and table tennis. I studied Computer/Electrical Engineering at the University of Toronto. I have been in software engineering field professionally for 22+ years. It has been a journey from vi editors on Unix to fancy IDEs that we use these days; it has been a journey from desktop applications to distributed applications with n-tier architecture to microservices world; it has been a journey from your own data centers to cloud computing.
When it comes to computers, I enjoy providing software solutions using my creative, analytical skills and thinking outside the box. I started as a software engineer on Unix platforms and then in late 90s I shifted my attention to software engineering in Telecommunication industry mostly using the Microsoft technologies (C++, Visual Studio, C#). Then I focused on building enterprise level applications and web sites using Microsoft .NET frameworks. In my current phase of my career my focus has been on microservice architecture, cloud computing and transformation to Agile and SAFe/LeSS methodology. Some of the technologies in my day job are: AWS, Java (SpringBoot), Python, NoSQL (DynamoDB), RDBMS (Aurora, Postgres), Pub/Sub architecture (SNS, SQS), streaming architecture (Kinesis streams), Redis cache, machine learning (AWS SageMaker, AWS Batch, AWS EMR) and many more.
I have spent time with open-source solutions. For example, at one point, I learned Python and NodeJS in order to provide certain solutions for my company. Outside my day job, I spend some time programming different tools because I see specific problems to solve and it keeps my programming skills at a relatively high level. You can find me on LinkedIn if you are interested in my day job. I took a traditional path advancing my career through software engineering levels and learning the skills needed before diving into the leadership roles. I am currently performing the role of a Solutions Architect and a Sr. Software Engineering Manager in our technology team of 100+ people.
At the end of the day, I am that guy in a room surrounded by people smarter than me, and I am absolutely passionate about the field of software engineering. I am passionate about tapping into the skills of fellow software engineers and helping them accomplish things that perhaps I have not.
I will leave you with two quotes:
"To be successful, you don't need to be the best; you just need to be best in striving to be better." -- am
"Software Engineering is the tech nerds' art." -- am
Programming is an act of giving a machine some instructions so it can perform things repeatedly.
Software engineering is an act of programming and everything else that goes along with it in order to deliver enterprise software to production. — am
Set high standards for yourself — Challenge yourself
I have been at my current company long enough to get too comfortable, but is that the case?
The years I have spent in my current job feel very much like 3–4 jobs. The company went through different of senior leaderships roughly every 4 years. On top of that, there is the technology aspect and its changes over the years, and different types of projects I have been part of. All of these things painted a picture in my head as if I changed jobs 3–4 times.
What is the secret to still getting “New Employee” jitters every week even after being with the company for so long? What is the secret to challenging yourself?
(1) Don’t wait for your leaders to challenge you. You need to challenge yourself from week to week.
(2) You need to care.
(3) Appreciate what you and your team accomplished, but never be fully satisfied; there is still a balance to this. Look at this from a positive angle. Look at it as an opportunity.
(4) Don’t judge somebody else’s engineering efforts that you inherited; you don’t know what circumstances they performed that under. Instead focus that energy to try to understand it, identify what can be improved and improve it; this will keep you on the edge because improving something you inherited is harder than just building it from scratch because you might not have an option to build it from scratch. You will learn how to plan it and improve it incrementally.
(5) Create a great team so that you are in a room with a group of people who are smarter than you. For example, as a solutions architect and a software engineering leader I may be the one making final decisions (if necessary) on designs/solutions, but every day I learn something new from my teammates and that’s a great feeling.
All of this adds a bit of that uncertainty and a new boost of energy from week to week. This is enough to still get a bit of “New Employee” jitters that make us prove ourselves over and over again.