TL;DR The entry threshold in software development industry gets lower & lower - it's a great opportunity for so-called developing countries to spur the "close-the-gap" efforts towards more advanced ones. Some approach it more naively (ehhh, India ...), some approach it smarter - I had a chance to take a peek into how it's done in Tunisia, perceived as the most open & progressive Arabic country. My general impression is that Tunisian software developers have strong enough foundation to be competitive / cooperate as equal (depends on whether you see them as competition or associates) with their European / American peers. Ofc nothing is given, foundation is just a beginning, but at least their handicap (due to infrastructure, education or political constraints) is not crippling.
Stereotypes, stereotypes - they (still, unfortunately) reign in our industry:
- Silicon Valley is a cradle of all innovation (everyone else's just an observer)
- Eastern Europe is cheap, raw talent (interested mainly in building new ransomware)
- China produces an army of silent programming geniuses - half of them develops Alibaba, the other half works for chinese government to take over the world
- India provides uncountable hordes of devs of questionable quality who can only perform perfectly-defined codework that doesn't require real skill
Apart from the ridiculousness of these bias - what about other geographies? Other regions & countries? Central & South America? Oceania? Balkans? Africa? Does anyone practice software development there?
Where the desert meets the sea
Recently I've been visiting a Tunisian office of a company I currently work for - I've spend there a week & during this time I've met software developers, testers, analysts & other IT professionals who were professionally raised (educated) & spent their hitherto professional career in Northern Africa. This post is about my personal impressions & thoughts from this trip. No facts, only opinions :) this time.
I'll spare you the general description of Tunisia, its current political & economic situation, internal tensions & overall stability within the country - I'm sure you're just 1-2 clicks away from far more comprehensive & accurate descriptions. But it's hard to omit the fact that engineers who live there have much more difficult starting conditions (for the professional career) - government-driven protection of national currency prohibits them from paying on-line (or even transferring money in physical form) for both on-line & physical resources (e.g. books, software licenses, on-line courses) abroad, local publishing market pales in comparison to what's available globally ofc. What majority of Devs in Europe or US treats as free & unrestricted information flow remains a rarity & luxury for our collegues in Tunisia (not even mentioning other countries from Norhern Africa, who are even less liberal than Tunisia).
No wonder that many engineers choses voluntary exodus - they know their skills are in high demand in Europe, so they usually pick France - the country who has colonized & occupied them in XIX & XX century (as a remnant of this fact, majority of Tunisians speak French nowadays). French companies obviously do not mind.
Truths & fairy tales
OK, but back to what I've actually experienced in Tunisia, time to dispel some myths:
Btw. I won't use any names or personal details here - I never ask for authorization (remember? there's NO KILL SWITCH), but OTOH I don't want anyone feel personally incomfortable because of what I've put in this post.
I've read somewhere that 55% of engineering students in Tunisia are women. Obviously I can't prove this number, it can be bogus, but in teams I've met this ratio was matched (never happened to me in EU). Needless to say women are not "assisting" - they are on par with men when it comes to express opinion, make the decision, participate in any kind of technical task. My friends there were frequently switching between different languages (depending on who was involved in discussion: arabic, french, english), so I can't tell for sure, but I haven't heard/sensed any sort of disrespect or any toxic treatment that could have been traced to gender issue. That was VERY uplifting.
Tunisian society is VERY diverse, what is of course reflected also within developers community. Some are more conservative, some are more inclined for so-called modern values & social concepts. Their approach to religion varies from strict & canonical adherence to more relaxed (yet still backed up with unwavering faith) stance. But what's really interesting is the fact that one could not sense any kind of tension in this mixture - no-one was looking askance (or they've managed to fool me completely ...) at others, they seemed to accept others exactly as they are, regardless of their headwear, worldview, piety, lifestyle. Again, that's not the picture you get from massmedia in Europe. And that corresponds to very obvious truth - pious engineer in traditional arabic attire can code just as well as a pale geek in hoodie, with tattooed sleeves & ripped jeans.
It's not perfect, there are pluses & there are minuses as well.
- obviously, English is a must in this profession, but in case of Tunisia it's not even their typical secondary language; in general all youngsters do learn it, but not all them (even Devs) master it up to the degree needed for effective software crafting; fortunately this was not much of a problem in case of team I came there for, but nevertheless - issue exists (at least for now)
- of course there are also cultural differences that impact the communication - for Arabs (98% of Tunisians are Arabs) it's quite simple: in their life they are (in general) passion-driven & emotional (while e.g. Slavs are thick-skinned and rather impassionate); this has some negative effects - they (as people) associate themselves very (too?) closely with their work (e.g. take criticism personally) which isn't healthy at all - frankly, I wasn't exposed too much to this effect: primarily because of their hospitability, but also due to fact that I was the most senior (hence respected) in the group; fortunately it didn't mean that whatever I say my hosts will just nod politely - they were not afraid to ask questions or provide comments (in general, there are always exceptions ofc)
- maybe it was just the group I've worked with, but I really liked how they collaborated as a team - they acted TOGETHER, with shared goal, like a real team (it's one of the hardest things to teach people IMHO) - they didn't work in separation but focused on 1 topic & dynamically: paired, assigned sub-tasks, helped with others' problems - I've seen them as 1 organism, not bunch of individuals; and what is the most important: it worked, they were working on something different than before, slightly out of their comfort zone, but they were able to move smoothly & steadily #thumbsup
Theory & education
Group I was co-operating with was relatively young & unexperienced (I think they got a good balance of skills & knowledge though), but they are no push-overs or randoms: all of them have their degrees from local technical universities & apparently these are based on french standards, which may not be perfect ;> but clearly sufficient from whole SDLC (software development life-cycle) understanding standpoint.
My Tunisian associates are no "hobby-coders" or greenhorn students:
- they understand what differentiates committed code from working software
- they were able to identify issues in existing delivery processes & technical platform itself
- they were able to apply critical thinking (backed up with technical knowledge) to propose their own solutions to higher-level stated problems (express as WHAT, not HOW)
- they had a good sense of what's a reasonable level of independence - they've set well their range of responsibility & knew when to ask for support / escalate risk
That's the critical foundation to build good products - not really related to any particular technology, yet absolutely crucial for any software engineer.
Again, maybe it's just the group I've met (as you can imagine they were carefully filtered during recruitment), but I didn't see any significant difference between them & their average peers from European countries I know. Of course they vary a lot (passionate VS more 9-to-5, code geeks VS product builders, etc.) but in a very similar way you encounter on daily basis in EU.
Obviously there ARE differences (between TUN & EU):
- in EU developers have more 'vehicles' to realize themselves (if they want to) - myriads of meet-ups, interest groups, conferences, hackathons, there are whole OSS-focused communities built around particular topics - this clearly boosts the interested individuals even more, so lacking all of that is quite a handicap for my African fellows
- geo-political situation in EU is very stable what means that e.g. polish Devs do not have to co-operate with foreign entities to do something interesting (& profitable); many companies move all branches of their activity to Poland, new polish (funder locally or externally) companies keep popping up (locally) like crazy - this trend has promoted countries like Poland from being a cheap outsourcing center to independent engineering hub that can shape & deliver products end-to-end -> starting with business concept & vision, ending with successful (effective & maintainable long-term) service. Tunisia is not there yet & if outsourcing trends deepen here, it WILL BE very detrimental to engineers' skills & capabilities long-term
In my case (here & now): I don't see any reasons why our fellow Tunisians & their peers from EU countries couldn't collaborate as equals, on equally demanding challenges. Ofc remember that this is in fact some sort of generalization: if you don't set proper standards in your recruitment pipeline you can get mediocre developers in any geography.
Northern Africans may be Arabs, but they are also Mediterraneans & we all know what it is associated with: "Más tarde", "Mañana", "Later"-kind of attitude (btw. sorry for using Spanish, I just don't know Italion or Greek words, which would fit here even better ;>). This kind of mindset (relaxed, stoic, some even say - lazy) does not really fit software engineering profession that requires some sort of discipline, ritualisation, consistency, timing & commitment.
I can't tell for sure, because I've spend there just 1 week (& nothing really taxing has happened within that time), but there was certainly an awareness of duty in Tunisians developers I've met - they got it (without me telling) that what they do is for all the teams to use, so they need to step into others' boots to make sure it's clear & usable enough. They had a good understanding (& sometimes it was visibly frightening them) of consequences of breaking the dependencies between teams - in this aspect they seemed even more mature than many teams I've met in EU.
Their work culture takes a lot from the French one - which in fact is not good at all (to say the least), but fortunately they seem more relaxed & their work-life balance is more healthy (even if they are struggling more to support their families).
It would take several blogs posts of this size to describe all my impressions from this trip (what? no zebra crossings? what? no streetlights? what? barbwire & tanks in the streets?), but I'll leave it like that for now.
Yes, I was in a different world (I travel a lot, not very rarely to developing countries), but this world is NOT that different when it comes to developing software products. Geographical distance doesn't help, neither does worse infrastructure (incl. Internet connections) nor (sometimes) language barrier, but still - Northern Africa ain't just a desert filled with nomads & pushy salesmen who want to sell you a bottle of perfume of unknown origin ... There are developers here & they may start handicapped, but they relentlessly try to reduce the gap between them & the rest of the world. Currently - the ones who are hard-working (in terms of self-development), motivated & ambitious have no reason for complexes - they can work on par with their colleagues from the other parts of the world.
I want to be very clear here - I'm not trying to convince you that Tunisian developers are either better or worse than they EU counterparts. This is very individual & ofc depends on particular person: how much (s)he invests in her/himself, how strong is the passion within her/himself, how wisely (s)he drives professional career. My point is that their baseline (starting point for career) is solid enough to provide comparable opportunities / reach similar professional proficiency. But nothing is granted, nothing is for free - this is something all the Devs, regardless of their origin & place of living earn with their tears & sweat.
I'll conclude that post with just one thing I wish my Tunisian colleagues:
Hopefully the overall development of their country will keep the pace of of their own development as engineers (general peer group) - that's the only way to stop the talent exodus & energize local entrepreneurship so young Tunisians will help shaping the bright future of their own country, instead of doing stupid, repeatable work within managed services centers or other "factories" where quality & common sense are far less important than quantity & predictable throughput.