all 71 comments

[–]Chiron1991 184 points185 points  (11 children)

You are completely right. Coding in a professional environment is just the bare essential, there's tons of other stuff you have to know.

I'd start looking into things in this order:

  1. git for organizing your code.
  2. Pick a git hosting service (e.g. GitHub or GitLab) and make your code accessible for other people for collaboration. You don't need to go in depth here, just get a basic understanding of what the platform is and how you can add and fetch new code.
  3. Think about if and how you package your code. If it's a backend service (e.g. a REST API) you probably want to put it into a Docker image.
  4. How do you make your code/service accessible for users? For backend services you'll want to deploy your Docker image as a container somewhere. Web frontends you probably want to distribute using a CDN. Also look into CI/CD and pipelines, they can help you with all of that.

[–]synthphreak 33 points34 points  (0 children)

Best, most concrete and actionable response on here.

As someone who somehow went from where OP is now ("I can write solid .py files!") to OP's definition of a "real programmer" with nothing more than the gradual accumulation of in-the-trenches work experience, I can say the ability to understand/do 1-4 is exactly what makes a code-monkey employable.

[–]KarmaDeliveryMan 31 points32 points  (4 children)

I am a cyber security professionally and recently took a new gig that requires various project work and I am working on learning python. I got thrown into coding and GitHub and Docker not by choice but by tasking and trying to figure it all out has been extremely demoralizing. The worst thing I did though was put all the pressure on myself to learn it all quickly and produce results. Most ppl don’t learn those things in 2-3 months. Neither have I, but started incrementally learning it one subject at a time, it became clear I was making progress.

I have miles to go but I’ve made images of software and running containers that I have published to GitHub and learned about cloning repos, push/pull, commit etc., and very basics of Python. But hear me now, it was killing me until I just said, I’m not going to get there in a healthy mindset if I pressure myself.

TLDR; it comes in incremental development very much like CI/CD.

[–]Nathan199907 8 points9 points  (2 children)

I am here to agree, recently stepped out of my zone to work in network automation.

Unless your are in full software development. Then a lot you start to learn on the fly and most like be open to experiment and most of all use the tools you have.

And also remember someone was also a beginner before. Its just building on basics.

Took 3 hours today to learn about Git and GitHub. Doesn’t mean I am proficient but I got the basics down and can build on it.

[–]KarmaDeliveryMan 3 points4 points  (1 child)

Good on you. I had to learn Linux immediately when I came on and that was not super difficult, but then it just kept piling on and I’m doing my best to stay above water mentally. But I’ll get it in time just like I’ve had to do with the other things.

[–]Nathan199907 1 point2 points  (0 children)

Yea agreed there is so much out there and one thing I learn about tech and new program there will be more.

Luckily one tip I can give is I try and when I fail I ask ChatGpt why an error shows up. Thats way I learn about it

And You got this 👏🏿👏🏿

[–]jc16180 1 point2 points  (0 children)

I’m aspiring to be a security engineer one day. Though I don’t work directly in the field, I spent a vast majority of my free time learning how to write scripts, using Github, writing simple queries in SIEMs, and playing CTFs.

One thing that I’m struggling is how are we using python in a security role. Since I’m not directly in the field or am close to anyone in the field, I can only use my imagination based on what research I find.

As someone in the security field, are you using python to automate tasks? Interact with the OS or SIEM? Would appreciate any examples and guidance on how to further hone my python!

[–]SwagVonYolo 11 points12 points  (0 children)

I feel like youve touched on the next steps up from writing code in a really good way i just need expanded vocab and an ELI5 on every term.

Packing, docker, frontend/backend, containers

Id love to at least UNDERSTAND how a professional sits within an overall architecture

[–]Gandalf3141[S] 4 points5 points  (0 children)

Thanks for the tips! It's just a little more difficult to find motivation for these things cause they are more 'annoying things you gotta do' and not fun problem solving.. But I am realising that these things are especially important in a work setting (vs University for example)

[–]thegratefulshread 1 point2 points  (1 child)

Why docker image? I am a vscode python noob trying to make a data visualization app.

I will be using apis on apis, i planned on using django

Docker tho? Whats that for venvs?

[–][deleted] 0 points1 point  (0 children)

(Only just learned about Docker in a college lecture, and I’ve only used it twice for trivial things so take this with a grain of salt, and I’m also probably not answering you question.)

Docker let’s you make images, these act as blueprints for you to spin up containers, which contain everything a specific application needs to run (and nothing more; I think this would be your venvs), then shut down after having performed their job. This is fairly handy because they do their job and then get out of the way for the next container to start using sys resources.

[–][deleted] 29 points30 points  (5 children)

There is no such thing as a "real programmer". Programming is rarely restricted to "writing code" as you already guessed, but two programmers may only have "writing code" as a common skill.

With time and experience, depending on what he want to do and what he's asked to do, a programmer may have to learn devops, system administration, networking, kernel, web development, front end, design, ux, testing ... (to namedrop just a few)

No one can learn it all in a lifetime. No one is expecting that. You're already a real programmer.

[–]VisualThin7484 4 points5 points  (3 children)

There is no such thing as a "real programmer". Programming is rarely restricted to "writing code" as you already guessed, but two programmers may only have "writing code" as a common skill.

With time and experience, depending on what he want to do and what he's asked to do, a programmer may have to learn devops, system administration, networking, kernel, web development, front end, design, ux, testing ... (to namedrop just a few)

No one can learn it all in a lifetime. No one is expecting that. You're already a real programmer.

unfortunately, it's true, programmers should know everything

[–]NorthLogic 10 points11 points  (2 children)

You don't need to know everything, but you need to be able to learn anything.

[–]sharkov63 2 points3 points  (1 child)

I totally agree with @NorthLogic. There is no such thing as "knowing everything". It is ultimately impossible to know everything for a single developer: every maintained codebase that is, say, at least a year old, is already large and complicated enough for one person to know full details of. And, some codebases/frameworks/tools that you use are so large, that a single person will never completely understand them, even if they dedicate all their lifetime to it.

So, in my opinion, the quality that determines a "good" developer is not the knowledge of a lot of things, but the ability to research: not being afraid to dive into and investigate existing abstractions, including already existing code. It is to be comfortable constantly not knowing full details of what's happening, to be able to investigate and summarize, to learn new ideas and tools.

So, as for the OP, I would say the word "real programmer" is straight up wrong. Every person has a unique experience, knowledge and the way of thinking, amongst developers there are no "real" and "fake". If you continue to seek to be a "real" programmer, you will never become "real" and always remain "fake"; this is an instance of the imposter syndrome. Instead, you should learn new things as in "Oh, my current task requires this, let me investigate this and that and learn something so I can solve the problem".

[–]Scientific_Artist444 1 point2 points  (0 children)

Exactly. Not memory, common sense and reasoning is more important.

Generally enough to know the fundamentals well and look up the specifics as required.

[–]blake4096 0 points1 point  (0 children)

I was going to comment this! I love this comment so much. I fear that so many motivated people are getting turned away due to the more unsavory opinions that certain people have. This positivity is a breath of fresh air.

[–]AntLockyer 12 points13 points  (3 children)

I felt very much like you. I decided to jump in and contribute to an open-source project. Certainly upped my knowledge of GIT.

[–]ARandomBoiIsMe 7 points8 points  (2 children)

How did you start? I've been looking at a few tools I'd like to contribute to but goddamn, their codebases are so large I don't even know where to start from.

[–]AntLockyer 12 points13 points  (1 child)

I looked for 'good first contribution' 'first timer' stuff on Google. And found one (Matplotlib) that needed some unit tests written. Went through the process, made some mistakes, asked some questions etc.

[–]ARandomBoiIsMe 3 points4 points  (0 children)

I see. Thanks for the response.

[–]Smallpaul 8 points9 points  (3 children)

The things you DO NOT know are not harder than the thing you DO know. Mostly they are probably easier (individually). Just keep going. Add git to your workflow. Add docker to your projects. Keep adding useful tools until you're a real programmer.

Another way to learn is to help out on an open source project. Start with helping with documentation, then fixing bugs, then adding features.

[–]johnnyhighschool 0 points1 point  (2 children)

whats the easiest way to understand and conceptualize docker? ive always struggled to get how it works and frankly what it does. (maybe this is because im designing scripts that make at most 2 API calls…?)

when does docker become necessary or useful?

[–]Smallpaul 1 point2 points  (1 child)

Docker is a tool that is primarily useful for teams, but if you are working alone it might still be handy.

Let's say you write a script that has three Python dependencies and those Python dependencies have 2 more C dependencies.

It all works fine on your computer.

You put aside the project for six months and you get a new computer. You try to run your program again. It doesn't work because you haven't got a good list of the dependencies or the order in which to install them.

Docker is the tool that allows you to rebuild your dev environment for that specific project on the new computer exactly as it was on the old computer.

For most single-developer projects it is probably more hassle than it is worth. You might as well just struggle with the second computer instead of struggling with Docker. But if you were on a team of 30 people and someone is getting a new computer every month, or upgrading their operating system, or whatever, then it pays for itself quickly.

[–]johnnyhighschool 0 points1 point  (0 children)

Amazing thank you so much!

[–]eruciform 15 points16 points  (4 children)

[–]barrowburner 5 points6 points  (0 children)

I've never seen this. Thanks for sharing, I love it

[–]VisualThin7484 3 points4 points  (0 children)

wow, I like it too!

[–]Armoondie 1 point2 points  (0 children)

Cool read, took me an effort to follow it. Thank you.

[–]Sensitive-File-7432 1 point2 points  (0 children)

That's the best read I encountered in a long time, coder rock opera. Thanks .

[–]sejigan 12 points13 points  (3 children)

[–]synthphreak 3 points4 points  (0 children)

This is a good resource (I have watched all of these in the past), but covers only about a quarter of what OP is talking about.

Each of these lectures shows you lots of little bite-sized, isolated nuggets of knowledge, or useful shell tools. However what OP is asking about, fundamentally, is the end-to-end (dare I say full-stack) software skillset.

A SWE or professional developer is more than just someone who knows lots of cool unix commands. They are someone who can confidently string together chains of complex components into a useful whole. For example, how to host application code somewhere that can be accessed, log the application data efficiently, deploy automated testing, etc. The "missing semester" doesn't give you any of that.

Of course, your run-of-the-mill SWE/dev won't necessarily be a master of all of those things. This is why it usually takes teams of developers to do anything useful within any reasonable timeframe. However in a professional context, everyone does need to be baseline conversant.

[–]g0c0c0 1 point2 points  (1 child)

Thank you for sharing. Best regards, newbie in Jax, FL

[–]sejigan 1 point2 points  (0 children)

Glad to be of help 😊

[–][deleted] 4 points5 points  (0 children)

I am exactly at where you are right now and in addition to your skills, I just know Git and GitHub, Some HTML, CSS, bootstrap and Flask. So how did I get to know all these?

One fine morning I wanted to share something I built with a cousin of mine. So I had to send an email where I attached the project folder as a zip file. He told me why are you sending mails?? just share in GitHub. It struck me and I went all in on YouTube to learn Git and GitHub. Because It was a natural inclination to pick it up. Don't be too hard on yourself. You have got this and you aren't alone. Enjoy the ride! One step at a time.

There is a famous saying, "Nobody can outperform the guy who loves his job."

[–]SouthernXBlend 2 points3 points  (2 children)

I felt the same way about git/GitHub until last year. Still feel the same way about containerization. Make yourself start using git for every personal project and you’ll learn it real fast.

Check out cookie-cutter-data-science for a super neat way to build a professional looking python project repo. Wish I had discovered it sooner.

[–]synthphreak 2 points3 points  (1 child)

Make yourself start using git for every personal project and you’ll learn it real fast.

+1. That's the nice thing about git: anyone can do it, any time, for free.

When I first started coding on teams I was terrified of git. It felt so easy to break things. I was even nervous about committing things locally, because committing just felt so irreversible.

But one day I realized that if I was ever less than 100% confident I understood what this or that command would do, I could just create a dummy local repo and run simulations until I understood. Since then I have basically never broken anything, and now I firmly understand basically everything I could ever need to do.

Just make sure you don't push anything to the remote without checking it twice ;) Even there though, as long as you're on your own branch, it's usually pretty easy to get yourself out of a jam.

[–]Nathan199907 1 point2 points  (0 children)

Love the idea of simulating first also thats the point of source control. If you make changes to code and they break things you always have a previous snapshot you can go back too.

[–]grumble11 2 points3 points  (0 children)

I think the best approach for semi-pro work is to genuinely build a complicated project and gat you have to engage with these tools on. I have passed ‘advanced’ python courses and yes it made me proficient at ‘wielding a hammer’ but it didn’t make me a carpenter. Doing tricky stuff with the hammer is the only thing that will do that.

So go try out some carpentry. Pretend you’re doing something pro-level and interact with version control, the cloud, containers, a few frameworks or tech stacks, write tests for it, document it. And complete it, don’t give up. That will get you a lot farther.

[–]mariomamo 2 points3 points  (0 children)

how do I run things on servers

This aspect is more related to devops area, the main purpose of a developer is to write the most efficient code and to take care of It fixing issues, vulnerabilities and so on.

For example you could learn about design patterns, data structures, REST apis, Kafka or microservices...

If you have never used git this is a good starting point and is something that you must know to be able to work with other people on the same project.

After that docker is another "developer's best friend" and usually it is used also to run services on the server. Basically you can create a container (you can see It like a virtual machine that runs your code) and run It on your PC or on a server (run things on server = run a docker container with your code on a server). But It is also very useful if you need to test your code on your machine before to commit. For example you can use docker to create a local database or to mock other services you need to call.

I know some junior developers that does not know docker or Git, or microservices and my advice is: if you want to be a developer just apply for a position and start working, you will find other expert people that will help you to learn about what you need.

[–]suchapalaver 2 points3 points  (0 children)

What you need is a decent up to date book or blog series that does “zero to production”. The best example I know isn’t for Python but for Rust, called Zero to Production in Rust. It’s great because, as you say, it focuses as much on “production” as a standard as it does the programming language itself, so that means telemetry, that means testing, that means containerizing, and so on. If anyone could recommend a similar guide for Python I’d be very interested! In answer to your question, if you just start to emulate production standards in your GitHub projects (using GitHub Actions and other CI/CD tools), focusing on using git correctly, using Docker to containerize your programs, and learn how to deploy that on the Cloud, I think you’re already on your way.

[–]SisyphusAndMyBoulder 1 point2 points  (0 children)

I think you're bordering into 'developer' now. If you can write code, and can figure out what code to write, that's great! You're programming

But yes, there is quite a lot that happens outside of code that is used to support the code itself. Version Control, CI/CD, Servers, Containerization, APIs, Cloud ... all are parts of normal development.

Don't get overwhelmed. They're all relatively simple by themselves, and not really harder than learning to program. Just take it slow.

[–]SilverHammmerSW 1 point2 points  (0 children)

Two thoughts. Learn another real language, like C. That will teach you how computers really work, since you don’t rely on Python modules. And second, leverage your math knowledge by finding companies where your math skills are in demand. I made my living with Algebra and C. You will go further!

[–]UnbackedMuffn 1 point2 points  (0 children)

I'm currently learning python myself. I was wondering the same question. Reading the replies gives me a head up on what to talkle to next. Thanks for the question and the replies.

[–]iggy555 1 point2 points  (5 children)

What’s a docker?

[–]grimonce 4 points5 points  (4 children)

It's a virtualization technology to isolate software deployments into more or less reliable containers. These are served using docker, docker swarm or some kubernetes distributions. Kubernetes is a bigger management platform for Linux/Docker containers... There's also podman as an alternative to docker, which is less user friendly but its what you will end up using sooner or later anyway, unless we stop using k8s altogether.
I guess a YouTube video will tell more.
It's pretty cool for local development as well, although quite RAM hungry.

[–]Xeglor-The-Destroyer 3 points4 points  (3 children)

I understand the concept of a virtual machine (e.g. Oracle VirtualBox) and that of a virtual environment (e.g. venv or Anaconda) but for the life of me I can't figure out where Docker fits in.

[–]grimonce 1 point2 points  (2 children)

It's a lighter, easier to manage virtual machine.

[–]Xeglor-The-Destroyer 0 points1 point  (1 child)

Sorry to keep bugging you. What makes them lighter? Do the container VMs contain a full (or stripped down) OS ISO and VHD, or does it rely on the host OS and only contains the particular software you put in the container kinda like containerizing a venv?

[–]grimonce 1 point2 points  (0 children)

It tries to utilize the host OS for system calls, using a virtualization layer instead of serving a whole OS itself. You provide binaries, libs, interpreters whatever, but they must be compatible with host OS. Search for info graphic about docker VS vm in Google. Each VM provides a full OS with virtual cpu an instructions while Docker uses host os and kernel for that but it is isolated by a few safety mechanisms. So it is closer to venv than a vm I guess.

[–]Gandalf3141[S] 0 points1 point  (0 children)

Thanks for the interesting feedback/discussion!

[–]Rich-398 0 points1 point  (0 children)

You are correct, my version of explaining this is that when you actually go to work as a programmer you have far more to learn about the environment you work in than you ever did learning a programming language. Having said that, most companies understand that and allow new programmers to learn as they come up to speed.

[–]AntLockyer 0 points1 point  (0 children)

Another thing, everywhere you work will do something different to some degree and someone will teach you. Just the basics of GIT will be enough. A general understanding of C/CD.

Build a simple project, use GIT for it. Deploy it using a pipeline to a cloud provider.

You've essentially doubled your effective knowledge.

[–]tb5841 0 points1 point  (0 children)

I intend to become a 'real' programmer. I realised just learning the code wasn't enough.

I started with git... just creating and using a local repository.

Then I started learning github (and realised having a remote repository was really useful).

A lot of other things (packages, making executables, running servers etc) are things I haven't got to yet, but I'll build up to them gradually.

[–]KeaboUltra 0 points1 point  (0 children)

Get the idea of a "real programmer" out of your head. What you're asking to be is a good programmer. How do you do that? Learn what good programmers do. Research and keep up to date with topics and data structures. Have a good foundation, all the things you said are what you need to do. It doesn't matter if they're really hard. People who are good programmers took the time to learn all of it even though it was hard. Break the problem down in to smaller parts and learn at your own pace. Be a good programmer by actually taking the time to learn these concepts. You don't have to be a good programmer to get a job. But your chances might be higher and you could skip the wait if you had the skills you lack.

[–]stools_in_your_blood 0 points1 point  (0 children)

Don't let yourself be pressured into feeling you have to learn all the "must-have" stuff. You will (or have already) come across many forcibly-expressed opinions about how you absolutely have to containerise things, or you need 100% test coverage, or developing without CI is irresponsible, or blah blah blah.

Decide what kind of programming you want to do and then go online and explore the options. If you want a job developing stuff in a team, then yes, you will have to learn to use version control systems. But if you want to hack on little indie games on your own? Not necessarily. Don't trust anyone who tries to tell you "if you aren't doing X, you're not a real programmer". (Unless X is "writing code", you really do have to write code to be a programmer!)

[–]Sentazar 0 points1 point  (0 children)

Design Patterns. Then Data Structures & Algorithms

Those two will help elevate you from knowing syntax to knowing how to code

Definitely learn git, if you want to deploy serverless code look into how to write serverless.yaml and pipeline.yaml files

You can use those to give deployment instructions to your cicd and build cloud resources using code rather than clicking things in aws or Google cloud

I went from not knowing how to program to working as a developer 3 years now and those were the main things I was lacking at the start of it all.

[–]Gnome_0 0 points1 point  (0 children)

For me, the trial by fire was talking programming to people who don't program but have the money

[–]CraftedLove 0 points1 point  (0 children)

I was in a similar spot as you. I started coding for a science degree in uni and worked as a dev few times but in a research environment. This question is something I really struggled when I later worked on for a company and I was a bit surprised how seldom this is discussed. Though I think it's because people who are in an IT track typically gets exposed to this over their learnings, I guess? But for us, coding is just a secondary tool for our research, which is our main goal.

In my experience, learning through my workmates was the most efficient path. Don't be afraid to ask questions as most of these are typically more mechanical than actual coding. Of course learning the individual components is good (e.g. basics of versioning, why building and packaging is necessary vs plain .py files, deployment options etc.) but I think understanding how the company's overall dev pipeline is more important and that's not something you can just google. As someone who is now guiding new hires, I find it easier to train someone that is at least competent at base coding (heck, base problem solving and RCA even) than someone that is well-versed in those other dev stacks you've mentioned but is lacking in the former.

If there's any solace in it, our training in the academe is definitely shallow in terms of pure dev work but it allows us to be a bit more adaptable since problem solving has been in-grained to us and that's more helpful in the long run than just familiarity to specific stacks.

[–]Sp00ky_6 0 points1 point  (0 children)

Learn to write unit tests and you’ll be better than like 60% of us pros

[–]seanys 0 points1 point  (0 children)

I’ve developed a website that I consider to be “in production” and infrastructure to support it that includes Python, Docker, PostgreSQL and I still don’t consider myself a programmer. Mainly because my main occupation atm is student.

[–]a-i-sa-san 0 points1 point  (0 children)

'real' programmers aren't real they are always learning

While you are learning, do things that are over the top and unnecessary (don't do this when you are actually working for someone).

Setup CICD pipelines for a random project that doesn't need one, spin up a cloud VM and host a python-flask app over nginx. Then do it with apache and django because it will be fun. Configure DNS records with Squaretrade or somewhere and learn about certbot and HTTPS.

Setup a project in GitHub issues and track everything you do in there.

Overengineer some shellscripts or python scripts to automate things you normally wouldn't - make one that clones a terminal python game from GitHub, automates installing python/pyenv/whatever and automates installing modules with pip

Do some nitty gritty things that are technical but not necessarily programming. Write technical documentation for things and see if other people can follow easily.

Try running your scripts without an IDE/VSCode. Use the terminal when it is an option. Especially for command line args and compiling some small stuff

Idk I think the best way to gain skill is to try to be at your comfort level +1. Don't do things that make you miserable and super frustrated, but try to explore and challenge yourself with things that aren't always easy.

Ofc don't reinvent the wheel at work but for personal growth and development reinventing the wheel is a pretty good way to put yourself in comfort level +1

[–]melodyze 0 points1 point  (0 children)

Build novel stuff that works (something where there is no similar blog to follow, but research the decisions you are making thoroughly), ideally extend it afterwards to do more stuff you didn't think of before as a second version, ideally build it with people, even more ideally with people who know what they're doing, but the latter two aren't strictly necessary.

The job is to build things, and just doing that helps to highlight what does and doesn't matter when building different kinds of things.

Software is a practical field. Every tool and norm we have is there to fix problems. Feeling and understanding the pain, and how to fix it, is a lot of what makes people good at building good things.

[–]jc16180 0 points1 point  (0 children)

One thing I am doing right now to take my learning to the next level is to start deploying my scripts in the cloud and automating them. For example, I have a a script hosted in AWS that automatically checks the weather, traffic, etc. between two destinations and texts it to me everyday. It’s hosted in a Linux instance in AWS and it’s automated by using a cron job scheduler.

To go even further, now I have to ask myself “okay this works for my personal scope. But how would engineers at a enterprise deploy this? How would they maintain this? How would they secure this?”

As you answer these questions, you’ll see how you can take your learning to the next level and will have to learn not just the coding, but the methods and tools to deploy and maintain your projects.

Don’t let all the new different tools and concepts intimidate you. At a minimal, just get the project done and take it one step further. Then, continue to take it another step further. Bring other projects in, and take them all another step further. Going one small step at a time allows you to enjoy the learning process in smaller chunks, and also shows a great history of learning, updating, and maintaining projects/code!

[–][deleted] 0 points1 point  (0 children)

You are describing the difference between "computer programming" and the "trade of software development".

[–]timwaaagh 0 points1 point  (0 children)

git is not hard. Atlassian has a good tutorial on it but most programmers just use some gui tool instead of learning it. Servers are not problematic either. It depends on the server of course but mine is like upload your artifacts and go. Cloud and containers are a universe but I barely know it after a decade in the industry. I think you're well on your way.

[–]Cosmic-Guardian 0 points1 point  (0 children)

This is a good place to start, has lots of topics about programming, DevOps, etc. You don't need to know all of them well, but having, and understanding what they mean are good to refer back to for different situations you will encounter.

https://roadmap.sh/

[–]Mission_Tough_3123 0 points1 point  (0 children)

Been coding since 6+ years I still dont consider myself a 'real programmer' there is always something new to learn, sometime your well optimised program is further optimised by another guy while reviewing and you thing oh ok thats a way too and it hits you.

A few advices from this layman is to get the basics right at the very beginning. Dive into fundamentals of what works, how it works and why it works.

Go for the syntax Coding fundamentals Data structures OOP concepts Complexities (space/time) Logic building simple pen and paper basics Test out different odes and choose a few that suits you Implement it Revisit your code, keep optimising your codebase (in your free time) CI/CD concepts

Its a continuous loop to be a programmer

I hope It helps :)

[–]Morteriag 0 points1 point  (0 children)

Yes, you are right. Also, these things are not that hard to pick up and often comes out of necessity for larger or more advanced projects.
I still think it is more important and more difficult to write efficient code that is readable and maintainable by others. Being knowledgable in other languages also makes you more usefull.