Successful entrepreneurs without college degrees

Building tech without a CS degree

Today’s interview is with startup founder Amean who got into coding and entrepreneurship without a CS degree.

Hey, so can you introduce yourself?

I am currently living in San Francisco, co-founding a startup called Commonplace focused on building the next generation of digital libraries for the internet. I grew up in Cairo, Egypt, where I lived most of my life enjoying the excellent weather. After finishing high school in Egypt, I took the opportunity to move to Canada to attend university to pursue better education in exchange for the freezing weather. I’ve been fortunate to work in various technical roles and learn many areas of tech over the past few years.

Before working on Commonplace, I was a distributed systems engineer at Protocol Labs, where I worked on a decentralized CDN. I previously also held roles in machine learning, full-stack development, and data science. I hold a patent for my work in machine learning in natural language processing. My current passion and interests lie in distributed systems, information theory, zero-knowledge proofs, and machine learning. In general, I simply love building technology that people use.

Why did you learn to code?

I learned to code when I was in early high school. Back then, I was interested in electronics, hardware, and building projects. Specifically, I was fascinated by aviation, and my main hobby was building RC planes. While taking some aerospace engineering courses online, I realized how long and repetitive some calculations were, even when using my handheld calculator. It was then that I discovered the world of coding.

I learned how to code so I could write basic programs to help with these long calculations, which saved me countless hours on my coursework. I also quickly started noticing how configurable some hardware could be with code. In my case, I wanted to configure flight controllers for the RC planes I was building. I also got into translating many of my math classes into programs as a way to learn the concepts we covered.

Gradually, the number of challenges I encountered where I thought, “Oh, I can write a program to do that,” grew significantly. With the only requirements being a functioning laptop and decent internet connection, I was completely hooked on continuing to learn and build solutions.

Amean

How did you learn coding in high school?

My first introduction to coding was through a YouTube series teaching Java using Eclipse. I unfortunately don’t recall which one it was exactly. I just remember printing my first “hello world” in my terminal after hours of installation and feeling like an absolute hacker. Shortly after, I discovered Python and immediately made the switch. I completed a MOOC on edX offered by MITx called “Introduction to Computer Science and Programming Using Python.”

At that time, the world of online courses was still new, with only a handful of options compared to what exists now. I discovered Coursera back then as well and completed Andrew Ng’s classic intro to machine learning course, which was taught in Matlab at the time.

The world of free online courses allowed me to explore my curiosity relentlessly. I completed numerous courses on Coursera and edX. YouTube was also an incredible resource, with many creators producing educational material for free. For a while during high school, if anyone asked what I’d be up to on the weekends, the answer would be “working on my online courses.”

What advice do you have for people learning to code in the AI era?

One piece of advice I have for aspiring software engineers is that as a developer/engineer, your core job is to solve technical problems, not just to write code. Code was created to solve problems, not the other way around, and the distinction is critical. Coding is just a tool you use to build software, and even though it is currently the primary one, that might certainly change moving forward.

As a developer, you need to adapt to your tools constantly changing over time. The problem-solving aspect will never disappear. I mention all this because, in my opinion, your approach to learning how to code should be learning how to solve software problems.

Online courses are really useful because they provide a structured syllabus, exercises, and sample projects to build. In my opinion, the best courses are those that teach programming as a subject and use the coding language as a tool. The courses designed specifically to teach coding languages are rarely useful long-term and mostly feel like memorization that you forget almost immediately.

LLMs are an absolutely phenomenal tool for learning how to code. It’s like having a full-time teacher ready to explain concepts at different levels. One huge downside of LLMs is that they make it incredibly easy to become complacent when solving problems, and you really need to guard against that while learning. People still need to learn the fundamentals of how to think when building software, and that takes hard work and practice. If your current learning path isn’t exposing you to that, then you’re not making meaningful progress.

Ultimately, my favorite method of learning is simply building projects. Find exciting problems you want to solve, sit down, and try to figure out how to build solutions yourself. The “figuring out” part teaches you the most valuable lessons. Even better, always try building projects with other people. Collaborating with others has consistently led to my fastest learning trajectories, my best products, and most importantly, the most enjoyable times I’ve had as an engineer. Nothing beats that.

How did you get your first data scientist job?

When I was in high school in Egypt, I participated in a STEM program for youth called Spark. They hosted several tours at engineering firms in Egypt for high school students, and I spoke to one of the hosts during a tour about my interest in programming. He kindly connected me to a company called dlc tech led by Mohamed Abdeltawab, and they were open to hiring interns. The company specialized in building enterprise resource planning (ERP) systems for travel firms.

They agreed to interview me for a junior data scientist role, and at that point, I was a complete noob. I remember entering the interview room, looking at a screen they had with some Python code, and excitedly blurting out, “Hey, that’s a dictionary, right!” As I said, complete noob.

They decided to take a chance and hire me anyway based on my potential to learn. I worked part-time during high school and full-time during the summer. It was there where my coding skills evolved from a hobby to delivering software that people use.

I mainly worked on APIs and analytics dashboards. My supervisors, Maged Shalaby and Sherif Abdelkarim, were extremely supportive during my learning curve. They answered my basic questions, found appropriate tasks for me, and took time to give me opportunities to contribute to more advanced projects.

How has your life changed since learning to code?

Coding has transformed my life on both personal and professional levels. Growing up in Egypt, I was really interested in hardware engineering, but it was extremely difficult to access certain resources there like electronics, tools, workshops, etc. Additionally, Egypt was experiencing numerous security issues due to the ongoing revolutions, and my hobby of building RC planes was quite problematic in that environment.

I got in trouble for it a few times (to be clear, I never had any malicious intentions), which forced me to stop pursuing many of my interests in engineering as a kid. Coding became my savior and emerged as the perfect hobby that allowed me to pursue all my engineering interests through a different medium.

When I discovered coding, I genuinely felt like I could build applications that change the world from my couch at home with my laptop and moderately decent internet. It felt like a binary switch—there was the world before, and after discovering how to code.

Professionally, coding proved to be an invaluable skill. Due to the low barrier of entry, I was able to gain extensive hands-on experience by the time I needed to find a job. It was much easier to convince myself that I could build the next “YouTube” versus something like the next “Boeing 777” with the resources I had.

I didn’t end up building the next YouTube, but I still had the confidence to pursue very ambitious coding projects. By the time I graduated from university, I had already built numerous deployed applications, founded a software startup, and secured a patent in machine learning. Having that experience was much more significant in helping me land jobs than my grades ever were.

What startup are you bootstrapping just now?

I’m co-founding a startup called Commonplace (https://www.mycommon.place/) with the goal of automatically curating a digital library of everything you learn on the internet. With Commonplace, you can track books, articles, podcasts, and more, all in one unified space. Commonplace is a self-organizing archive.

It automatically tags everything you add, detects patterns in what topics you are focused on now, and allows you to search across everything you’ve learned. Additionally, Commonplace enables you to follow people you’re interested in to see what they read on the internet and what they have curated in their libraries.

What does a typical day as a software developer look like for you today?

The typical cycle for a software task for me follows this pattern:

  • Identify the deliverable/problem: What problem am I supposed to solve, and how does it impact the overall project? This is actually surprisingly challenging for certain tasks when working across large teams, but it is imperative to get right.
  • Map out a solution: The timeline for this varies greatly. If it’s a small bug, it can take minutes to find a solution. If it’s planning how to deliver a core feature for a new product line, it can take week(s) of proper research engineering with back-and-forth iteration to arrive at a solid solution.
  • Deliver a prototype ASAP: If my solution is going to fail, I want it to fail fast. I always try to verify that my solution works and, more importantly, solves the actual problem I initially intended to address.
  •  Iterate: Once the prototype is satisfactory, it’s time to iterate until it’s production-ready.
  •  Measure: Probably one of the most useful practices when writing software. As cliché as it is to say, you cannot improve what you do not measure.
  • Test: There are always bugs, and new features often break old ones. Tests resolve that.
  • Document: Writing good technical documentation is one of the most valuable skills I’ve developed as a developer.

Most of my days are spent working on one of these aspects, and the full cycle can take anywhere from one day to multiple weeks depending on the task. Typically, I’m working on multiple tasks simultaneously.

Regarding stack, I’m extremely stack-agnostic and mostly choose the best tool to solve the problem. I’ve used numerous tools and languages. To name some recent ones, I’ve been working mostly with Python, JavaScript, Rust, and Go. Some of my current go-to tools are Supabase for backend, Next.js for frontend, Vercel for deployment, and Claude for code completion.

What are your goals for the future?

What I want to do with my career the most is to relentlessly pursue my curiosity. That is much easier said than done. I currently view my career as an optimization problem. You have to explore sufficiently to find the best opportunities for exploitation, and sometimes taking a random step now and then greatly increases your chances of finding a better optimum.

While I’m still in my 20s, I’m maximizing exploration and risk-taking. Currently, I’m focused on building tech startups (https://www.mycommon.place/)  and I expect to remain in that realm for the next few years. This startup experience has been invaluable in understanding the full lifecycle of product development and user adoption, which has really helped me bring technical ideas to life in a much more impactful manner.

Looking ahead, I envision potentially returning to deep technical work, possibly pursuing a PhD to tackle research problems I’m passionate about. I am particularly interested in information theory, zero-knowledge proofs, and machine learning. One aspect that constantly humbles me is how unpredictable life has been so far. Two years ago, I would have never predicted where I am now, and the two years before that, I would have never predicted where I was, and so on. I’ve learned that I can plan reasonably well for the upcoming year maximum; anything beyond that horizon has consistently surprised me with unexpected opportunities and directions.

If you’re interested in following my journey and thoughts:

  • I write about technology and my experiences on my blog:
  • You can also connect with me on BlueSky