Being able to work at a place or project that has all of these things is a rare opportunity, and if I get it I would definitely give everything I have to it.
I want to do work I'm proud of
I've often had to do work that I believed had bad performance, believed will cause bugs, and is just troublesome for other developers to deal with due to time constraints. I don't want to do that in my career anymore, I want to add value to all people who interact with my work, whether it's users or developers, and reaching a point where I've been doing this for seven years, it just hurts and it has to stop. I know I can do awesome stuff but I am held back, and I no longer want to be. I know that sometimes you have to sacrifice these things to reach a certain goal, but it's always been the sacrifice without the goal so far.
I want to make software that'll make both users and developers (performance, structure, readability, you name it) smile.
I want to create something meaningful
Throughout my career I've built too much software for clients where almost no users use the software, and those that do suffer from lack of maintenance; and I've also built too much software that has never seen the light of day. I want to build something that at least makes someone smile or saves some time in their day. I am extremely inspired by initiatives like IBM's Call for Code, a chance to save people from natural disasters using what I know? That's like a dream come true!
I want to grow as an engineer
I've been stuck doing the same kind of work over and over, building webapps and mobile apps that generally just do the same exact thing. I want to do something challenging, something new. I want to work on something that has to deal with scaling issues, I want to work on something like Docker or cloud services. I'm seeing a lot of cool stuff being done with Go, Rust, and Elixir lately and I want to be a part of those communities.
I want to have a mentor
I've never really had a mentor in my career and I've generally had to always figure things out on my own or build up teams. I want someone to build me up.
I want my time back, and I want to see the sun
Traditional work hours just drain my energy and leave me with a Vitamin-D deficiency, I honestly don't think that's healthy in any way imaginable, and it's unfair to all my loved ones. I want more time to give back to open source, I want to start a technical podcast, and do so much more. I would love to be in a workplace that enables me to do these things.
I want to work remotely
I believe remote work is definitely the next extension of our digital careers. I have distantly watched GitLab grow with that mission and am immensely impressed by what they've done. One of the things they noticed that one of the very first things people do when they join GitLab is move back to be close to their friends and family. It feels morally wrong for me to have to put friends and family second to my career (both due to lack of time, and lack of jobs where I live).
I need to be able to communicate with my colleagues
I would like to utilize the languages and skills I know to communicate with my colleagues. Most of my career has been in Saudi Arabia and so I have to be good with both Arabic and English. I'm pretty decent with written and spoken English, and I'm pretty decent with spoken Arabic too, but with written Arabic it's just hell for me because I believe we as Arabs still haven't decided how we want to use its written form, especially when discussing technical topics.
One example is that our language uses diacritics for vowels but we stopped using them in our written communication (probably because they make writing take so much longer) and it makes reading things involve a lot of guessing, and there are so many different dialects (without any grammar rules, any dictionary, or written resource you can look up), and that results in all sorts of communication issues and even bugs. I've often had to work with people who I struggle to communicate with because they dislike written communication (which makes things like pull request reviews quite difficult), and when they're ok with it, it's in an Arabic dialect that's different from mine. I would love to use Moden Standard Arabic but many Arabs (including me) don't know it that well, and for some it feels too formal (some even tell me, it feels like you're giving a speech rather than having a casual conversation), although there are certain places where that form is the norm, and I really love and respect that. I don't really have a problem with Arabic, but I have a problem with how we choose to use it, how we treat our dialects as a "lesser form" that should go away and thus refuse to standardize it... Since we are both speaking and writing in these dialects, we should have references, proper spellings, and dictionaries for it. If I want to do something as simple as searching an issue tracking system for a bug that used to happen when users selected a specific city, I can't write the city's actual name, I have to try and write it the same dialect as the person who reported it (and I may not necessarily know that dialect, and that person may not be on our team anymore, and not everyone will even expect this scenario or know how to deal with it). This also of course makes things like Natural Language Processing incredibly more difficult, and I perhaps should move this topic to its own page in the future.