9 ms·
Ask HN: I just got my first job and I need to learn faster and better
A little background: Self-taught web developer, hired to work with both frontend and backend code. This is my first software development job.
My problem is, I'm slow to pick the technologies needed to start working on JIRA tickets. I'm working together with another junior developer (also self-taught, started same day with me) but I'm just stuck eating his dust. I decided to put egos aside and ask him for help and the only thing I got was generic advice, which I already do (read the docs, understand what you read, try building their tutorials/getting started section, read more code, trial and error).
Either I'm inherently slow and it's time to accept the natural limits of my brain or there's a better method that would work for me and I'm missing it.
- veryfancy 5y agoTake that “put egos aside” attitude into a pairing session or three, either with this person or someone else working in the codebase.
- awb 5y agoWhat language? And what kinds of tasks are you finding yourself slower at than the other junior dev?
- Arisaka1 5y agoSo, when I decided to ask I wanted it to keep it as language-agnostic as possible because, I don't believe that whether it's Python, Rust or Ruby changes the overall approach/method. But just for the sake of being specific, it's Python with FastAPI. But it's not just the FastAPI docs (which help) it's also the architecture. The project is in a scale I never worked with before and I'm so bad I don't even know how to debug it. It also uses a microservices architecture, so it's not just the FastAPI but also Python scripts running inside multiple Docker containers. I told them I've only worked with Python for small projects and coding challenges, the other guy also claims the same but still he does a much better job covering ground compared to me. Just today I've spent 4 hours going through the FastAPI docs, poring over every single line of code to understand what is happening. Googling every unknown line, making anki cards, etc.
- awb 5y agoYeah, so they threw you in over your head. Sorry about that. If they let you sink, it's not all on you and don't be afraid of the next gig because not all companies are like that. As others mentioned, I'm also entirely self-taught and it comes from personal projects. I'm sure you've seen it, but if I was going to learn it I'd start here: https://fastapi.tiangolo.com/tutorial/ https://fastapi.tiangolo.com/tutorial/ Then I'd build something for myself, something that actually works, that I actually deploy. Because so much learning comes from doing. Pick a project you want to launch, or build an open source tool. After 3-5 you might feel quite comfortable. But it probably will require a lot of extra time outside of work. I learned Rails outside of work and I spent most weekends and a few nights a week for a month before I felt comfortable enough to work on production code. I also like video tutorials, so maybe try Googling and see if there's a YouTube video series that clicks for you. Sometimes the medium of spoken word just works better for me than reading. The other thing to remember is that no two projects are the same. The FastAPI project you might be working on might be in a very different style than the ones in the tutorials. Just so you don't overwhelm the other dev, maybe write down a few questions in the morning and ask them all at lunch time. Otherwise, if you're asking every hour it might get overwhelming. Good luck!
- Arisaka1 5y agoThank you. To be honest, I haven't really asked them much, because they (senior devs) have their own plate full, and I'm only trying to ask project-specific questions not things that I would find on Google. Also, I'm feeling like I may get too obsessed with syntax. I author multiple anki cards throughout the day. Some are things like "difference between concurrency and parallelism", while others are like "3 ways to add a new item in a list", "docker command to run a container detached".
- LilBytes 5y agoThe Senior devs are there to help out new starters, especially those that have just started their career let alone starting a new job. I respect they might be busy but two new starters who are at an equivalent experience level should be getting support. Reach out to them, find the one that has the best personal skills and lean on them. If they are really busy make sure you're making the most of their time. * Take notes * Ask good questions * When they provide you information, ask for them to provide you a link to supporting documentation so you don't need to ask the same question twice Even with all of this, you might not get the support you need. If that happens, it's not a reflection on you but a reflection of the organisation or it's current (or permanent) situation.
- DougMellon 5y agoHave you identified what it is that you are specifically slower at?
- Arisaka1 5y agoI have a slight idea that I might be focusing too much on remembering the exact syntax and understanding (almost) every line before I move on, and that I should chill out a little bit and realize that I'll be working with Python docs, google and API docs open 24/7 for a while. But then I might end up not recalling many things later. Can I even claim that I'm "learning" like that? What if I end up being someone using older projects as a reference? Is that even acceptable?
- silisili 5y agoNo offense, but it sounds like a combination of overthinking everything and being nervous. When I started, I was similar. I read K&R C cover to cover, then sat to write a toy program and didn't even know how to start. Lesson learned. Now when learning a new language, I scan the docs, then sit down to write something. Line by line, word by word if I need help(and I do), I'll find a reference, write it, move to next. And you'll learn that way, from repetition. In short - less thinking, more doing.
- InitialLastName 5y ago> I read K&R C cover to cover, then sat to write a toy program and didn't even know how to start. This is interesting, because K&R's strongest point is its exercises. I'd almost call it not worth reading if you aren't going to do them, but if you did the exercises (which get deep quickly) and came out unable to write a program that's a bit baffling.
- silisili 5y agoI read the exercises, and thought through them, but did not do them. Busted!
- 5y ago
- 999900000999 5y agoStart a side project using the same exact stack. You need to start practicing outside of work. I'm also self taught. But you need to never stop self teaching. I learn 90% of what I know outside of work, and I've been a software engineer for a good while
- iKlsR 5y agoThis! This is how I made my career, I've worked on non trivial stacks that varied from low level code to opengl, mobile apps, php with vuejs etc. Take the exact stack and make something as simple as a todo app, you'd be surprised how stuff sticks and you can identify similar code after or at least know where and how to start. When you look at it, a todo app would entail connecting to a database for persistence (look at what the company uses or can even be a json file, sqlite etc), you need crud methods and maybe a sprinkle of logic then you need a frontend with some interactivity then depending on your setup you'd need to containerize this. All of this can be done in a weekend and you're ready to tackle the smallest ticket Monday. The next best thing you can do is make a work log, save every single stackoverflow or documentation link you visited, take notes and document everything you learn, do or want to do. Whenever you do something or are unsure, make notes to ask the senior devs later on. It wouldn't hurt to ask the other junior dev if he wanted to pair on a ticket as well to observe how they work. The other day I was brought on to a project that uses gRPC, I've only ever briefly looked at protobufs and with one weekend, I learnt how the proto files worked, the tooling around getting setup, made A LOT of silly errors, got stuck, unstuck and stuck again but eventually made the simplest application that stored locations to a sqlite database. The following week I made my first PR to the project because I could identify what was what, the project structure was much different and complex compared to my small app but the concepts and how everything worked made it a lot easier than just diving in headfirst which when in retrospect would have been next to impossible.
- mettamage 5y agoThis is fun and all, but what about doing things like: learning how to cook, studying physics, playing music, falling in love, and so on? Is this also true for other professions, if not, are there decent professions where I can simply put in an enthusiastic 40 hours but just 40 hours?
- AlchemistCamp 5y agoYou may just have less of a background / less fluency with the tools you're using than your coworker does. I'd try focusing 100% on getting the task at hand done while at work, but noting areas that are difficult for you and then doing some experimentation and side study on those areas after you get home. In order to make it at your first software job in a new industry, you'll possibly have to put 2 hours a night into self-directed learning.
- serjester 5y agoI wouldn't overthink this, no ones expecting a new hire to instantly pick up the codebase. You mentioned you only got generic advice from the other developer, did you ask generic questions? It's difficult to answer vague questions. Most importantly I wouldn't extrapolate your experience at this company to sweeping generalizations about how smart you are - there's close to 0 correlation. Just focus on breaking down problems into manageable chunks. I can't emphasize this enough. As for FastAPI specifically I'd check out the sample postgresql project tiangalo made, it's incredibly well put together. [1] https://github.com/tiangolo/full-stack-fastapi-postgresql https://github.com/tiangolo/full-stack-fastapi-postgresql
- _benj 5y agoGreat suggestions here. I’d add to understand the problem that you are trying to solve. I often thought that my inadequacy at a previous company had to do with lack of technical knowledge, and even though that was true I was not familiar at all with the project I was working with. Use the debugger a lot, step through code until you have an idea of what is doing what and why is doing that. This knowledge would help you have better questions, i.e. instead of something like “how does the widget X works” have questions like “why when X happens are we making Y API call?” At the end of the day, remember that you are paid for making money for your company, not for above-average technical skills! So, focus on the task at hand, throw console.log and debugger everywhere and understand your company’s app and how they are using whatever technology they are using. I’m also self taught and I’ve been there, you got this!
- heybecker 5y agoFocus on what interests you most. Listen to the concerns of the business. Do not compare yourself to other devs, the business doesn't care (unless your at Google, Apple, etc). It's only worth it if you enjoy it.
- tomlockwood 5y agoHey, I'm also a self-taught developer and was hired as a junior alongside another self-taught developer, who taught himself in the space of 6 months after being a chef for his entire career. He smoked me! I had been programming for 5 years at that point. What was the difference between us? After working with him for a year, I still didn't know and I still don't know. I offer this to you because, you will not always be better than the people around you. That being said, its worth investigating the python debugger if you haven't already. import pdb; pdb.set_trace() - this will drop you into a debugger at the spot in execution that will allow you to examine variables and iterate through for loops. This has previously helped with my understanding of Python. But, my big message to you is to not get taught up on comparing yourself to other devs. You will excel on some things and not be great on others. You will be slower than some and faster than some. Try first of all not to stress about your performance, but keep a learning mindset. From my perspective you seem to have your heart in the right place!!!
- rebelos 5y agoA simple answer to your conundrum could be how he manages his cadence and deals with pressure. Programming isn't especially difficult in my opinion. In many cases, sheer throughput seems to have a lot more to do with success than raw talent. Someone who was previously a chef might have a huge advantage in this regard, since working in a kitchen is a really demanding occupation. He probably has excellent training in dealing with pressure and time constraints. Perhaps being a programmer is even a relief compared to being a chef!
- tomlockwood 5y agoBefore I was a programmer I worked on an industrial site. > Programming isn't especially difficult in my opinion. Spoken like someone who is a programmer! haha
- Arisaka1 5y agoAside the "programming isn't especially difficult" which I think has more to do with how experienced people are poor evaluators of the required skills to be good in something (akin to gamers saying "git gud" when it comes to Dark Souls games), you have a good realization: The faster you iterate the faster you move. When I was learning simple syntax I used to be afraid, almost allergic, to the idea that the code I'm executing will produce errors. I realized too late that the faster I get to the point of erroring and interpreting the errors thrown the better my progress. To put that in the kitchen perspective, it's the point where you're sampling the food that you're cooking to see if it needs salt, you forgot the onions, or it's boiling too fast.
- kindofajsdev 5y agoFirst, congratulations on the new job! First programming job is exciting! We have all been there before. Don’t sweat it too much but also don’t ignore it (you don’t seem like you are so that’s good). Idk what you’ll be doing more of. Identify where you’ll do most of your work on focus on that. DO NOT try to learn everything at once. Maybe that means building a react app with no backend and using 3rd party services. Maybe it’s making a pure api backend and using paw/insomnia/postman to query it. 1. Go to seniors before you go to Jrs for advice. There’s a reason someone is labeled “senior”. 2. Read read and read. Go find a book on fastapi if it exists. 3. Document anything you find weird. Your coworkers will love you for it. Documenting is like teaching and you can’t do it without understanding that piece of code. Furthermore, when you make a PR with those new docs, your coworkers get a chance to say “hey you don’t fully understand this”. 4. What areas are you weak on in fundamental programming? I find most people that struggle with a framework really lack understanding in the fundamentals. If you do not, go read a book. Python: https://www.amazon.com/dp/1449355730/ref=nodl_?tag=hackr-20&geniuslink=true https://www.amazon.com/dp/1449355730/ref=nodl_?tag=hackr-20&... Js: (No book just read mdn) https://developer.mozilla.org/en-US/ https://developer.mozilla.org/en-US/ - Do you actually know OOP? - Can you articulate the difference between pass by value vs reference? - Do you understand how the HTTP request cycle works? What about Tls, cors, http methods, etc? - Synchronous vs asynchronous code? - Scope & closures? - The DOM? - (This one bothers me now a days) Can you actually write vanilla js? Do you understand what react (or others) are doing under the hood? None of these are attacks. Be honest with what you don’t know and go learn it! 5. Create a project with the exact technology. Deploy it to the same services. Yes deploying is Ops but understanding the lifecycle of your code is important. Yes you will rip your hair out deploying on aws instead of heroku. Yes it will suck. But yes, you will be a better programmer. This is going to be the most important one: 6. Stop comparing yourself to others. Time of programming means nothing. Unless you both read the exact same books and did the exact same projects and solved the same leet code problems, you’re comparing apples to oranges. For all you know, they could have a mentor. Maybe you were reading the worst guides ever and they read the best. Pondering how this happened won’t do you any good. Just keep moving forward! Programming is not a job you get to walk away from after your 8hrs. You can but others will leave you in the dust. You can do this! Do your best not to stress the day to day. Focus on growth. I promise you, if you focus on learning, 90 days from now you’ll question why you were even stressed out. You just have to be honest about what you don’t know and learn it.
- aristofun 5y ago3 steps that work for me (in CS i'm self-taught, but still after 20 years in the industry regularly put my ego aside to learn another new idea/techstack etc.): 1. Focus on specific task first. The most simple you can have. 2. Find someone more experienced in this area to mentor you to achieve the task. 3. Repeat with more complicated task.
- xaxaxb 5y agoI would say search for the task at hand you are finding hard to do. There would be a similar problem somewhere. Look at the code and try to apply it to your own problem by modifying it to fit your task. Reading docs are okay but they won't teach you to solve the task at hand. This from my experience.
- machiaweliczny 5y agoYou need to learn to Google fast. Really. I mean the most important skill is to come up with correct question to your current problem. Also follow people that lead given tech and competing/emerging solutions
- gaws 5y ago> I'm working together with another junior developer > I decided to put egos aside and ask him for help and the only thing I got was generic advice, which I already do (read the docs, understand what you read, try building their tutorials/getting started section, read more code, trial and error). Useless advice from a useless junior. Ask someone more senior to help. You'll have better results.