Mahdi Akbari

Developer

What Is It Like to Be a Programmer in Iran?

2023-08-22

I am Iranian, and I live in Tehran, the capital of Iran. As you might know, Iran is located in the Middle East, and we speak Persian.


I have a confession to make; being and becoming a developer in Iran isn’t easy; there are numerous obstacles in the way.

The Early Stages: Introduction to Programming

I was introduced to programming by one of my relatives who worked as a network administrator at BMI (Bank Melli Iran). Before that, when I was in primary school, one of our teachers taught us how to change operating systems and introduced us to various hardware components in a PC. In 2014, during my first year of junior high school (In Iran, the education system follows K-12), I wrote my first line of code.


And thus, my journey began.

Diving into Development

In the first two years of my programming journey, I primarily relied on Persian resources and tutorials. However, my search skills were limited because I wasn’t familiar with specific programming terminology. Afterward, I transitioned to learning from YouTube. As a non-native English speaker, comprehending the content was challenging, but it had the unexpected benefit of improving my English skills.


During the initial years of relying on Persian resources, my focus was mainly on Windows app development, where I learned Visual Basic and C#. However, in the last few months, I found myself absorbed in the world of web development.


As I began exploring YouTube tutorials, my primary focus shifted towards web development. Learning the basics of HTML and CSS was relatively straightforward, as they are not programming languages. However, mastering JavaScript took me some time. During this period, I concurrently embarked on my journey into backend development, starting with PHP.

Becoming a Full-Stack Developer

I had to become proficient in full-stack development because, at that time, I needed to code both the front-end and back-end of applications.


While I was learning, I came across Laravel, which in turn introduced me to Vue.js. However, I didn’t particularly enjoy working with PHP, so I decided not to continue coding in PHP or Laravel. Instead, I made a switch to Go (Golang).


Go turned out to be an excellent fit for me, especially as I had a dream of building scalable systems. I continued learning it up to the present day, and it has remained my primary programming language for several years. But the difference here is now I mainly read books and documentations.

Challenges Beyond Coding

Now, you might be wondering if this learning path seems quite typical, so why would I assert that becoming and being a developer in Iran can be challenging?


Let’s rewind to the year when I began my coding journey. At that time, I didn’t have a phone, nor did I possess a Wi-Fi modem to connect to the internet. My primary resources were offline tutorials and books available in Persian.


Later, when I acquired a phone, I still lacked a modem, so I had to purchase data from my SIM card provider. This was quite costly for me, as I didn’t want to burden my parents with the expenses. Additionally, the cellular data I had access to was limited to 3G, which was relatively slow.


But the challenges didn’t end there. YouTube, a valuable source of learning, is blocked in Iran. To access it, one must have a VPN, and even free VPNs were often slow to load.

In addition to the challenges I’ve mentioned, Iran’s presence on the FATF blacklist further complicated matters. This meant that services like PayPal and Stripe were unavailable, severely limiting online business opportunities. Transactions often required an Iranian credit card, effectively limiting access to those inside Iran.


Purchasing items from platforms like Amazon became an arduous task, involving numerous intermediaries and often coming at a steep cost. Access to valuable learning resources such as books from O’Reilly, Packt, or No Starch Press was restricted, making it challenging to stay updated with the latest industry knowledge and trends. These limitations added to the overall complexity of being a developer in Iran.

Resorting to Alternative Means

Given the restrictions and limited access to essential learning resources, I resorted to using platforms like Libgen and engaging in unauthorized downloading to access the materials I needed. This was a practical but less-than-ideal solution to overcome the hurdles imposed by the circumstances I faced as a developer in Iran.

Advanced Censorship and Evading Blocks

Additionally, it’s important to note that these challenges are largely a consequence of the sanctions imposed due to the policies of the Islamic Republic regime. Simple requests to services like Docker Registry often result in a frustrating “403 Forbidden” response. The restrictions extend to widely used platforms such as Google Cloud products and, unfortunately, even services like OpenAI. These limitations, while imposed for political reasons by the Islamic Republic regime, can considerably hinder the work and opportunities of individuals in Iran, including developers like myself.

A Web of Blocks

In addition to the challenges I’ve previously mentioned, it’s crucial to highlight the wide array of platforms that are blocked in Iran by the dictatorial regime. This includes social media platforms like Reddit, Instagram, Telegram, Twitter, and Facebook, limiting access to global communication and information sharing. Even platforms like Goodreads and Quora are not accessible, further isolating individuals from valuable resources and knowledge. The ongoing list of blocked websites and services underscores the significant constraints individuals in Iran face due to the actions of the dictatorial regime.

Innovative Solutions: Navigating Censorship

Overcoming these hurdles requires ingenuity. I employ a solution involving cryptocurrencies, remote VPS (Virtual Private Server) purchases, and the setup of Shadowsocks or v2ray on my own. This approach offers more control, as purchasing VPN services from providers often results in swift blocking. Iran’s advanced internet censorship apparatus employs machine learning to detect unusual traffic patterns. Even a hint of VPN or proxy activity leads to immediate blocking.

Economic Realities

The difficulties don’t stop there; 10,000 Iranian Rials are equivalent to just $0.2 USD. This stark contrast underscores the economic challenges faced by many in Iran, especially when considering that the poverty line is set at 320,000,000 Iranian Rials, which is equivalent to a mere $640 USD (per month). In contrast, the average income for a person in a month is about 150,000,000 Iranian Rials, roughly equivalent to $307 USD.

Opportunities Beyond Borders

Developers in Iran, like many others in the country, often face challenges when it comes to earning a sufficient income. The economic conditions and currency devaluation can make it difficult to achieve a comfortable standard of living. However, there is a silver lining for those who work for companies or clients in other countries. As they are typically paid in cryptocurrency, they have the potential to earn more than the average income in Iran. This difference in income levels highlights the economic disparities and opportunities that exist for developers in Iran, especially when working on international projects.

Engage and Connect

My post ends here. If you have any questions about Iran or myself, please feel free to ask in the comments section.


Wish you enjoyed reading about my journey as a developer in Iran. If you’re interested in collaboration, you can find me on GitHub at GitHub Profile. I also maintain a blog in Persian at blackestwhite.github.io/fa. Feel free to get in touch with me via email at pesaregoal@gmail.com. I’m always open to new opportunities and discussions.


this post was originally published on my Medium account, link to post