In this post, I'll talk about my experience serving in the military during 2020. It's a chapter in my developer journey that started way back with freeCodeCamp.

I spent 2020 as an (involuntary) military conscript in my country's armed forces. 14 months if you count training bootcamp.

The laws of the land here say that if you are a male citizen older than 17 years, with at least one other male sibling, you must enlist in the armed forces. There are a few exceptions, and you can delay conscription as long as you are enrolled in an educational program or are living abroad.

I happened to have been both living and studying abroad. However, a series of events led me to return to my home country after my studies and present myself to the army at the age of 27.

By that time, I had worked as a software developer for a couple of years. My greatest fear was losing all my technical knowledge and learning momentum I had gained over the years which would set me back in my career.

This is the story of how I overcame that challenge, and ended up taking advantage of the situation and becoming a better programmer.

Surprise – Time to Enlist

On a cold October evening in 2019, I remember receiving that fateful call from my local police station's military office. It was around 8 pm a few minutes after getting off a work call on Slack.

"Is this Adham Mostafa El Banhawy?"

"Yes, who is this?"

"This is the army conscription office. You have been enlisted for military service. Show up at the police station tomorrow morning to complete the necessary paperwork."

"Wh- is there anything I should bring with me?"

"Just your ID."

*click*

Following that call, I sat still at my desk for what seemed like forever. I'd been doing the conscription paperwork for almost a year, and every time there was a new class, my enrollment would be postponed. I had many factors that should've deemed me unfit for service, and people who were similar to me in the past were exempted before.

However, it wasn't the fact that I was enrolled that bothered me. I was prepared for that possibility mentally and physically. What really bothered me was the timing of that call.

As I sat silently at my desk, I remembered a heated debate I had had with my father the night before in that same room where I was now sitting. We were arguing, quite loudly, about the then dismal state of political affairs in our country.

I could not remember any specifics, but I did remember two worrisome facts. I remember criticizing the ruling regime, and I remember there was at least one open window in the room which was only about a meter a way from the street. That was extremely reckless of me.

Never mind. There was nothing I could do about it but comply. The day after was going to be the first day of a really long and treacherous journey I had to take.

I decided to get one last good night's sleep as a civilian.

How I kept a level head

My first month or so in the army I spent in a bootcamp. Even though it was a military base in the capitol city, it was an incredibly isolated and barren piece of land with strict anti-technology rules.

No phones or electronics of any kind were allowed. No books or notebooks. No personal belongings in general were allowed in.

I did sneak in a notebook and a pen, though. It may not seem like much, but they were actually very useful. I could write down important names, tasks, reminders, and sometimes try to solve issues that popped up using that information.

So in terms of maintaining a sharp mind amidst the lack of technology, I used a pen and paper to continue problem solving. Only this time I was solving problems of a social and military nature.

Seeking Out a Screen

Once I reached my main unit's base, I had one clear goal in mind: find out where computers were used on base and become a technical worker there. This was my best and only hope of doing any kind of programming that year.

It wasn't an easy task. I had to change my mentality and way of thinking because reaching a specific position or place in the army usually doesn't depend on merit alone. Rather, you need to ingratiate yourself with the right people and sweet talk your way in. It's not my style, but I had to practice that social aspect to get where I wanted to be.

And I did. Within a week of arriving, I grabbed an opportunity to talk with the base leader and I convinced him to let me work in the operations office that had the working computer.

Hello Work

Once I was in, I was quickly acquainted with a low spec PC running an outdated version of Windows 7, with 2 GBs of RAM, and no connection to the internet (prohibited).

My main tasks were typing up word documents and letters, sometimes doing powerpoint presentations, and occasionally fixing the damn printer despite my constant insistence that I had no idea how printers worked!

Ok, so I didn't have much in terms of computing power or ability to be creative at work. The first few months were physically excruciating because they entailed almost daily fitness testing, hard manual labor, and guard duties with an average of 4 hours of sleep per night.

Even when I got a rare hour our two of free time at the office alone with the PC, I was usually too exhausted and sometimes fell asleep while sitting at my desk.

But when I did force myself to focus, I read some ebooks about programming that I snuck in on a USB and hid well on the machine.

When I was really itching for some actual coding, I opened up powershell and learned how to program in that language using its integrated offline documentation on Windows. Even wrote a few scripts to help with work tasks.

My next goal was clear: now that I had secured access to a computer, I had to make myself essential in the office I was in. I wanted to be the go-to man for getting work done on the computer.

This was the advice given to me early on by my predecessor who was my office mentor and who had been the go-to man for the work due to his experience.

I had to find a way to use this computer to code without raising any alarms or suspicions (people can get really paranoid in the army, especially since I had access to sensitive info). Then I could spend the last few months of my service coding and preparing myself for coding interviews.

I'm the Captain now

The office I worked in had three ranks – an officer, 4 sergeants, and 3-5 privates. The officer had his living quarters only a few yards away from office so he rarely showed up.

He would phone in his commands to the sergeants, and the sergeants, depending on their work ethic, would then order the privates to do most of the tasks related to his commands.

We also had routine tasks we did on a daily basis. Mostly bureaucratic stuff that was designed to keep military folks working in offices busy.

Although the sergeants' laziness was annoying and frustrating at times, it meant that they relied heavily on me and other privates to keep the work flowing. They would depend on us so completely at times that they came to the office only a few hours per day, sometimes not at all. They knew that we'd call them if they got summoned or some serious task came up.

This meant that the office's chain of command went down to the privates based on seniority level. Due to some personnel reshuffling between bases, and my predecessor finishing his service 6 months after I joined, I eventually ended up being the most senior private and therefore the one with the most privilege and authority.

I was also accountable for most of the work on the computer. The officers would start phoning and summoning me instead of the sergeants because I proved that I was a capable guy. I was, in effect, the person running the office.

Preparing for Coding Interviews

6 months in, as an older member of the base, I knew how to get out of tricky situations that involved hard manual labor (I used my office's urgent tasks as an excuse to get out of a 2-3 hour pipe-cleaning activity, for example).

I am quite a diplomatic person, so I made friends with most of the privates and officers. We'd do each other favors which led to less night shift duties, more hours of sleep, and more free time. This meant I had more time to work on my coding skills.

I decided to learn Vue.js by creating an offline website for the office. The site would help onboard newcomers and explain our routine tasks. It would also show those tasks on a calendar with notifications for upcoming tasks.

I downloaded Vue on my USB along with its offline documentation and Node.js, then transferred them to the army PC. By building the website from scratch and without using any external libraries but Vue itself, I learned a lot about the framework as I went.

I liked it so much I built a browser game similar to Tic-Tac-Toe and played with the other privates for fun.

However, it was time to get serious as I had only four months left. Once I got out of the army, I would need to get a job right away, and it needed to be a good one, too. My household was accumulating huge debts since I, the only working family member, was now earning just enough money to buy two family dinners per month. So I couldn't help pay the bills anymore.

I signed up for a Udacity scholarship for the Full Stack Advanced Web Development track offered via my government's website – and thankfully got accepted.

This was a great way to refresh my knowledge of full stack development and enhance it. It was a serious commitment that required me to go through the course materials and do multiple graded projects that really tested my learning.

Thanks to my position at my office, I was able to commit to the program by staying up late at night working on the projects. I connected the old PC to my smartphone's internet so I could use online IDEs and look up stuff.

This was probably a serious offense from the army's point of view, but I think it was worth the risk. I was able to finish the program on time in three months, and along the way I learned some new technologies, brushed up on important concepts, and solved coding challenges.

Applying to Jobs

I remember when I had 45 days left until I finished my service. I felt ready to start applying for jobs and take on interviews. So I started working on my résumé and applying to jobs I saw online.

I used LinkedIn primarily for my job search. For the first time ever I was eligible to apply to enterprise companies. Let me explain this bit real quick:

In my country, according to the labor law, a company cannot officially hire a person and provide them with tax-deductible benefits if that person has not completed their military service and is not exempt from it.  

This meant that, up to that point, no matter how qualified I was, I could only work for smaller business/startups/individuals in an unofficial capacity as an underpaid freelancer (without any benefits or health insurance).

So now I could apply to any job to my heart's content, and could find positions that matched my expertise. I'd say I applied to about 4-6 jobs (I am super picky).

Getting the interviews

Vodafone

With 30 days to go, I got my first interview request. This was from Vodafone, a giant mobile network operator, asking me to interview for a senior front end developer role. Cool, cool, cool – I had been contacted by their recruiter earlier on LinkedIn so it was no surprise, except for the "senior" bit.

I remember that the first behavioral interview phone call with one of their recruiters was incredibly awkward for me. I was about to finish a watch shift and hand off my body armor and weaponry to the next soldier, and the phone call came in just before that happened.

I did try to politely ask for a better time to hold that call or just call back within the hour, but somehow the recruiter convinced me that she was in a hurry and it would be quick.

The purpose of the call was to test my bilingual speaking ability and gauge my experience. The problem was I had to talk to the lady, in English, while handing off my military equipment to my non-English speaking peer which does look suspicious (we have strict policies about talking to foreigners). But it was a calculated risk, since I knew the guy and he didn't care and was not likely to rat me out.

Anyways, I ended up getting a coding assignment via email which was basically a few screenshots of a Pokémon listing application. I was asked to try to implement the UI in the pictures, with certain functionality like favoriting and un-favoriting a Pokémon. I was also asked to use React, Redux, TypeScript, and write unit tests in Jest.

I was given three days to submit the project.

screen1
One screen to list Pokémon info retrieved from an exported JSON data
screen2
Another screen to view favorite Pokémon

Bear in mind that I did not want to ask for an extension or a better time to do the project because I did not want to reveal that I was doing my military service.

Due to the reasons I mentioned earlier, any company was less likely to consider me for a job because of my unfinished military service status, no matter how long I had left. So I had to take the challenge and do that project in the time provided.

At least it wasn't a technical interview over zoom which would have been impossible for me.

There was no way I could build this web app using my phone or even offline on the PC. I needed packages, and I needed to read docs.

So, using my relatively senior position in my office, I spent those three days pretending to work and study late into the night at the office. I would hook up my phone to the PC and use my phone's data to access the internet and code on an online IDE.

If anyone happened to walk in on me during my all-nighters, all they would see is me staring at an ebook I alt-tabbed into in a foreign language on a strange subject. My phone and cable connection would be well hidden under paperwork and sometimes under my own cap.

At one point, I was slow to react and a fellow soldier saw me working on my coding assignment but he just assumed I was coding another game or program for fun.

Despite the hurdles and the lack of sleep during those 3 days, I was able to get most of the project done. I had a functional frontend working that was responsive, cleanly organized and coded, and was pixel-perfect compared to the screenshots I received. I only skimped on the testing part even though its importance was stressed in the assignment instructions.

Still, I believe I did a good job prioritizing and was ready to discuss my choices and reasoning in the technical interview.

I really enjoyed this format of candidate assessment as it made me practice and show off my frontend skills. It also served as a clue to the the kinds of projects and tech stack (at least frontend-wise) I'd be working on.

Nevertheless, my follow-up interview with that team would be about a month later after finishing my military service.

IBM

The other company I heard back from was IBM. This one was a pleasant surprise. I had applied to one of their job postings on LinkedIn which, in my opinion, had a really vague generic job description. But it really boiled down to an Application Developer (the job title) with working knowledge of cloud development.

I had that cloud knowledge, although it was mostly self-taught and based on hobby projects. However, I did not have any enterprise experience at that point. I had never worked on a large team, and the biggest development team I collaborated with was 4-5 members strong.

I think my CV did not adequately reflect that so I made sure to point it out in any upcoming interview.

Nevertheless, I was very excited to try my luck with IBM. To my disappointment, the first step of the interview process was to pass an online IQ assessment. I've done and passed those before, but I hate them. They do a very good job of triggering my anxiety and making me feel dumb.

Luckily, I had my smartphone which I used to download apps that let you practice IQ-related assessments in a gamified manner. Lumosity is a good one that I used, among others.

I spent almost a week practicing whenever I was able, and it was more nerve-wrecking than any face-to-face technical interview I could imagine.

I think I feared it so much because I believed that this step of the interview was purely automated. I thought it would boil down to a test score number that you needed to pass to get to progress to the actual interview. And the worst part was that you'd never know how well you did or what range they were looking for!

Anyways, I eventually overcame my anxiety and took the test on my phone (I made sure I was in a private place on base to avoid distractions).

I would not hear from IBM again until two months later, thankfully after I was out of the army.

Catching Up with the Industry

During my remaining few weeks of military service, I shifted my priorities. Instead of taking courses, reading technical books, and applying for jobs, I started focusing on preparing for interviews and reading online technical blogs to catch up with industry trends.

I had a lot of time on my hands since my duties were easier to bear and I could delegate to other privates I trained under my command.

My aim at that point was to just familiarize myself with industry buzzwords, new technologies and stacks, and understand how, when, and more importantly why they were being used.

freeCodeCamp News was an amazing resource I used to browse a lot. I also loved browsing articles and following notable companies' blogs on Medium like Netflix and Slack.

Another resource I used a lot was youtube. Again freeCodeCamp has an amazing YouTube channel covering tons of topics and talks that I watched regularly. I also discovered IBM Cloud's channel which to this day is my go-to resource for understanding cloud technologies and concepts.

However, I tried to keep watching videos to a minimum and prioritized reading to avoid consuming all my mobile data and depleting my phone's charge (recharging phones is a hassle if you're not an officer in the army).

Gaining Valuable Social and Work Skills

At this point I wanted to highlight a personal insight. It may sound like serving in the army is a huge and unfair challenge that really messes up any career you'd hope to have as a developer.

And there might be the misconception out there that fresh veterans, no matter how young or old, who are trying to enter the developer job market might be rusty, less knowledgeable, and less up-to-date with current trends compared to other candidates.

In my case that wasn't true, simply because I was lucky enough to have fairly frequent access to a screen. Others can and do spend years in barren and isolated environments with no access to computers or phones. But even then, don't assume they didn't have access to offline knowledge like books or actual engineers they served with!

In fact let me make my case that veterans are amongst the most qualified candidates you can hire and work with. The following are the top engineering skills you can expect from most veterans:

Good communication

I am a firm believer that the most important skill a developer can have in our industry is good communication. Communication plays a key role in the success of any project, from the requirements gathering stage to the delivery and maintenance of a project.

The better you are at understanding a project's requirements and at asking the right questions while communicating accurate statuses, the more likely it is that you'll grow in your role and work on successful projects.

Veterans have been conditioned to follow orders in a quick manner while still being forced to weigh and evaluate every word of each order. We ask only good questions that add essential information required to complete the task.

In my experience, stupid questions in the military are a taboo that are met with an angry and humiliating backlash. Only the brave soldiers attempt to ask the right questions in vague situations, and any military is full of brave soldiers.

Good Social Skills

I touched a bit on adopting new social skills, like appealing to superiors to get certain privileges. But that's not the social skills I want you to have in mind when thinking of veterans.

What I didn't mention is how tightly knit an army base and unit can be despite vast differences that do exist in both personalities and backgrounds.

I have learned to form strong bonds with people who think so differently from how I think, and who have completely different values than I have. This is because we had to live with each other and watch each others' backs. Sometimes our lives literally depended on the trust we formed.

That is not to say there weren't bad personalities and conflicts that we had to deal with. But at the end of the day, we depended on each other for survival. We did not have to like each other, but we did have to count on each one doing their job right.

You can expect a veteran to try to cultivate strong relationships built on trust and to be able to handle conflict well.

Creative Problem Solving

Military personnel (at least in my area) are usually undersupplied, and do not have access to a lot of resources. The only things they have an abundance of are laborious chores and problems to solve.

In my experience, more often than not, we received seemingly unrealistic commands from officers that just seemed cruel and undoable in a reasonable timeframe.

These kinds of environments really force soldiers to work and collaborate together to find the most efficient way to execute a task.

Without much management, you can expect soldiers to start working together in an efficient manner. And they'll usually find creative solutions as quickly as possible (born from a need to get it over with and get some much needed rest in the army).

You can expect a veteran developer to think outside the box and take on seemingly impossible challenges without much complaint. You'll find only determination and hard work.

Wrapping Up

I finally finished my military service and handed over my duffle-bag on November 30th, 2020. I did my follow-up technical interviews with both Vodafone and IBM in the following month.

By the start of the new year I had competing offers from both companies, and ended up accepting the one from IBM. I now happily work there as a cloud developer.

While a lot of people view military service as a waste of time and a hurdle to aspiring developers, I think it proved it to be the opposite for me. If you shift your mindset and learn to adapt, you can really turn this challenge or any similar challenge into a learning opportunity.

If you are facing a similar challenge that's stopping you from working as a developer even though you want to, my advice would be to not give up. Find a way to turn your situation to your advantage.

Are you working a boring job with spreadsheets? Learn how to write spreadsheet scripts. Are you only using Word? Build a program that creates Word files and templates. Are you working manual labor in a warehouse or a farm? Listen to technology podcasts. Are there no developer jobs in your area? Make your own! Freelance or build your own digital product.

Before you go...

Thank you for reading this far! I write posts about JavaScript, cloud development, and my personal educational and professional experiences as a self-taught developer. So feel free to follow me on twitter @adham_benhawy where I tweet about them too!