Introduction
My name is Ed Sioufi, and I am a 35-year-old software developer born and raised in Beirut, Lebanon, with a deep-seated passion for innovation and creativity.
My journey into tech started at the age of 13, a pivotal moment when I wrote my first line of code. My curiosity was nurtured by my uncle, a computer science lecturer, who saw potential in my questions about how computers worked "on the inside." His challenge—"Do you really want to learn?"—was met with an enthusiastic yes from me, leading to him sharing with me the CDs (that’s right – those circular ancient relics!) of a Microsoft Certification Program. Reflecting on this brings a sense of nostalgia, reminding me of how far technology has come and how it has been a constant in my life. My early experience naturally guided me to studying computer engineering at university. It was a bit of an obvious choice, one that seemed already made for me.
Further along the road, still driven by my desire to kick-start new projects and explore independently, I immersed myself in the startup culture. This journey was not just about honing my technical skills but also about embracing the entrepreneurial spirit that drives innovation. Co-founding a mentoring platform for professionals was a highlight of my career, offering invaluable lessons in the importance of understanding human needs and market dynamics—lessons that were more about the unpredictability of human behavior than the predictability of technology.
These realizations prompted a shift in my focus from purely technical development to product management, where I could grow and apply my insights into human behavior to create more impactful and user-centered products. Alongside this professional journey, I've nurtured a hobby that offers a different kind of fulfillment: playing jazz piano. My early adventures in coding, coupled with my leisurely pursuit of jazz, have been integral to my development. They remind me that whether in technology or music, the joy comes from the process of creation and the satisfaction of bringing new ideas to life. As I continue to navigate the tech world, my focus remains on blending technical expertise with an understanding of human needs to build products that truly matter. My journey, marked by both challenges and achievements, reflects a commitment to lifelong learning and a passion for making a difference through technology—accompanied, of course, by the occasional jazz melody.
Software Development Fellow
career options
Software development is a dynamic and rapidly evolving field that offers a plethora of career paths to those interested in technology, problem-solving, and innovation. As businesses and organizations increasingly rely on technology to operate and grow, the demand for skilled software developers has never been higher. Whether you're just starting out or looking to pivot within the tech industry, there are numerous directions you can take your career, each with its own unique challenges and rewards. From specialized coding roles to leadership positions, the opportunities in software development are vast and varied. I, for example, started as a full-stack developer, then turned towards mobile for a brief period, before recently landing in the data engineering realm. Which areas speak to you today? What will your path be, and how will your direction change as you grow and evolve?
Front-end developers specialize in building the user interface and user experience of websites and web applications. They work with technologies like HTML, CSS, and JavaScript to create visually appealing and responsive designs that function well across different devices and browsers.
Back-end developers focus on the server-side of web applications, dealing with databases, server logic, and application integration. They often work with server-side languages like Python, Ruby, Java, and Node.js to build the infrastructure that powers websites and applications.
Full-stack developers have the skills to work on both the front-end and back-end of web applications. They are versatile developers who can handle everything from database management to user interface design, making them highly valuable in teams that cover the entire web development lifecycle.
Mobile developers specialize in creating applications for mobile devices, such as smartphones and tablets. They might work with native development tools like Swift for iOS and Kotlin for Android or use cross-platform frameworks like Flutter or React Native to build apps that work on multiple operating systems.
DevOps engineers focus on the intersection of development and operations, aiming to streamline the software development process. They work on automation, continuous integration, and delivery (CI/CD), infrastructure management, and monitoring, using tools like Docker, Jenkins, and Kubernetes to improve efficiency and reliability.
Software architects are responsible for making high-level design choices and dictating technical standards, including coding standards, tools, and platforms. Their role is to outline the overall structure of systems, ensuring that the software architecture is scalable, maintainable, and meets business objectives.
Software Development Fellow
skills
What are the main hard skills you use on a daily basis in your current job?
My daily work involves extensive use of multiple programming and scripting languages, including Python, SQL, and JavaScript. I've honed these skills through both formal education and self-directed learning, supplemented by hands-on experience in various projects. In practice, I use Python for data manipulation and automation tasks, SQL for querying and managing databases, and JavaScript for developing interactive web applications. These languages are fundamental tools for building and maintaining the complex systems that underpin modern web and data solutions.
Managing and optimizing relational databases is a core part of my role. I've developed a deep understanding of database design and SQL querying through coursework, professional training, and real-world application. This expertise is critical for ensuring data integrity, performance, and scalability. I frequently apply these skills to design efficient database schemas, write optimized queries, and manage data transactions, ensuring our applications and analytics platforms run smoothly and efficiently.
Transitioning to a data engineering role required me to master ELT processes and become proficient with the modern data stack, including tools like Snowflake, dbt, and Airbyte. I learned these skills through a combination of online courses, workshops, and on-the-job training. Implementing ELT processes allows me to efficiently manage data workflows, transforming raw data into actionable insights. This skill is crucial for supporting data-driven decision-making and analytics in my organization.
My experience with cloud computing platforms has been instrumental in deploying scalable and resilient applications and data pipelines. I've built my knowledge through certification programs and hands-on project work. Utilizing services like AWS Lambda, Google BigQuery, and Azure Blob Storage, I architect solutions that leverage the cloud's power for flexibility, scalability, and cost-efficiency, ensuring our systems are both robust and adaptable to changing demands.
Embracing DevOps practices has been a game-changer for improving the efficiency and reliability of our software development lifecycle. My journey into DevOps began with learning about automation tools, CI/CD pipelines, and containerization technologies through online tutorials, community forums, and practical applications. Implementing these practices, such as using Jenkins for automation and Docker for containerization, has streamlined our deployment processes, reduced downtime, and enhanced collaboration across development and operations teams.
What are the main soft skills you use on a daily basis in your current job?
Agency and Outcome Orientation encapsulate my proactive stance towards work and my focus on achieving results. By setting clear goals, taking ownership of projects, and driving towards meaningful outcomes, I've been able to make decisive contributions to my teams and projects. This approach has been reinforced by setting personal milestones, seeking feedback, and reflecting on project outcomes, ensuring that my efforts align with the broader objectives of the organizations I've worked for.
Communication and Listening are at the core of my daily interactions. The ability to clearly explain complex technical issues and actively listen to feedback or concerns has been crucial, especially when working with non-technical stakeholders. This skill has evolved through presenting projects, participating in team meetings, and engaging in one-on-one discussions, ensuring that projects align with organizational goals and addressing any gaps in understanding.
Problem-Solving and Critical Thinking have been my go-to skills for navigating the intricate challenges of data engineering. Whether it's designing scalable data pipelines or troubleshooting data storage issues, applying logical reasoning and a methodical approach to problem-solving has been key. These skills have been honed through tackling coding challenges, debugging, and continuous learning, enabling me to develop innovative solutions that enhance system efficiency and reliability.
Teamwork and Collaboration have been indispensable, given the collaborative nature of data projects. Working harmoniously with data scientists, analysts, and IT professionals requires a blend of empathy, open-mindedness, and the ability to integrate diverse viewpoints into cohesive project strategies. This skill set has grown through participating in agile teams, contributing to cross-functional projects, and engaging in constructive code reviews, ensuring that each project benefits from a rich tapestry of expertise.
Lastly, adaptability and Continuous Learning reflect my commitment to staying abreast of the rapidly evolving tech landscape. The tech field's constant changes demand a proactive approach to learning and the flexibility to pivot to new tools or methodologies as needed. This skill has been developed through self-directed learning, attending workshops, and embracing new technologies, allowing me to continuously improve and apply cutting-edge solutions to data-related challenges.
Ed
’s personal path
Tell us about your personal journey in
Software Development Fellow
:
After wrapping up my studies, I dove headfirst into the job market, not with a flurry of applications, but with an eye on unconventional paths: startups, freelancing, and the odd jobs that came my way. It wasn't about sending out resume after resume for me; it was about making meaningful connections and hustling every step of the way. Networking was my compass. It was about the grind—attending event after event, reaching out to new faces on community platforms (like Lunchclub during the Pandemic) and even those marathon sessions of speed mentoring that tested my endurance. Every conversation was a step forward, a potential lead, a learning opportunity. The freelance hustle was real. Securing gigs meant constantly pitching myself, showcasing my skills, and, most importantly, delivering quality work that spoke for itself. It was about ensuring my name came to mind when opportunities arose.
This approach wasn't just about finding work; it was about building a reputation brick by brick. When I look back at how I landed my current job, it wasn't through a conventional application but through a mix of part-time gigs that eventually led to a full-time offer. This journey to the U.S. and into a role I cherish was paved with persistence, resilience, and a bit of creative thinking.
To those starting out, remember, there's no single path to finding a job you love. It's a mix of hustle, making your own opportunities, and yes, a bit of luck. But more than anything, it's about not being afraid to take the road less traveled and to keep moving forward, even when the destination isn't clear. Your journey might be filled with twists, turns, and a few setbacks, but each step is a lesson learned and a step closer to where you're meant to be.
What would you tell your younger you regarding building your current career?
Look at a stone cutter hammering away at his rock, perhaps a hundred times without as much as a crack showing in it. Yet at the hundred-and-first blow it will split in two, and I know it was not the last blow that did it, but all that had gone before. — Jacob Riis.
I would share with my younger self the importance of patience and trust in the process of personal and professional development. Growth often occurs incrementally, not always visible in the moment but impactful over time. Embrace learning, be open to change, and remember that each experience, whether a success or setback, offers valuable lessons. Equally important is the essence of embracing every step of the journey. Celebrate each small win, whether it’s solving a complex problem or learning a new skill, as these moments build the foundation of your career. Understand the power of consistent, small efforts over time—this approach is key in achieving long-term goals and transforming challenges into steppingstones towards success. I would also highlight the importance of cultivating emotional intelligence alongside your technical expertise. Skills such as effective communication, empathy, and adaptability are indispensable in the tech industry. They not only enhance your ability to collaborate and innovate but also contribute to a harmonious work environment. Furthermore, prioritizing your mental well-being and personal growth is crucial. Finding a balance between work and life, managing stress, and nurturing your passions are essential practices that sustain your drive and creativity. To my younger self and those embarking on their tech journey, know that your path is uniquely yours. It's filled with opportunities to not only innovate and solve problems but also to grow as an individual. By balancing technical skills with emotional intelligence and personal care, you’ll not only advance in your career but also enjoy a fulfilling and meaningful journey.
Final thoughts & tips
As a final thought, I would like to highlight two pivotal strategies for students in the tech field: engaging with real projects and the essential pursuit of mentorship. These approaches not only dispel myths about the limitations of being a student but also champion high agency behavior in carving out a successful path in technology.
Engaging with Real Projects: The journey into real-world projects represents a crucial leap from theoretical learning to practical application. This shift challenges the pervasive myth that students are bound by an invisible shackle, restricting them to passive learning and low agency. The open-source community stands as a testament to the contrary, proving that the tech world values contributions from all, regardless of formal status or title. By participating in these projects, students break free from the notion of low agency, demonstrating that they can indeed influence and contribute to the technology landscape. This engagement not only fosters technical skills but also instills a sense of ownership, responsibility, and active participation in shaping the future of tech.
The Importance of Seeking Out Mentors Parallel: The hands-on experience gained from real projects, mentorship plays a critical role in a student's development. Securing a mentor in the tech industry can drastically alter the trajectory of one's journey, transforming it from a solo venture into a guided exploration. Mentors provide wisdom, insight, and feedback that are unattainable through coursework alone. They help debunk the myth of the solitary genius, showcasing the value of collaboration, guidance, and shared knowledge. A mentor acts as a bridge to the professional world, demystifying the 'real world' of technology and reinforcing the student's capacity for high agency behavior. Through mentorship, students learn to navigate the complexities of the tech industry, armed with insider knowledge and a supportive guide.
By embracing both real projects and mentorship, students in the tech field can transcend the traditional constraints of their role. This dual strategy not only combats the myth of student limitation but also promotes a model of high agency, empowering learners to take active control over their educational and professional journeys. Such an approach ensures that students are not merely passive recipients of knowledge but are dynamic participants in their learning and career development, fully capable of contributing to and shaping the future of technology.
Resources to dig in more
Doordash’s engineering blog
Doordash’s engineering blog goes deep into the intricate design decisions made at scale by a world-class team of engineers. I can’t recommend it enough. Some of the topics are a bit advanced, but it’s nothing that a side google search or ChatGPT session can’t solve – and it’s worth it!
/r/dataengineering
The /r/dataengineering sub on Reddit is a great resource for reading about the real challenges that data engineers face on a daily basis.
GitHub
Github is your friend! Whenever you find a repo that you like and use, take some time to go to the issues tab and start digging into the conversations. This gives you a backstage pass to how real software projects are managed.
Farnam Street
Farnam Street and Wait But Why, while not tech or software blogs, are a fascinating wealth of resources to learn critical thinking, frameworks, and mental models to perform better in your career.
Wait But Why
Farnam Street and Wait But Why, while not tech or software blogs, are a fascinating wealth of resources to learn critical thinking, frameworks, and mental models to perform better in your career.
Stratechery
Stratechery is a great resource to understand the big trends in the tech industry from a business strategy perspective.