Have you ever wondered how to proceed with your dreams of being a software developer? In the Python coding facebook group I’ve seen a lot of questions involving starting a career in python such as this one below:
“What skills must an amateur know and possess before applying for a Python developer job? Need a python road map for how to begin from scratch to a professional level + Good channel on youtube for python and How much time will it take to be a good developer in python?”
This living article will help answer some of these questions and link to other articles I have written to help increase your python technical and soft-skills; land a job in tech within two years; and eventually find yourself in a top tier company with a six figure salary. Also don’t let the 10 years in the title intimidate you since most careers can be 40 years or more. Taking the time to invest in your career path will reward you heavily as you head towards your golden years.
If you’d like to discuss the ideas here more or talk about other python soft skill related topics please feel free to join my facebook group which is still in developing stages. Here we can grow a community of similarly minded people wanting to grow in tech.
Skills an amatuer should know before applying for a Python developer job
As a quick introduction to the deeper content of this section I would recommend at a minimum a person have the following skills before applying for python jobs.
- Be a follower of this blog to continually learn career growth with me
- Avoid being the guy everyone has to clean up after
- An interest in problem solving and technology
- Understanding of the core python language
- Installing python
- Using an integrated development environment (IDE)
- Namespaces and scopes
- Data structures (Lists, Dictionaries)
- Duck typing
- Desire and patience to learn and read through way too long articles of documentation
- Computer architecture principles
- What happens when you turn on your computer that enables you to load your operating system and use it for daily tasks?
- Process run-times
- How fast does your program run?
- Process memory use
- Will your program kill the system from memory leaks?
- Object oriented programming principles
- public and private variables
- objects vs classes vs instances
- constructor and destructor
- inheritance and polymorphism
- abstract base classes
Doing several strong coding bootcamps and working through some of the books I referenced in this article should enable you to acquire the skills above. I personally used federal grants and financial aid to go to state university and learned the above skills in the first two years.
Obtaining these skills enabled me to get an internship between my sophomore and junior year at Diebold working on learning predictive maintenance using ATM data and machine learning.
A genuine interest
When I think back to before I started my computer science degree at 23 years of age I didn’t know much about coding other then basic HTML and how to program a smart calculator to solve basic physics problems. I did have a genuine interest in solving puzzles and using technology which really helped me in my journey to become a professional developer.
Because of this, I’d say the first basic skill a person should have is an interest in wanting to solve problems using technology and using coding as the ability to get a computer to do what you want it to do. Since you have made it this far and are taking it upon yourself to read resources on your own I’m going to let you know you are ahead of a lot of people that set out with a goal in becoming a software developer.
The first basic skill a person should have is an interest in wanting to solve problems using technology and using coding as the ability to get a computer to do what you want it to doStefan B linkedin twitter
Learn the language
The next skill a person should know is how to code in Python. Below are two free resources that will help a beginning developer learn the basics of this amazing language. I was thinking about putting together something similar but because of how well done these are I’d rather reference them instead.
The resource above is a pretty heavy read but that will bring us to the next skill a person should have before looking to go out and apply to jobs.
A person should have a genuine curiosity and desire to learn. This will help your coworkers have trust that even if you don’t know how to solve a problem that you will explore all the available avenues to deliver on a task.Stefan B linkedin twitter
How does a computer work
Sure you can probably get a programming job without really knowing the full theories behind how a computer works but to really be a good developer you should read through computer architecture.
During my college classes we took several classes devoted to this alone such as circuits, electronic circuits and transistor theory, digital logic, computer architecture, operating systems and hardware system design.
TLDR A computer stores states as binary 1s or 0s. This is done using digital circuits throughout the computer where the state ‘has voltage’ is a 1 and no voltage is 0. These digital circuits contains millions of transistors to store 1 and 0 states or do digital operations such as ‘and’, ‘or’, ‘xor’ to enable a cpu to add, substract, and shift signals. There are other circuits to retrieve values from memory through addressing, hard disks, or other input/output units along circuit pathways known as buses. When you turn on or ‘boot’ your computer the cpu loads instructions from a read only memory unit on your mother board called the BIOS. The BIOS tells the CPU where it should load an operating system from. Various code and data from the OS is loaded into random access memory on your system and cache tiers in your CPU based on how frequently the code or data is ran. Code is ran from heap instruction pointers in the CPU. And other values are also passed between the CPU and your video card to transfer as pixel states on your monitor to enable you to interact with the operating system and the other programs that reside on it.
This is my horrible attempt at summarizing 24 credit hours worth of information into one paragraph but was a real interview question I have experienced before.Stefan B linkedin twitter
Object oriented programming (OOP)
The last skill area I want to touch on that should help you get a job as a developer is understanding object oriented programming. Now I have run across engineers that swear by classes and others that insist dynamic or functional programming is the way to go. Python enables you to do all three but with most large code bases you will interact with OOP somewhere. This is at least frequent enough that a lot of teams that have OOP code will ask interview questions about it during screenings. Below are the basic OOP concepts that are tested on from my experience.
- public and private variables
- Public variables can be accessed by other code which uses a class
- Private variables can only be referenced from inside a class
- objects vs classes vs instances
- Object: A general representation of a ‘thing’. A thing could be a class which represents a circle, database, data service, person, collection, or even a simple integer.
- Class: The text template that is used to represent an object within the code
- Instance: A living representation within code to an object that has been allocated memory and assigned an address
- constructor and destructor
- A constructor is a function that is called to set up an instance of a class
- A destructor is a function that gets called when an object instance goes out of scope or is manually torn down.
- This where a class can be associated properties and methods from some kind of base class
- Example: You can have a Manager class which Inherits from an Employee class which inherits from a Person class
- Overloaded functions
- When you have multiple functions in the same class with the same name that accept different parameters
- This doesn’t apply in python because of pythons duck typing
- Abstract base classes / Interfaces
- A contract which says what properties and methods an object should have but does not contain implementation details
- Enables a developer to understand new objects that extends a familiar interface.
A python developer career road-map
In my experience I’ve seen two main road-maps that can both get you into successful developer jobs. Within FAANG and microsoft the majority of employees have gotten there through University and many with masters degrees.
The second is a self taught pathway which may be from you having a degree in another related field. Typically I haven’t seen many developers coming straight into top tech firms being completely self-taught unless they started programming at 8 years old, have several published applications by the time they are 18 and already have 10,000 hours of coding experience under their belt to get a job interview based on their own personal branding alone.
The theme of both pathways is enough programming experience toward the 10,000 hours of skill mastery needed to be successful. Working deliberately in the area of software development 20 hours a week can see you becoming a top developer in 10 years according to this threshold.
Alma matter isn’t extremely important as long as you put in the focus and work to get a good GPA, learn the material covered, and be able to demonstrate it through your own personal projects and during interviews
- Years 2-3
- Obtain the skills above
- Practice and refine your skills through online coding platforms and communities
- Learn and contribute to open source projects
- Build a github profile
- Get an internship through your schools co-op program
- Years 3-5
- Finish up co-op program
- Start a linked in account
- Pick a specialty
- AI, Databases, Graphics/UIs, Machine learning, PLCs
- Start applying to masters programs or tier 2 tech firms
- Years 5-7
- Finish masters or get related experience through your first full-time position
- Network with other engineers through online communities, meetups, alumni social events, etc.
- Use your references to submit your resume internally to tier 1 tech firms and practice nailing the interview
- Years 7-9
- Continue growing your ability to contribute code to large corporate code bases
- Focus on your code quality, testing, extensability, and readability
- Learn to work independently and contribute new ideas that add value to your organization
- Study soft skills such as leadership growth ideas and effective communication strategies
- GET PROMOTED to a mid level tier 1 tech engineer
- Start learning investing strategies with all those extra engineering bucks
- Year 10
- This is where i’m currently at and will continue updating my site as I work towards my senior engineer promotion and my eventual CTO ambitions.
Since I got to where I am through the university path I will leave this open to discussion as I research more! If you know someone that has gotten into a Tier 1 tech job without a background in engineering or computer science have them reach out to me and I’d be happy to interview them and put their story here!
All in all there are many different subcareers in programming and even within Python/Java/C++ or any other coding language which can have numerous ways to get your foot in the door and become a rock star when you’re there.
Ultimately having a successful career boils down to this simple three step recipe
1. Learn enough to build up credibility and share that knowledge through networking to land a jobStefan B linkedin twitter
2. Master your craft with 10,000 hours of deliberate activity in your interest area within 5-10 years
3. Establish yourself as a knowledge expert in your interest area to grow your scope of influence, as long as you’re becoming so good they can’t ignore you, the promotions will come naturally.
Thank you for taking the time to read through this article and if you have found it useful leave a comment below!
Written by: Stefan Bradstreet
About Stefan Bradstreet
Stefan is a software development engineer II at Amazon with 5+ years of experience in tech. He is passionate about helping people become better coders and climbing the ranks in their careers as well as his own through continued learning of leadership techniques and software best practices.