I am an Embedded Software Engineer, specializing in the robotics Industry. I have also lead programming courses to 1000+ people. I also blog & speak at various events. AMA

Preslav Mihaylov
Dec 23, 2017

Hi, My name is Preslav.

I am an Embedded Software Engineer from Bulgaria, writing software for the robotics industry. 

I have also lead courses on various programming topics (Basics, OOP, Algorithms, Data Structures) to young people in my city.

Apart from leading trainings, I make presentations for various programming events in Bulgaria, as well as presentations targeted to young students with the purpose of inspiring them to take on programming as a career path.

In order to share my knowledge to a wider audience, I maintain a blog - pmihaylov.com, where I talk about what I have learned as a software engineer and presenter. You can also find some info about all the books I read there, as I am a keen book worm!



What is the Vibe of this AMA? What is AMA Vibe?

This AMA has finished, no more comments and questions can be posted and votes submitted to those. Check other similar AMAs here or host your own AMA!

Conversation (42)

In three easy steps and under a minute you could be hosting your own AMA. Join our passionate community of AMA hosts and schedule your own AMA today.

Let's get started!

What differentiates you from other software engineers?

Dec 22, 11:05PM EST0

I cannot say for other software engineers, I can only speak for myself.

My goal as a software engineer is to first cultivate a solid understanding not only of programming, but of computer science principles as well.

Apart from that, I also focus on developing my soft skills, including presenting, by reading various books and attending different non-CS courses. I do that because my mission is to not only become a great software developer, but to also become a great educator in order to spread all the knowledge I gain and help the people eager to grow and learn.

Dec 23, 7:49AM EST0

Did you work on any project just for yourself? What was it?

Dec 22, 9:53PM EST0

I have created my own projects mostly with educational purposes - to learn something new. 

The coolest one I have ever done is creating my own computer - github.com/PreslavMihaylov/nand2tetris

It is a project based on a computer science course from nand2tetris.org. I think it would be beneficial for every software developer to complete a project like this.

Apart from that, I have created some projects as part of a team with educational purposes as well. One of the coolest is: github.com/PreslavMihaylov/Invasion-TotalDefense

Dec 23, 7:40AM EST0
Show all 3 replies

What are the difficult parts and which parts are fun in working in robotics industry?

Dec 22, 5:51PM EST0

The difficulty in working with robotics and embedded software in general is that creating such software is highly critical. That is why, such software must be extremely well tested and bullet proof, since a tiny flaw can cause a robot costing 20K dollars to crash.

So the main challenge is creating a highly reliable system. The fun part is all the different challenges with creating robots, like making the movement stable, predicting what movement the robot will do, etc. Another cool aspect for me is the exposure to real hardware. When creating embedded SW, you are often required to have some general electronics knowledge as well.

Dec 23, 7:43AM EST0

What is the importance of your job in a project?

Dec 22, 9:06AM EST0

My role in the project I work on is to create a stable, reliable and reusable platform, which would serve to drive the horde of robots in our company's warehouse. www.bbc.com/news/video_and_audio/headlines/38897417/the-ocado-warehouse-run-by-robots

Dec 23, 7:46AM EST0

When did you know that you wanted to become a software engineer?

Dec 22, 8:28AM EST0

That was when I created my first game in high school.

It was around 5 weeks after I first started programming. Before that, it was just something interesting I was trying out. But after I made my first game, I realized programming is my new favorite endeavor.

Beforehand, I was playing computer games all day every day. After that, I was programming all day every day.

Dec 22, 9:51AM EST0

Where do you see software engineering in the future?

Dec 22, 7:13AM EST0


This is an industry taking up a huge chunk of every other industry, whether its finance, medicine, aviation.

I believe it is a great industry to be in as demand is ever more growing and the challenges it offers are pretty exciting, compared to other industries.

Dec 22, 10:07AM EST0

How do you test the quality of your codes?

Dec 22, 6:54AM EST0

I like following Test Driven Development (TDD) practices when possible. That is, the strict version of it, where you follow the 3 laws of TDD (butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) not simply "Writing tests before you write code". That is not true TDD.

If not possible, then I still test my code as best as I can can through integration tests and unit tests, but a lot less via unit tests, since the reason not to use TDD is because I can't effectively use unit tests. (I have seen such use cases).

Dec 22, 9:54AM EST0

What was the first software you ever wrote?

Dec 22, 6:30AM EST0

At first, I was creating simple programs for solving the usual programming basics tasks - sort an array, find the prime number, etc.

My first own side project, though was a game. goo.gl/ZNDdnB

The code looks pretty nasty (I wrote it 5 weeks after I wrote my first "Hello World" program), but I'm still proud of it. Oh, the memories!

Dec 22, 9:56AM EST0

What is the most interesting job you have ever done?

Dec 22, 5:49AM EST0

That would be my current job.

Currently, I create embedded software for robots, which automate the storage in our company's warehouses. 

Dec 22, 9:58AM EST0

Do you feel like programming is the craft of the future? Why?

Dec 22, 4:37AM EST0

I can't say it's the "craft of the future", because there are many other crafts as well. I believe programming is not for everyone, not because it is too hard, but because there are different people on the world.

However, I do believe that the software industry is ever more growing, since software is becoming a fundamental part of our lives and of other industries as well.

That is why, there will be a demand for great developers now and in the future and those who have the guts to do what it takes, will be greatly rewarded.

Dec 23, 7:52AM EST0

What is harder and what is more enjoyable to you – writing software or leading courses?

Dec 21, 11:03PM EST0

Both of these things are quite enjoyable to me.

I like balancing between the two. 

As for which one is the more challenging - they are challenging in different aspects, so it is hard to compare.

When programming, the challenge is to solve the problem in a most efficient way. It is also to be continuously learning new things every day, since it is a demanding industry.

When leading a course, the challenge is to share your knowledge in the most approachable and understandable way. You also have the usual challenges around public speaking - keeping the audience engaged, dealing with trouble makers, etc.

Dec 22, 10:02AM EST0

Why did you start your own blog? How often do you post and what topics do you focus on?

Dec 21, 4:48PM EST0

I have been leading courses for more than 2 years now. And although I was able to share a lot with my students, there has always been something more I want to share with them. But I just can't find the time for it all during lectures.

That includes programming related topics, but also a broader computer science topics, like computer architecture, operating systems, etc. Also, some auxillary things I am interested in like reading books and enhancing your soft skills.

So I created my blog in order to share all the things I can't share in my courses. Also, by maintaining a blog, I am able to spread my knowledge to a much wider audience.

Dec 22, 10:05AM EST0

Who do you aspire to be like? Who is your role model?

Dec 21, 2:52PM EST0

My greatest role model is Salmon Khan.

He is the creator of khanacademy.org and my goal is to develop the knowledge and skills to enable me to explain extremely complex topics in a simple way, just like he does.

Dec 23, 7:57AM EST0

Do you prefer working alone or as a part of a team? Why?

Dec 21, 12:06PM EST0

That highly depends on the team.

If I am part of a great team, with people, who freely share their knowledge, are friendly and strive to develop themselves as much as you do, then I definitely prefer working on a team.

Working on a team like that, can be greatly beneficial for all of you.

But if the teammates aren't as passionate and consider programming just a thing that "pays the bills" instead of a craft, then I prefer working alone.

Last edited @ Dec 23, 8:03AM EST.
Dec 23, 8:03AM EST0

You said you are a book worm – what are some of your favorite books?

Dec 21, 12:03PM EST0

If I have to mention one favorite book, that would be The 7 Habbits of highly effective people.

Before I read this book, I considered reading books a side thing I did for fun once in a while (and I didn't consider it much fun). I read 3 books a year.

Once I read it, I saw the value in reading great books. After that, I started reading 50 books a year.

Dec 23, 8:01AM EST0

How do you stay up to date and keep your skills sharp?

Dec 21, 11:26AM EST0

I spend at least 1 hour a day to read books/blogs or work on my side projects with an educational purpose.

Dec 23, 7:59AM EST0

What work of yours are you most proud of?

Dec 21, 9:02AM EST0

That would be the creation of my own computer, via an online course: github.com/PreslavMihaylov/nand2tetris

That project includes creating your own CPU, Memory, Assembler, Compiler, Operating system.

While I was creating that project, I was feeling like an extremely happy person.

Dec 23, 7:58AM EST0

What did you study and was it somehow related to programming?

Dec 21, 7:39AM EST0

I have studied in a code camp in Bulgaria, called Software University. Later, I began leading courses there as well.

Apart from that, I study Computer Science in a university in Varna, Bulgaria.

But mostly, I prefer learning via reading computer science books. They are the source for all modern computer science courses.

Also, I like attending courses from time to time, depending on the lecturer, since if he is a great professional, then you can gain much more from plain knowledge from attending his lectures.

Dec 23, 8:07AM EST0

How long does it usually take to write a software?

Dec 21, 7:04AM EST0

Between 1 day and forever.

There are some programs, which are created for one-time use. Those might be some programs, created for a programming competition, for example.

However, there are programs, which are created and continue evolving continuously. Take facebook for example. The core of it might have been created for several years, but even so, it continues evolving every day since there is always demand for new features.

Another factor for the velocity of software creation is how much effort you put into making it reliable and reusable. The effort there might mean that the software will take longer to be shipped, but will be easier to maintain in the future.

Dec 23, 7:55AM EST0

Have you ever worked with a famous brand? If yes, how was it?

Dec 21, 6:54AM EST0

I currently work for Ocado from their office in Sofia, Bulgaria.

They are the biggest online super market in Great Britain and are currently creating a platform, which they sell to other super market chains in GB and Europe in order to enable them to create their own online supermarket chains.

Last edited @ Dec 23, 8:09AM EST.
Dec 23, 8:08AM EST0
About #TechAMA

Your source for anything and everything in the world of technology.  From cellphone reviews to the Oculus Rift. You won’t want to miss one AMA Event here!

Interested in participating? Our user-friendly channel makes it possible for anyone to create an AMA on just about any imaginable topic that’s relevant to technology--and you. Just click the button on top right called CreateAMA.

The #TechAMA channel is owned and operated by AMAfeed, LLC.