Interviews

Alexander Afanasyev, a Full Stack Developer Shares His Experience in an Interview

Are you interested in being a full stack developer and you don’t know where to start from because you don’t know any programming language?

Or

Are you wondering if you must be an expert to contribute to open source communities or StackOverflow? 

Today ends your quest, as  Alexander Afanasyev, a full stack developer will share his experience in an exclusive interview.

The conversation is a bit lengthy because it is very informative, but is interesting as well. Enjoy!

A photo of Alexander Afanasyev with Martijn Pieters taken during PyCon 2016 in Portland.


Martijn 2BPieters 2Band 2BAlexander 2BAfanasyev 300x225 - Alexander Afanasyev, a Full Stack Developer Shares His Experience in an Interview

Alexander Afanasyevright  and Martijn Pieters-left

GODSON: Good day  Alexander Afanasyev, it’s a pleasure to have you here on cool python codes. 

ALEXANDER AFANASYEV: Hi Godson, Thank you for interviewing me.   
                     
GODSON: Could you please kindly tell us about yourself like your full name, hobbies, nationality, education etc 
                       
ALEXANDER AFANASYEV: Sure!

My name is Alexander Afanasyev, I was born in Kazakhstan, moved to Russia when I was 15, moved to the United States more than 3 years ago, currently living with my wife and wonderful 5-year old daughter in New York.

I’m a full stack developer with a passion for clean code, great software, and open source. 

My background is in Radiophysics and Electronics, but I’ve been working in software development for about 10 years now. 

I’ve been developing, testing and supporting software in different types of businesses – electric energy, finance, transportation, healthcare, and insurance. 

Currently, I’m working for a company called Equian, I’m a part of a team focusing on building software applications to make the insurance claim processing space more transparent.

Aside from daily work, I’m a long time contributor to StackOverflow and GitHub. 

And, it looks like my physics background finally starts to reveal itself pushing me into things like Internet of Things, home automation, robotics, space exploration, and astronomy.                   

GODSON:  With a background in Radiophysics and Electronics, what made you go into Programming Alexander?      

ALEXANDER AFANASYEVGood question. Mostly that was simply a good luck – being in the right place at the right moment. 

I was working on my 4-year’s course work with my science advisor when a graduate of our department called and asked if we had any interns who are willing to start working as a programmer in the city’s Electric Energy company.

I did take my chance even though combining studying with a full-time work was a challenging experience later on. 

 
On the other hand, at that time, I’ve been collaborating with my friend to help other students in our department with homework for programming classes for quite some time.
 
And, a part of my work involved computer modeling and a bit of scientific programming. I guess that was a combination of certain conditions I had met and perfect timing.

                       
GODSON: For the sake of our readers, can you briefly describe who a stack developer is? 

ALEXANDER AFANASYEV: For me, a full-stack developer is someone who is able to work on both the back-end and front-end sides of an application as well as in some cases able to work on the DevOps things if needed. 

Kind of a jack-of-all-trades which, I think, generally is quite a valuable skill especially in small teams and startups where there can be a lot of role and task switching. 

This kind of person does not necessarily (and often this is the case) have to be an expert in all of the areas of the “stack”. 
                        
GODSON: Can you tell us how you learned software development and how you could work very well with both front-end and back-end technologies? 

Did you pay for online classes? 

ALEXANDER AFANASYEV: I think one cannot talk about learning software development in the past tense. This is a continuous and never-ending process. 

If you are constantly working on your programming skills and not letting them become rusty, improving your broad knowledge of technologies of the ecosystem you are working in, reevaluating the quality of your code over and over again, learning new techniques and methodologies etc, challenging yourself with new difficult problems, you are becoming a better developer.

 Never stop learning – as simple as it sounds, yet it drives me every day.

In my case, I may say that I am a self-taught developer, but that would not be completely fair. 

Even though I’ve been working hard on improving my skills, programming classes back in the university, things I’ve learned from my friends and teammates on different work and side projects, hard lessons learned during the real-world software development, things people do around the friendly and helpful Python community, contributors on StackOveflow, collaborating with other people on GitHub and many more other things were and are crucially important and valuable for me. 

These are different pieces of a puzzle, of a unique path that every developer builds him- or herself.

And, I don’t even consider the things I do at work as actual work – I really enjoy doing things I do and I am always looking forward to jumping at the computer and write some code.     
                    
GODSON: You mentioned earlier about clean code. Can you please elaborate on it?

Does it really play a role in development?

ALEXANDER AFANASYEV: Absolutely, I’m glad you asked. As John Woods said long ago: 

“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.”

It’s difficult to overstate the importance of writing readable and clean code. We, developers, write code for developers, for humans, not for computers. 

The code should tell a story and tell a story in a clear and understandable fashion, it should follow a consistent style driven by the recommended guidelines of the language you are writing code in – for Python, this is PEP8 and the famous “Zen of Python”. 

And, as the BDFL of the Python language, Guido Van Rossum noted: 

“Code is read much more often than it is written.” 

Keep this in mind every time you write code, think about someone, who does not know what your program does, would be reading your code – can he or she easily understand what is your code designed to do?
                        
GODSON: Can you mention the programming languages you know and which is your favorite?  And also, why is the language is your favorite? 

ALEXANDER AFANASYEV: I’ve worked with different programming languages throughout my career.

It’s important to understand that this is in an essence just a tool, an instrument that one can use to solve a problem and, one can also, of course, misuse it like any other tool, like hitting your finger with a hammer or shoot yourself in the foot with a gun. 

And, Python, being a dynamic language, will willingly let you do that if you are not careful enough.

The minute I’ve been introduced to Python, I was hooked. It’s the beauty of the language syntax, the rich standard library, the huge PyPI library of third-party packages for almost any problem one might have, the welcoming, friendly and helpful community, the conferences..all of that makes it more than just an instrument, more than a language to me. And, I will never know Python, I’ll just get more familiar with it.     
                   
GODSON: Can you tell us a little about your favorite project you have worked on?

ALEXANDER AFANASYEV: It’s difficult to pick a favorite one. 

Probably, contributing to StackOverflow, if we can call it a project, could be one of my most favorite. It’s of course, endless and I do it on a day-to-day basis, but I really enjoy doing it. 

It’s amazing how much can you learn by helping other people and looking at other contributors answers. And, it’s definitely addictive. 

Check out Michael Kennedy’s “Python at StackOverflow” podcast with Martijn Pieters                         

GODSON: Which project was the most challenging for you and can you briefly narrate the ordeal?

ALEXANDER AFANASYEV: Probably one of the most challenging projects was the one where we were trying to fit a “schema-less” database to a classic relational database type problem. 

We were working on a small online store for construction goods and had time and desire to try out something new and experiment with new technologies. 

We’ve picked MongoDB, Tornado framework, talking to the database via the “Motor” Python to MongoDB async database driver, multiple Nginx instances and, if I remember correctly, Varnish as a caching layer. 

The main challenge was keeping the data up-to-date – since there was no schema, we had to maintain the integrity and correctness of the data by having a variety of background celery tasks which required additional time to write and test. 

Even though we gave up due to time constraints and switched to a more classical Django+PostgreSQL, the Tornado-based solution was blazingly fast and scalable. 

And, overall it was a very good lesson learned – technology choices all come with pros and cons, it is often you have to sacrifice something in order to gain something else, there is no silver bullet and “ideal” framework.                        

GODSON: What are the basic knowledge I need to know before learning software development? Can you also recommend any good resource to learn software development?

ALEXANDER AFANASYEV: As someone with no computer science background, I don’t actually think there is something you have to know before diving into software development. 

You need a right problem-solving mindset, be ready for challenges and, more importantly, failures; you will also need time and a lot of actual coding practice. 

Of course, mathematics and related disciplines would definitely become handy along the way. 

As far as sources, there are so many wonderful resources out there on the internet, but to name a few good places to start – Code Academy, Coursera, EdX, Udacity                        

GODSON: To be a full stack developer, which skills/programming languages do I have to learn? 

ALEXANDER AFANASYEV: Sure. If we are talking about a full stack developer on and for the web, one should have experience with a quite broad set of technologies on the UI side, backend, databases, unit, integration and end-to-end UI testing, deployments, you name it.

 Here is just one example way of thinking what could be needed for a full-stack developer (overall, the term “full stack developer” is very broad and it needs a context).

Proficiency with modern JavaScript and one or more currently trending JS frameworks and libraries like Angular or React would definitely be a huge seller. 

As for the databases, having experience with both classical RDBMS and NoSQL including document and key-value stores is quite important. 

Being able to build, pack and deploy your applications is usually a must. On the API/backend side, if we are in the Python space, Django is surely the first that comes to mind, or a micro-, include the batteries yourself type of a framework, like Flask. 

Even though experience with ORMs like SQLAlchemy is good, being able to write plain SQL, I would consider absolutely required. 

I can go on, but you may get a better idea of what skills and requirements needed for a full-stack developer if you look into the “requirements” section of the job postings for the “full stack developers”                         

GODSON: How do you cope with work, contributing to StackOverflow and GitHub and also having time for your family? 

ALEXANDER AFANASYEV: Great question. It’s not easy – it is a lot of context-switching, which is often time-consuming and sometimes can hurt productivity. 

But having a good sense of time, prioritization, to-do lists, different “getting things done” techniques and, much more importantly, family and teammates who are always understandable and helpful makes things easier. 
                  
GODSON: Living in the big apple,  the city that never sleeps, how does that affect you as a programmer? Do you like to code in the night or anytime in the day? 

ALEXANDER AFANASYEV: Interesting question! 

I should have probably noted that my job is about 90% remote, which allows me to change the places I work from – you can often find me in different coffee shops or cafes which are more or less convenient to work in (there is even a service that keeps tracks of this kind of places – https://workfrom.co/nyc). 

Another great thing about living in NYC and being a developer is that there is a huge variety of meetup groups – one can basically go to one or more meetups on a single day every day of the week and since most of them offer free food and drinks, no monthly food expenses for you.

Okay, but seriously, this is a great way to expand your professional network, meet great people working in the industry, learn new things, broaden your knowledge or find your next project or job opportunity.

GODSON: Some programmers say you must be very good to contribute at StackOverflow and GitHub? 

 
Were you really good enough when you started contributing to those communities? 
 
ALEXANDER AFANASYEVThere is not actually “good enough” bar to start contributing to open source. 
 
There is always something you can help with – for example, in case of GitHub or other social coding platforms, if you are just starting in programming, you can start contributing to documentation or tests or fix minor bugs – this way you’ll get familiarized with how the pull requests, code reviews work, the structure of the project you are contributing to, learn to read the code etc. 
 
In case of StackOverflow and other StackExchange sites, there are many different ways you can start with – it does not have to be answering, you can ask good questions that will help not only you but others with the same or similar problems in the future, you can improve/edit existing questions/answers and documentation, you can also participate in reviewing.
 
There will always be someone who is less experienced than you and someone who is more experienced – the first one may learn from you, the other you may learn from.
 
GODSON: With your experience, how long do you think it will take someone without any knowledge in programming to be a full stack developer? A brief step-by-step guide will also be helpful. 
 
ALEXANDER AFANASYEVI think this is not about time specifically – this is more about what technologies and frameworks did you work with, what projects have you completed, how complicated they were etc. 

For someone who wants to become a full stack developer, it is important to gain experience with high-end JS frameworks like AngularJS and React (and keep your skills fresh – these libraries are being actively developed and changed), mainstream frameworks like, in case of Python, Django, Pyramid or Flask, look into common problems like social authentication, server push notifications, web sockets, pagination, payments, shopping carts, creating RESTful APIs etc. 
 
And, this world is not going to wait for you, technologies and market demands are changing rapidly, you’ll need to stay up-to-date with recent trends and not let your skills get rusty. 
 
GODSON: How do you keep up with the fast changes in both back-end and front-end technologies? 
 

ALEXANDER AFANASYEVGood question. Here are some things that worked for me so far: 

 
  • Subscribe to the popular weekly or daily news in the areas of your interest – for example, in the case of Python, you can subscribe to Pycoder’s Weekly newsletter. In the case of JS, there is JavaScript weekly
  • Follow people who tweet about Python. For instance, I’ve learned so many things from Raymond Hettinger or David Beazley tweets, blog posts and talks. 
  • Listen to podcasts like Python Bytes, Talk Python to Me or podcast.__init__
  • Subscribe to specific Python or JS developer blogs.
  • Go to local meetups or bigger conferences.
  • Keep your project dependencies up-to-date and pay attention to what things are changing in the libraries you use.
  • There is also this kind of StackOverflow weekly reports like Python SO weekly.
Tweet How to keep up with the fast changes in both back-end and front-end technologies Click To Tweet

GODSON: Bash from Nigeria is interested to know what conditions should one decide to use node.js for backend, and how effective is it? Any help to his question? 

 
ALEXANDER AFANASYEVI am from being an expert in Node.js, but my understanding is that it’s mostly suitable when you are working with real-time applications and it might be quite handy to have a single language on both sides of the stack even though one is in the browser’s context and the other is not. There are also lots of great points and examples in this StackOverflow topic.
 
GODSON: LeROI has the challenge of remaining motivated in programming.He used to code almost 10hours daily but now gets a headache within 10minutes of sitting in front of the computer. He is frustrated but still loves programming. 
 
Any tip on how you motivate yourself to keep coding? 
 
ALEXANDER AFANASYEVFirst of all, decide if this is actually something you enjoy and want to do.
 

It might not be the question about motivation only. 

Make sure the conditions you are working in are convenient and is not the problem. 

Changing the environment around you might help to get back on track – some random ideas: you may try things like standing desk, multiple displays, change the IDE you are working in, become more productive with your current IDE, working in headphones with music or without, work from a cafe or a co-working place, pair-programming, “Pomodoro” technique, TDD (test-driven development), documentation-driven development, switch tasks during the day more often, work on multiple different projects concurrently, go for a walk in between working, learn a new programming language, a new programming technique – different things help different people at different times.

 

Another thing is – you can get a code mentor (have not personally used that, though), that will help you get 1:1 help from an experienced developer. Might also help with motivation.

 
There is also a burnout problem – here is a recent good read on the subject.
 
Remember, you are not alone in this, be a part of the community.

GODSON: In New York, what is the most sought after skill in full stack development? 

ALEXANDER AFANASYEVLet’s put it this way – if you have strong Python and JavaScript background, you’ll be quite valuable on the job market.

GODSON: Between front-end and back-end,  which of them do prefer working with more?

ALEXANDER AFANASYEVThis is what I like about being able to work on different parts/sides of a project – switching contexts and types of tasks is really something I absolutely enjoy. 
 
Overall though, currently, I tend to prefer to work more on the backend API side of things and test automation. 
 
GODSON: Alexander Afanasyev, thanks for your time. It was 
nice having you here on cool python codes.
 

ALEXANDER AFANASYEVThanks so much for the interview, Godson.

If this interview was informative, please kindly share or leave a comment.

THANKS.


copyscape banner blue 200x25 - Alexander Afanasyev, a Full Stack Developer Shares His Experience in an Interview

About the author

Rapture Godson

I am Godson; the brain behind Cool Python Codes. On this blog, I will make Python much fun and very practical. My up-to-date tutorials are based on my studies and they are very easy for you to understand.

10 Comments

Leave a Comment