Software Engineering 101. Preface


I have started writing code approximately 8 years ago, studying theoretical physics in the university.

It was fun. It was exciting. I have uncovered the whole new world.

I really liked creating "things" (basically some very simple games and interactive physics engines) for myself.

But soon I have realized, that I can create "things" for other people too.

And they will even pay for those things :)

And that's how I've decided to be a programmer.


I often took some time to reflect upon the things I see around and analyze actions and decisions made.

I met a lot of different people and discussed a lot of "metaphysical" facets of programming, engineering, entrepreneurship and management.

It took me 3 years of practice and team collaboration to start feeling a subtle difference between "coders", "software developers" and "software engineers".

Eventually, I have come to the idea that I want to be a great Software Engineer (uppercase intended).


It's obvious for me that I am far far away from that goal. Still, I am focused on being productive, pragmatic and being able to create some real value.

In this series of posts I want to share the knowledge I've got from people around me.

I believe it can help me and you to become a better Engineer, to build Great Things and to promote the joy of our craft.

Note: the materials will be deep and thought provoking. Do not rush through it, give it some time.

This series is based on the talk "Software Engineering 101" I gave to my colleagues at yetu.

You can find the slides on slideshare.


  1. SE101. Constraints Everywhere
  2. SE101. Technologies Do Not Matter.
  3. SE101. Hardest Challenges.
  4. SE101. Code Is For Humans!
  5. SE101. Know What You Are Doing.
  6. SE101. Good Practices.
  7. SE101. Guerilla Refactoring.
  8. SE101. Task Estimation.
  9. SE101. Project Estimation.
  10. SE101. Productivity.

While I am working on the content of the series, you can enjoy these great materials:

  1. What insights do expert hackers have for novice programmers?
  2. What are some essays all programmers should read?