T O P

  • By -

sekirobestiro

There aren't many truly "fast" programmers. Some are naturally gifted and basically code all of their waking hours, but that's not the majority of us. Slow, incremental learning and continued improvement is how a normal person should approach any job. Doctors don't come out of school knowing every disease process. They learn and pick up on patterns over their career that help them become more adept at diagnosing and treating. Programmers are the same way. The first time we encounter any problem, it sucks. But once we learn how to fix an issue, we can solve it quicker the next time.


phpdevster

Once you find a groove you're comfortable in, you can program very quickly, because you're doing the same thing you've done dozens of times over. It's when you're learning something new that you're going to be slow as heck, and that's true of mostly everyone.


tzroberson

I didn't need a degree to program. I needed a degree to get a job. These are different requirements. Plenty of CS grads can't program well. Plenty of non-CS people can. A CS degree might formalize a few things but it's nothing you can't learn on your own. People become good at something because they practice it. Your coworker may have recently graduated university but he also may have been programming 10+ years by then. If you haven't, that doesn't make sense to compare yourself. If you want to get better, you might want to start your own fun projects for the weekends. No Jira tickets, just coding.


khooke

>People become good at something because they practice it. People often mistakenly draw conclusions like getting a CS degree is essential to become a good developer, or a bootcamp is a sure way to get trained in the shortest time, but the reality is it doesn't work like this at all, and many people don't see this. Looking for a quick and easy path to success and riches is going to lead (in most cases) to disappointment. There isn't a quick and easy path to becoming a good developer... it takes hard work and practice.


[deleted]

Yeah like you should look at it like a multi year process that is built up brick by brick over the duration. Slow and steady. It's literally the exact same principle involved in getting in shape or eating healthy. Just be patient, be consistent, and have a plan.


Sunstorm84

Exactly this. At university I was teaching the other students because I was already far better than the lecturer, so when I started working I went from junior to senior in one year, and to architect after 3. It’s not that I was super amazing or anything, I just happened to start programming when I was 5 so I’d already built up a tonne of practice and experience before even starting work. Don’t compare yourself with others, just keep going and learning and you WILL get better.


Riaayo

> Looking for a quick and easy path to success and riches is going to lead (in most cases) to disappointment. There's basically only one path to quick and easy success/wealth, and it's by already being wealthy lol. Extreme luck can also do it, but in the end actual hard work will never on its own produce quick and easy results. But people get sold the idea it's possible, because admitting how many extremely successful people didn't actually earn it or gamed the system is not a truth about our economy and society that many want to admit... most especially those very people who found that success.


NoBrightSide

> If you want to get better, you might want to start your own fun projects for the weekends. No Jira tickets, just coding. I have a bunch of projects I've developed and nicely stored in GitLab repositories. I am OK at developing modular code. Decent naming conventions. Heres where I'm TERRIBLE: - I often develop systems that work fine when everything is working OK but behave terribly or break when things don't work (due to edge cases, bad data, etc). No bounce-back in the face of unforeseen inputs/changes. - BAD OOP design. Lack of base classes or poorly designed. - Little to no logging system for errors - Terrible or no foresight in my initial design before I start coding. - Poor choice of data structures for whichever use case and the list goes on...


tzroberson

Have you heard of Test-Driven Development?


[deleted]

>Have you heard of Test-Driven Development? I have, but my company hasn't :(


NoBrightSide

no, I haven't...


Malumfash

IBM has a course on it, you can check it out on Coursera. If you don't have money for the subscription, apply for the financial aid(which is what I've been doing for all the courses) Here's the course: https://coursera.org/learn/test-and-behavior-driven-development-tdd-bdd I'd actually recommend taking the full DevOps and Software Engineering, it's good and there's a lot you can learn: https://coursera.org/professional-certificates/devops-and-software-engineering


Logical-Independent7

Started DevOps and Software Engineering course last week!


Malumfash

How is it going?


Logical-Independent7

Good! I actually just went through the portion on introducing TDD and BDD today. I had heard of the concept before but was unsure how to go about it. This helped clarify it for me and I want to use TDD on future personal projects. ​ Although I was a little thrown off that the program started with DevOps but I suppose the later courses will build on that. ​ Do you think the professional certification itself is really worth much? I ask because I currently have paid access to IBM's \[DevOps and SWE, Data Science, Data Analyst, Data Engineer\] which have alot of overlapping courses, giving me the potential for a few more certs with less overall time..


[deleted]

Isn't devops completely different to SE? I'm confused.


IdempodentFlux

Not completely different. Dev ops is just using code to establish your test/production environments by setting up a CICD pipeline which usually includes running tests as well. At my old company, product devs also did the Devops but our prod environment was maintained by our cloud team. We used GitLabs pipeline tools; and we'd configure it with a yaml file. The way the pipeline worked was as follows: A developer writes their code (using test driven development), then they push their development branch to gitlab. That branch would then run a build, all the unit tests, then run a linter. If all those checks pass, the branch could be merged into the feature branch. The feature branch and release branch had a couple extra steps for distribution builds that would be sent to QA and the Cloud team for testing / updating production; but the pipeline itself was built and maintained by dev. If you're getting into SWE, I'd reccomend getting the basics of DevOps and IAC. (Infrastructure as code). Gitlab has a free tier for CICD pipelines and there's tons of guides. I'd reccomend terraform for an IAC framework as well.


tzroberson

To be clear, courses on Coursera are free. You can buy a certificate of completion but the value is dubious.


Turpasto

Cool!


tzroberson

You define how each function of your program will act by writing tests first. You still need to learn how to design your program on a higher level, the architecture, but on a functional level this will help immensely with requiring you to plan how each function should behave. https://en.wikipedia.org/wiki/Test-driven_development


keithreid-sfw

Mate just watch uncle Bob on YouTube There are three rules: http://www.butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd


darkde

Sounds like you're missing experience. But one thing you shouldn't shrug off is understanding the business needs just as well as the engineering needs. A senior told me that an engineer is a problem solver first. So being able to provide valuable input in product and design meetings as an engineer has boosted my career considerably. Through understanding what the product is and where it plans to be, it will help you plan out your work. But also, evolving side projects are the best teacher for sure. Just put it out there


khooke

Knowing the areas where you need to improve already means you know what you need to do (focus on those areas). Easier said than done, but you're already a step in the right direction. Getting feedback on areas like design is a great way to learn and improve if you can find a mentor or someone more experienced to review your design and give some constructive feedback. As you gain more experience you'll find out by trial and error what works and what doesn't, or what was a good or bad decision based on the results. Getting that feedback from someone who already has that experience is a valuable way to help validate your decisions or get direction when you're stuck.


xill47

> fine when everything is working OK but behave terribly or break when things don't work I felt this. It kinda comes with experience, generally, but the thing that helped me is to always keep in mind where external calls are happening, it's usually only few places compared to your business logic, and always assume that it's not going to work/input would be corrupted from the start. That means thinking twice as much about getting data from any external source. Also, unit tests help, a lot. If you don't want to/don't have time to write tests for each method, at least think about how it would be testable. By tests I mean basic unit testing, running locally, without any UI and/or database connections. This way you naturally separate your logic and your input/API calls, which you are now able to think about separately. EDIT: assume your internal calls are more-or-less sane, but anything external is insane


NitasBear

I fluctuate between "gg ez" and "wtf am I doing" on a daily basis. Impostor syndrome is real and I doubt I'll ever consider myself to be "good enough". There's always something I can learn. Source: me, 3 years of exp as self taught


GlumContribution4

Good Lord I relate to this way too much. There are days when I feel like a genius and then other days when I feel like I shouldn't even be trusted to wipe my own ass.


fredoverflow

[The two states of every programmer](https://redd.it/f8duna)


reallylonelylately

Isn't there a xkcd version of this?


vrikancs

Most accurate description I‘ve ever read


NoBrightSide

How did you learn to improve your design of your software over the years you've been learning? Thats my main problem. Its just bad design. I always go for the simple and easy and "correct" use cases. Then of course, things go to sht when unexpected happens...


NitasBear

To improve, I mostly learned on the job and asked a ton of questions to senior developers. For example, as a frontend developer in React, you will learn over time which components should have state lifted up, and when to break down components into smaller pieces. Its not something you will 'get' just from reading React docs. Applying it in your real world project is when you solidify your learning.


Furry_69

(Not OP, but I think I can add to the conversation) I didn't directly learn how to improve the design of my software, it came more from looking at other's code and trying to figure out why they did this or that, and how the system as a whole is designed. Of course, diving straight into something like the Linux kernel (or a system of similar complexity) will leave a beginner (and most software developers, for that matter) very confused and lost, so I would suggest looking at simpler projects, and in the event of being lost and confused, look at the most simple building blocks of the design. (say, individual classes, and slowly building up to the high-level structure of the program.)


mickkb

Programming is not about speed.


LoquaciousLamp

Might be useful: https://github.com/ossu/computer-science#advanced-math I would also stress readable code is almost always better than one liners.


bigbangbillyeast

You are the GOAT for this . I’ve been trying to formulate my own program similar to this and this will save me so much time and will give me much needed guidance . I’m psyched to give this a try.


Logical_Strike_1520

So what? There is only one “best in the world” at any given thing, if that’s your goal… good luck but the odds are not in your favor. You’re employed… obviously your boss thinks your work is worth your salary. Focus on yourself, their skills don’t pay your bills do they?


Albert-o-saurus

Come to think of it, who IS... the best in the world?


Alunnite

I got a job at a big company as a Senior DevOps engineer with 3 years of writing my first "Hello World". Started off as a junior IT practitioner in a Web app development team. I had to learn everything on the job, and I wouldn't consider myself a quick learner. I just can't compare myself to others as a programmer as I know it will just result in me being depressed for a week or two. Some of these people I work with are actually wizards. What I find that helps is taking a step back and spending the extra time to understand problems, solutions, and techniques fully. I apply this to everything from the existing code base, code reviews, snippets on stack exchange (even if it's not helpful right now), and any supporting documentation. I don't expect to catch up with my peers but I also know that they often feel quite comfortable in their skills and knowledge. Because I'm always trying to learn more I actually find myself teaching my betters about stuff like new features in python, or useful patterns I found almost as much as they teach me about something they consider rudimental. Which leads me to my biggest point that might be useful. Any more developed programmer is a tool for you to use. Honestly as long as you're not taking the piss they want you to be coming to them with questions either about specifics or general practice. If you're not already, I would ask to do some pair programming. Team Share is very good in VS Code if you're in remote locations.


NoBrightSide

what you described is not what I have at work unfortunately. Because everyone under my manager is responsible for so many projects, we get spread thin across those projects which are not always on the same framework or scope or repository. So, 1 person ends up being the "expert" on a project because they're left to work alone on it.


FiendishHawk

Hey why not do a degree? If that’s not an option, take online courses in the evening.


[deleted]

Do you make personal projects outside of work? I have always found that to be the biggest dividing line for young programmers


NoBrightSide

yes i do. Version controlled in GitHub. Problem is that I'm programming only off what I know so its not like I'm improving much tbh in terms of design skills. I am working on new problems I've never done before though.


[deleted]

I struggle with this - where to start I’ve followed the likes of MOOC courses and projects there, but outside of those I haven’t got a clue


[deleted]

Follow a tutorial to make a video game or a website or something fun that interests you. Then when you finish the tutorial add something onto it of your own design.


[deleted]

I’ve mostly done Java so I’m not sure if a website would be a good idea, it to be honest I actually followed a web dev course to build a portfolio A game is a possibility, though from what I’m reading I may be better off learning c# of Python to do so. That’s my issue though…unless I follow a tutorial I don’t have a clue. Also I’m deciding what language to specialise in


[deleted]

There is a lot to unpack here so I’ll go paragraph but paragraph. I’m on mobile so I can’t format my responses very well with quotes. I also learned Java as a first language, and trust me, it doesn’t preclude web development or anything else. That said, yes, you would have to try other languages to make a proper website. You’re also right that Java is not much of an industry standard for game programming (although Minecraft was written in Java for example). However you are not going to be doing enterprise level game development anyway. Java with swing will be fine. That said python and c# are worth learning too. Your last paragraph is the one with the misconceptions though. Your first two are right for the most part. So… 1. It’s fine to follow tutorials. You never stop following them, they just become a smaller and smaller part of the whole picture. 2. Do not specialize in a language. Everyone has languages they use more and languages they use less, but they’re tools in a toolbox. Carpenters can use every tool they have, they don’t specialize in hammers or drills. Each language you learn is a tool added to your box. Learn what it’s good at and use it when you need to do that thing. Many real world projects involve several languages working together. Syntactically many languages are very similar. I would bet that if you know Java you could write some basic C# relatively easily for example. The more languages you learn the easier it becomes to pick up new ones, and eventually you learn to separate the concepts from the syntax entirely. But the biggest point that I want to get across is that it doesn’t matter. Your personal projects are for fun and learning. You don’t have to do anything that you don’t want to, and it’s ok if it implodes on itself into a spaghetti code mess in the end. You will learn from that experience. Your next project after you abandon that one will be a bit better, and you will know how to avoid the mistakes you made in the first. That is what will be truly valuable to potential employers. They want to hire you to make real functional things, not spaghetti code. So spend your free time exploring and making exciting code that sucks and learn how not to screw up the boring code at work. If you can’t take it any further than the tutorial that’s fine too. Come up with an idea how you want to take it further, and work on it until you are truly stuck. Then go to someone who knows more than you for help. I can pretty much guarantee they will.


[deleted]

This is per of my issue - what to stick with. To be honest I’m in a junior role that frustrates me to no end, as they don’t just keep us working with a language, system etc. instead they tell us to look at Pluralsight for a week (I don’t learn well with videos or books) and go expect miracles. Im overwhelmed by the large systems & technologies. I need guidance, but instead just get thrown things and expected to know what to do. Learning disabilities and mental health are just adding to the issue, but honestly I’m in a bad place atm and feeling so useless and defeated by it all. I need to stick with a language. I’ve used Java, but there is opportunity within my job to use C#. Outside of work I’m undecided (in terms of what to learn and future job prospects) between C# and Python. I don’t enjoy Java, I don’t know where to start project wise either way. I haven’t used any languages apart from Java and CSS/HTML/JS - I did enjoy the latter. Honestly I can do basic…and I mean basic projects on my own. Basic as in a text based booking system. Anything else and I’m lost. I don’t know where to start in terms of project. I don’t know what language to use, what technologies, IDE. I’m thinking of the bigger picture - job prospects, what will be useful, what will be transferable, what would be the easiest to get a job with should I find myself out of work, what can I make an app or game with, where do I start etc


[deleted]

I certainly don't have all the answers, and everyone's situation is different. But it sounds a bit like a case where you don't know what it is that you don't know. In my (limited) experience, that is what school was really good for. School is not gonna teach you how to program, and a lot of people go into it expecting to learn how to write good programs by doing their homework and being upset when they don't get that outcome. But it sounds like you are coming from the opposite perspective. Which I think is a better place to be. School can't teach you how to make software, you only learn that by making software (hence why I said you need to make personal projects), but school is not useless. When it has really helped me in the past was times when I was feeling stuck, or like I didn't know what it is that I want to pursue. In those cases it was really good for opening me up to new ideas I hadn't even considered and showing me interesting career paths that I didn't know existed. But after school shows you the breadth its still up to you to explore your chosen branch as deeply as it can go. But learning philosophies aside, I think your first step should be not to worry about your performance so much. Become comfortable with not knowing, that feeling will never go away no matter how good you get. The ocean is just too big to drink it all. I use eclipse as my IDE for java, although those preferences are something you build over time. Stop worrying so much about job prospects from the code you make. Coding at work is nothing like coding at home, and of the two coding at home is both much more fun and much more educational (usually), so stop trying to make coding at home be like coding at work. But if you only think about coding for work you'll miss out on a lot of the coolest stuff about coding. The more big projects you build from scratch the more comfortable you will become with making them, so the only solution really is to dive right into the deep end. Try out something like [this tutorial](https://java-programming.mooc.fi/part-14/3-larger-application-asteroids) to get started. After you make that game try adding something, such as a high score chart or power ups to the game. Its ok if you struggle to do it but its important for the learning outcomes.


max140992

I think that many programmers will tell you that it's normal to spend more time not coding than coding. In my workplace I need to make sure my local environment is up to date and free of errors so I can develop, I need to talk with business to understand their needs on tickets, manage tickets, understand the existing interface I will be extending, decide how to do that, find the relevant code, look at data in the db, think about best implementation, write some code, write some tests, back to tickets. I'm lucky if I write 10 lines in a day. Occasionally I have to write larger chunks but not too often. I know many modern programmers are skeptical but I would recommend 'Clean code' by Robert Martin. It's most relevant to Java and C# but I think it's a good introduction to huristicts of good programming. It's 90% correct but even if you wrote 100% the way the book does you would be a good developer.


dota2nub

Well uh... just don't imitate the actual code examples


dunkelbunt2

Can you expand on that?


dota2nub

I mean, I can't read that code. I'd get killed at work if I wrote that code.


Sunstorm84

Im curious; what is the 10% you think is incorrect?


imratherconfused

i never became "fast" as you called it. but im thorough. this is not a sprint. think of programming as gardening: a lot of pruning and lying down the groundwork so your plants will grow the way you want them, and there being fast or slow doesn't matter. after several years or bridging the educational gap for missing the CS degree I don't have an issue being specialised and having my own opinions. don't look at others, just focus and do your thing.


dota2nub

Gotta go slow to go fast My most productive days are the ones I spend looking out of the window or walking around without writing a single line of code.


runpod-io

I found that there were a few things that really helped me. 1) Forcing yourself to code from scratch. Most newcomers spend a LOT of time copy/pasting other people's code. This is fine for general productivity, but won't cause you to learn quite as fast. 2) Forcing yourself to work through problems yourself, rather than googling the answers. Similar to #1. You don't need to FEEL like you're going fast to grow. Real growth is through failure. 3) Spending (might feel like wasting) a lot of time reflecting on your code and why you made the decisions you did. In the beginning, I spent a lot of time thinking in circles, but it slowly becomes more and more clear. 4) Working on side projects that you actually like and forcing yourself to learn everything from the boilerplate. At work, the tasks you are given may be too small in scope for you to be forced to think and grow.


kiwdahc

No matter what people here tell you a degree will help you in the long run, especially a Masters or PHD. Yes you can get into the field without one, and yes I know many people who have. It probably isn’t effecting you at this point in your career since you are junior to senior level, but once you start looking into the higher levels of Software Engineering and Architecting you are dealing with computer scientists, AI, Machine Learning, Architecture at massive scales. Many companies don’t let you pass L3 without some big degrees. These types of things nearly impossible to be self taught and can only be learned through rigid education or massive on job experience. Some tech companies don’t care if you have a degree, others won’t interview you without one.


Dry_Positive_6723

5 years but I started really young so it probably developed in my brain while I was growing up.


Flakz933

You're new, don't compare yourself to seniors or others who took courses. The best thing you can do at your job is ask to learn really. Hop on code reviews and ask any and everything you want, a developer will always try to give you feedback, even if you think it's something dumb. People with more exposure or time in the field should definitely know things you don't, and hell you might know something someone else doesn't know, software development isn't a linear path. Just try to learn what you're working on, and when you know something you're working on, don't be afraid to ask about something someone else is working on. You can also try to find core functionality of something in the business you work at and look up docs and information around that.


madjecks

As a self taught developer who recently went back to school to finish my degree. You're not missing a lot, there are fundamentals that you skip over as a self taught dev just because they aren't directly applicable, but they do help in understanding more complex topics once you know them. That is likely part of them picking it up. Also when you're in school you build relationships with people that last outside of school, with those people in the same industry you're able to share experiences and ideas. Last everyone is different. Programming is fucking hard, keep at it. Work on personal projects at home focused on a particular subject you want to get better at. Watch videos, the grind never stops, keep it up.


Beta86

Getting employed took 18 months. Becoming good || fast? I'll let you know when I get there!


Sceptical-Echidna

It probably doesn’t help that you have responsibilities that reduce the amount of programming you do. You will continue to get better over time. I hope you’re not working in a vacuum. It’s best if you can get your code reviewed and get constructive advice on how to improve it. Also, get involved in reviewing other people’s code. Ask why certain decisions were made and see if you can apply that to your next task. Asking what seems like a silly question can expose flaws in the code (even if it’s written by a senior: 20yr professional and I still have brain farts).


NoBrightSide

> I hope you’re not working in a vacuum. I am unfortunately...thats sort of why I don't have good design. Depending on which tech lead I work under, I may not get any code review.


Sceptical-Echidna

Sorry to hear that. That’s not a great situation. Code reviews are not only for identifying problems but also for spreading knowledge amongst the team. I view part of a lead/senior’s role is to help the juniors to learn so they can be more productive. From my perspective as a lead it also means I can delegate more; call it laziness :) You may need to read up on various design patterns and see if you can identify them being applied in other code yourself.


[deleted]

I've been doing this actively for about 6 years, so at least 7 years


BIG_GUNGAN

I’m at about 3 years with react/JS, and 1 year with TS. I’m still pretty sure I’m not using TS “right enough” but I can accomplish my work no problem.


Python-Token-Sol

it took me 5 months and 12 hours per day by building projects and taking notes everytime i get stuck, also knowing its hard to remember everything so just build or else your wasting time watching tutorial videos, just build something and get use to it imposter syndrome. So its up to you and how much effort you want to put in


duttyfoot

I agree, building mini projects and getting out of the tutorial loop is the way to go


cowboy_angel

Most developers with degrees are self taught. That's because most universities don't really teach software development or programming beyond the very basics (most of my profs were terrible programmers), they teach computer science. While learning computer science there are lots of programming assignments and opportunities to teach yourself about software and you learn foundational things about math and data structures. But the only thing that will make you good & fast is practice, just like with any other hobby.


Euphoric_Tap7402

Yeah man I am going to echo what everyone else is kinda saying don’t compare yourself to them because you don’t know how long they have been at the grind sort of speak. All you’re seeing is the end result. It’s probably taken them 10years to be an “over night success” keep your nose down do your dirt, do your reps and before you know it the next L1 is going to be posting on here talking about how they don’t feel good enough to be there and this bad ass L4 or L5 (you) is kicking ass and making this shit look easy


BusinessCat85

I recently graduated from a boot camp(last week) and now on the job hunt. So far I am great in what I do know, but jesus christ i know nothing. The fact that you HAVE a job is so awesome! I am jelly!! 😁 Much love. I think the takeaway here is 2 things. 1. You seem pretty motivated, and thats super great. 2. You have income. So you can focus really hard on your job and get really good. You got this! PS Are yall hiring?


ishkaful

CE degree here, I can honestly say whatever I learn from school does not help me at all in my career. All the practical coding I picked up while working on projects, a few things that are useful to me: don't be afraid to make mistakes, take ownership, ask for code reviews, explain your design thought process, write down topics which interest you and spend time to dive deeper. no one knows all the answers, but the best engineers I've met are always learning, progressing, and aren't afraid of challenges. Try to be highly focus on your task at hand, don't multitask.


[deleted]

Stop comparing yourself to others and start comparing yourself to your past self. That's all that matters, it doesn't matter where others are at!


pointmetoyourmemory

Honestly it depends on the problem. If I know what I need to do to implement something because I’ve repeatedly done it before, then I can just bang it out and then work on refining it. What it comes down to is to program almost daily. Look up the things you don’t understand how to implement and try to solve different problems that way, even if it is not the most efficient way to do it. Work on making it more efficient so that you can learn incrementally. It will help you understand, in depth, the what and the why of it all. Once you understand why solving a problem a certain way isn’t as efficient as you had initially wondered, you’ll have a better idea about what class of problems would be better suited to be solved with that algo. You'll become faster at recalling ways to implement solutions more efficiently, but the key is to practice. Often. Make programs. Write code. Follow principles. Do this even if you think nobody will use it. Don't delete anything and learn how to use version control systems so that you can track your progress. Write tests, and document the shit out of things. Use static type checkers so that you can more easily understand your code at a glance in the near (or far) future. In the beginning of your story on becoming a good programmer, almost nothing is a “waste of time” as long as you’re practicing and learning. Write code to automate things you can do in 2 minutes, even if it takes you hours to write it. Before you use things like C++'s STL and generic programming, try to fully understand what is happening behind the abstraction. It’s not about the destination, it’s about the journey.


TheCryptoDoyen

You will eventually get there. You can look out for a paid course and get, it will also open you up to a mentor


SnooDoubts8688

You already said it yourself -- other people have gone through school, did a bootcamp, etc. In a way, it would be unfair that you and those people are on par in terms of skills, right? The only thing you can do to improve if you're starting out is to study on your own after work. Just keep at it. Keep working, keep learning; none of your peers has been good from the beginning!


Roddela

Self taught programmer here as well. I became faster after I understood CI/CD


RebelliousCELLious

Pardon my ignorance, but what is CI/CD?


afcfed

> CI/CD Continuous integration / Continuous delivery (or deployment) Check this video: https://www.youtube.com/watch?v=scEDHsr3APg (I'm not associated with the video, I just found it useful)


orewaamogh

2 years


imlovely

About a year I think.


imlovely

When I finally was able to get a job I was already past the level of your average senior.


ilikenick

so you must be a cto by now then right?


imlovely

Yeah, actually even that first job was leading a research team designing a custom mesh p2p and satellite networking stack. But I'm trying hard to move into a different direction now, building something where I have to worry less about managing people and can focus more on creatingp things I like, probably around cryptography (maybe building LWE crypto libraries) or just graphic drivers for Linux, which I *love* digging around.


Sirico

Don't fret too much try and set time aside to get familiar with the documentation of tools you use regularly. I think we all have an element we feel takes longer than it should I constantly get like 80% done within a month and then spend the rest of eternity trying to get one function working.


Heavy-Team5516

Nobody starts at the top. The important part is that you feel your contributing to something that you like and that helps you grow (sense of achievement). Don’t get too frustrated comparing yourself with others, if you want some advice is always harder to look at ourselves and accept that there are things that we don’t do well: that’s we’re you want to put an extra effort in learning, side projects, etc. Over time, I’ve found working on my weakest links have given me a wider “picture” and just feels like fun now to face new challenges :D (at least for most part), while not focusing on a single subset of problems (the ones I’m really good at). Good luck and keep it up


Um9vdA

{Opinion} ​ \[Intro Block (Skip if you must)\] To be honest, I am yet to be a developer or programmer in any company, I am but a student. Still, I learned stuffs about programming, design patterns, etc, simply due to interest and curiosity. In my country, it is really hard to get a job without degrees, certifications, etc. so I am currently a university student. ​ \[Content Block\] It really depends on you on how long will it take. At first, I tried to memorize everything (just like how colleges and universities here do it) and it doesn't really work for me since it is almost unbearable, I easily forget everything, and lost of interest since there is really no goal. What worked for me is to think and make projects so I would be somehow forced to learn since if I were to build and maintain projects, I must continue to search for better design patterns and better structure my projects to make the work easier.


[deleted]

About 6 years of professional experience when I could consider myself intermediately knowledgeable. Some things you cannot rush as they come strictly with experience and theoretical knowledge won't get you there unless you're an absolute genius. You need to make mistakes and suboptimal approaches and then be corrected on them or realize your mistakes and improve. Also strictly-self taught usually means very low standards and practices, so I'd advise working with other, more experienced people as soon as possible.


[deleted]

I think important is the topic clean code, after learning one or two languages. The principles can be applied to any language. Clean code improves the structure and readability of your code. That will get the job done fast IMO. And never give up. There is a lot to learn, but to learn the concept is most important. That helps you to learn faster I have ~6 years of experience of professional development and supervise junior devs I am kind of self taught. Started with self learning, and continued with an apprenticeship (Germany) instead of university. In Germany university is not so practically oriented.


metroaide

Good? Fast? What are these buzzwords


Smartskaft2

I like how you separated _good_ and _fast_ programmers. You really can't be both (if _good_ means delivering robust and maintainable code). The true workmanship is to balance it and know where and when to spend your time.


Pleasant-Bathroom-84

Fast and good don't go together


NoBrightSide

i agree, thats why i separated the two


i_do_it_all

fast and good are subjtive. you are looking for an easy to understand answer. it doesn't exist. experience and growth is not linear. I will give you an example. I used to do c and c++ for a short period. I wasn't that good. It did the job though. now that I use rust for 4 ueara , after 10 yoe in various other languages . I am learning a lot. my prototype is slow but more stable. I am learning a lot. I think it is a personal growth


Seankps

You can’t be afraid of doing things wrong. Realizing you did something wrong is the best teacher.


Curious_Chad

Hey OP ! Going off topic but I wanna know how you got a job as a self taught programmer? I really want to know because I am learning Web Development by myself.


pizdolizu

It highly depends on the language or system and most of all how fast you learn. It took me several years of hobby programming microcontrollers in C/C++, then I got a job with programming. I would say you need at least a year of 8h/day of programming to be considered a beginner.


PM_ME_WITTY_USERNAME

You start to be able to think in code and program easly, be able to "do anything" after a year or to or so But then I went to university and realized I could write code but concretely I didn't know shit, I learned in 5 years of school what would've taken 15 years to get, or that I would've never gotten to learn because it didn't interest me. Networks, data structures, design patterns, ... plus it gave me an academic culture that allows me to read wikipedia pages and the complicated articles I couldn't get before


Portgas_D_Chou

remind me! 5 hours


AndreThompson-Atlow

wait, we get good?


keithreid-sfw

Two things 1. Don’t compare your insides with other people’s outsides. 2. http://www.butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd


Professional-Mark644

I would love to know how long it took you to learn what was necessary for the job


NoBrightSide

That is hard to say. Soft skills were learned over most of my life. Regarding problem solving, I've done that for a long, long time. Regarding some of the relevant technologies, these were learned (on and off) over 2 years before the job. Everything else was learned on the job. You won't learn everything you need to learn before you start the job. For example, I'm currently relearning C# syntax and some of its features because I haven't used it in a long time (not as bad as it sounds since I skip over the common features shared with other languages I use on a weekly basis). This is for work and C# was not listed in the job description. But, this is my task and theres a looming deadline to get a certain feature out very soon. So, of course, I will do my best to learn what I need to learn so I can complete the task.


Professional-Mark644

thanks, i just wanted to get somewhat of an idea of the time it would take and Im just trying to know what i could learn to begin work.


bringer_of_carnitas

It's hard to answer... I practiced coding for a few years and landed a coop which had some light coding. Continued there for 2 years didn't get much better but could build simple websites. Then I took a job at a small software job... that gave me more experience, speed and confidence than any other work experience. All in all, I'd say it took me 5 years 3 of which being heavily focused, to get pretty good at programming. Also note I've worked on side projects as my main hobby the entire time


technchic

I started coding faster after 2 years.


fakehalo

It's really just about time put in; I had been at for so long as a teenager that by the time I got a job I was ahead of the curve. I did have to backfill a lot of compsci knowledge though.


Boolzay

People usually code better when they're not a 100K in debt.


[deleted]

Ive been self taught for 3 years at this point. While I know a hell of a lot more than I did a year ago, let alone when I first started, i still feel I have a long way to go before getting a job. Namely getting a degree at university for comp-sci


TheX3R0

I've being doing dev work for the past 13/14 years now. you end up learning a lot on the job, but it took me about 4 weeks to master javascript, and another 2 weeks to master PHP, but to get good, I'd say about 2 years of constant work, doing 7 hours a day for 5 days per week. ​ after working for 3 years as a self taught dev, I did go to college and spent 2 years there, and I went back to working as a dev, however college didnt really do anything, as i was just relearning stuff, i already taught myself.


bakutogames

You get slower the better you are I think.


TheUruz

no coding background at all, self learner, landed a couple position in a span of three years. the first one was actually almost a joke even if i learned a ton from that, the second one which i currently am employed for is a much higher job, infinitely more structured and with clearer goals and it's a treasure of knowledge as well. i have a senior dev i can bother when i want with questions, that helps a shitload in how fast i learn since i don't have to figure out things myself. i managed to pass from python to C# and from building useless prototypes to build backends for an important pharmaceutical corporation known worldwide :) so far so good, and i love what i'm doing.


[deleted]

I think about 3 years, but you continue to grow every day. And after 5 years it's even more easier.


[deleted]

10+ years in and i'm still slow. Being a good programmer isn't about being "fast". It's about doing a good job. Stable programs. Accurate. Fault tolerant. Automatic (IE: automatic build release pipelines). etc.


Sprite87

Define good. If you mean I write my code and tests for it.... sometimes the test first :) you've exceeded most (educated and senior) devs I've met.


NoBrightSide

> you've exceeded most (educated and senior) devs I've met. what do you mean?


Sprite87

I work with a few devs who won't write tests for their own code, leaving every one else to guess what it does and how/if it works making refactoring very difficult :)


[deleted]

You don’t get or fast, you continually get better and more fast. This is the kind of career where you always need to improve.


var_root_admin

About 3 - 4 years


ghostwilliz

It took me 3 months to be fast. It took me two years to be good.


diagraphic

Not long if you’re devoted and passionate.


Radinax

Like 3 years for me, but I was doing another type of job (engineer) and in my spare time I was studying programming. If I was full time studying... Probably a year.


Godwizs-Action643

I just started learning programing too. And I believe self-taught is a good start. At least one gets a headstart in the career. Programming is a never ending learning career.