3

I have a job interview for a python role.

I have self taught myself python over the last couple years and can pretty much accomplish any project I start along with some help from this fine establishment of course!

However when it comes to terminology and theory, I’m weak. I don’t know all the right terms even now when it comes to code structure. Class and methods and functions are about it.

But I can problem solve.

How would I best approach this at the interview? I don’t want to come across as incompetent theory wise but I also want to impress that I’m task oriented and am likely to complete the project completely.

I am weak in theory. I'm probably also weak in areas I don’t even know exist yet with python.

I know I can study up and learn the terminology and I’m doing that but I can’t help the way I was taught - I just started a project and built it out.

Any feedback or suggestions would be appreciated.

6
  • is it your first ever job interview? Aug 17 at 22:34
  • First in a long time. 10 years or so Aug 17 at 22:35
  • how long do you do python programming?
    – Benjamin
    Aug 18 at 6:53
  • I think just be honest like you are here, but focus on what youre good at and what you have done. if bringing up what you are 'bad at', instead frame it as areas you want to improve in. don't pretend to know anything that you don't
    – k--
    Aug 18 at 7:03
  • 1
    One point of clarification here. In your work experience are you doing programming in other languages or are you looking for your first programming job? Being self taught in one language while knowing how to professionally code is very different from making the jump from hobbyist to professional.
    – Myles
    Aug 19 at 15:19
15

I am a Python developer, and I have screened candidates for my team in the past. I want team players.

You said the phrase: I can problem solve. Nontechnical managers love this phrase, for me it raises questions. This phrase often indicates somebody who is lacking in a lot of skills, but wants to highlight they can make the computer do things. But that is just a required base skill, but can you:

  • Make the computer do things in a way your fellow programmers can understand what it does, how it does it, and why it does it? (readability counts)
  • Can you communicate with you teammembers why you prefer approach A over B?
  • Can you compromise when the team prefers B instead?

"I can problem solve people" often value being able to show management they did things over doing it in a way that gels well with people.

witch-of-winter recommends applying to junior positions. I agree and want to expand: If you apply somewhere, you should acknowledge that you need to learn how to work in a structured way in a team within a larger organization. Highlight that one reason (or the reason) for switching is you want to learn to be a better programmer and want to learn what it means to work within a team/bigger organization.

In the meantime, you should read up stuff like the Zen of Python, Clean Code, and other books that you come across. I recommend books about basics over book about current technologies.

2
  • Being able to code in ways that is clear and concise is different than making it "work". You can have working code that is nearly impossible to maintain, and not even the original author will understand it after 2 weeks. I've done stuff like that before.
    – Nelson
    Aug 19 at 3:26
  • I knew people who didn't understand their own code the day after and saw that as perfectly normal...
    – Benjamin
    Aug 19 at 6:05
6

Something that often gets overlooked by technical people coming into these types of jobs is the difference between programming and developing. It sounds like you're fairly confident in your Python skills - but being able to write scripts on your own is very different from being able to work effectively in a software development team.

Try and get a basic understanding (or at least enough to recognise the terminology and concepts) of things like:

  • Source control (most people use Git)
  • Ticketing systems/issue trackers
  • Agile development (milestones, sprints, story points, standups, etc)
  • Code reviews
  • Testing (unit tests, integration testing, test driven development, etc)
  • Good coding practices (style guides, linting, refactoring, etc)
  • Software design patterns (MVC, HMVC, etc)
  • Modern/cloud application architectures (containers, microservices, Kubernetes, etc)
  • Continuous Integration and Deployment (CI/CD)

The Software Engineering Stack Exchange site would be a good resource - reading through some of the top questions should give you some ideas of areas to look into.

Obviously if you've not come across these topics before then you're not going to be able to learn them all for an interview - but having some familiarity with the terms and basic principles should help you stand from other candidates who are also good at Python.

Good luck!

1
  • 1
    it gets overlooked by nontechnical people too. I had a ProductManager tell me once: We have a student here who could do what we want in 2 weeks, and you then simply take over the program and run it after he is gone. It will be faster that way. Yeah, it's "faster" because that student didn't do anything of the things you listed above
    – Benjamin
    Aug 18 at 15:21
5

To learn proper names for things you already know, try reading forums like the code review stack exchange and the python subreddit. You’ll find a lot of really high quality examples of the proper way to go about discussing, explaining, and debating programming concepts. Even more important than knowing technical terms for things is knowing when to use them and when a simple explanation or an analogy would be more effective at getting your point across. Spending a good amount of time reading and listening to experts should help you internalize this style of communication so when you end up having to use it in an interview, it’ll sound natural. If you have friends or family who are programmers, try practicing with them as well. Interviewers value communication skills.

Some might even argue that strong soft skills and a willingness to grow are more important than technical expertise. For some junior positions, a manager might prefer a fresh candidate who will listen, learn, and do as they’re told as opposed to someone who thinks they know better and is going to argue and second guess every decision.

As far as learning theory goes, there’s no shortcut. Being able to build stuff is good. Being able to build an optimal solution knowing that it’s the optimal solution is a whole other ballgame.

0

I think the best approach is to look for junior roles and be upfront many of the junior roles especially in the IT world only want to you have the ability to write basic scripts in python. So once you get some experience in a junior roll you'll likely improve your theory especially if you're being exposed to higher level professionals with a better understanding of the theory.

0

This initially started as a comment, but turned out way too long, so I will formulate an answer instead.

Solve the problem of you not knowing the theory

There is nothing wrong with being self-taught, still you need to find the motivation to learn concepts as well though, not just solve problem X.

The issue with the latter approach without the former is that you often won't recognize poor work on your part. E.g. you can implement something with a proper architecture, or with 500 switch-cases (very trivial example) - "the problem is solved right"? Issue is, you (or your company) pay for such technical debt later down the line. In this simple example this will be harder to maintain, expand or change entirely.

So my advice to you is, shift your focus. Improve your theory skills, i.e. learn concepts, proper ways to solve various problems, common pitfalls, proper documentation, tests, etc. rather than focussing on hiding your weakness in this area. This knowledge will likely not be obtained over night, but even when self-taught there is no reason not to learn. Finding motivation to learn new things is a core attribute for any developer, at least until the late stages of their career.

@Benjamin pointed out a key thing there - teamwork is crucial. Many teams, mine among them, prefer candidates who are able to work well with others and whom we deem to be a good fit to our company culture. We value this a lot over so called star developers, which so far worked out well.

0

This is a common problem with self-taught skills - we often don't follow a structured approach when learning something ourselves (unlike how a course is taught in school / college), and pick up bits and pieces from many sources, and thus everything can feel jumbled up in the mind (even if we are able to apply these new skills effectively). Thus, communicating about our skillset becomes difficult, and can make us appear inadequate in interviews.

Your particular case can be easily remedied though - I highly recommend you read these two books: "Dive into Python 2" and "Dive into Python 3" ( https://diveintopython3.net/ ) written by Mark Pilgrim, and take some notes of the concepts and terminologies described. For someone with your practical experience in Python, this book should be easy to read, but still offer you wonderful insights about Python and make you very confident about it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .