16
19 Comments

What's the best way for a junior dev to improve at building?

Is it by freelancing or getting a salaried job (maybe as a full-stack engineer)?

I've had a little bit of coding experience doing front-end and mobile work but none doing back-end or database stuff. I want to be able to create my own Indie Hacker-style software solution one day.

  1. 8

    You should build things to gain experience and find a senior engineer to mentor you

  2. 6

    TL;DR: Salaried job IMO

    Working on side projects is definitely going to give you experience but the problem is that if you're not careful you can develop bad habits and become an experienced "bad" engineer. That all depends on how much reading/learning you do while building.

    I gained the most experience working on a team with other seniors where you pair program. Github code reviews from others also help you learn bad practices and correct them. It's all about finding the right people to work with :)

    1. 1

      This. I recommend to join a software engineering company that builds it's own products and has at least a medium size (100+ employees).

  3. 4

    I recommend working for a software company in a good team with experienced developers to learn from.

  4. 4

    I think your best bet is to find a job at least at first. Freelancing requires good chops at selling yourself, i don't think that as a junior you'll have enough confidence to do that properly.

    But if you'll find a company to work for - it's important to not be a 'smartest person in a room' in there. There is a significant benefit in having a mentor.

    You can always try to gain all that experience on your own, but good mentor will skyrocket your carrier into space in a short time period.

    good luck

  5. 3

    Self-taught FE developer here. 2 years ago I was (miserable) working as a business analyst.

    Long and short of it: have an idea - doesn't really even need to be a good one - and make it. Persevere through the frustration of not knowing how or even what questions to ask to figure out how.

    Build the frontend, build an API, learn how databases work, learn what an ORM does. Build build build.

    Put stuff on Github & contribute to OSS.

    --

    If you want advice on building your own indie hacker style solution? Test test test (your idea with people), then build build build.

  6. 3

    This was my route into becoming a developer (I'm Senior Full-Stack after 5 years, and a lot of hard work) so make of it what you will:

    1. I interned at a local digital agency for 4 months, learning the basics inc. WordPress theming etc.
    2. I joined a much bigger marketing agency as a junior where I worked for 2 1/2 years. Fortunately I had a manager who mentored me and I learned much of what I know now.
    3. I joined another marketing agency as a middleweight and was promoted to Senior after 1 1/2 years.
      From my experience:
    • It's hard/impossible to acquire freelance work without having ever worked in an actual company.
    • Working as part of a (large) team will teach you better working practices. With any luck you'll find likeminded people who you can share ideas with. Sometimes this isn't the case and it's not immediately apparent whether the approach your team takes is good or not. Go to meetups and you'll find out.
    • The company I chose to work for had only full-stack developers, so what I didn't know on the front/back end I had to learn. I don't subscribe to this 'master of none' mentality - I wouldn't say being a full-stack dev makes me any less adept at either.
  7. 2

    I learned an extremely valuable lesson from a wise teacher of mine years ago.

    "If I want to improve my marathon time, I don't read about running, I don't buy better equipment, I run. If you want to become a better programmer, you need to write a lot of code."

    Best advice I got at the time and I still use it today. The best way to improve your building skills is to.....well......build things.

  8. 2

    Like most others said, go build stuff. The more you build, the better you will get at it. However, you need to work at it consistently. My current approach is to code every day. It's a challenge but I am learning so much and I spend less time relearning stuff.

    You could start by creating a game of some sort. Some improvements would be adding user account, stats for wins vs loses, resuming a game, etc.

    Lastly, having someone better at development than you look over code you write will really help. If you don't know anyone personally, contributing to an opensource project could be a great way.

  9. 2

    I've spent a lot of time teaching devs (in fact that's all the site linked to this account does).

    There seem to be two really common failure modes:

    1. spending all of one's time studying and doing tutorials
    2. never studying and just building things

    The problem with the first approach is that it leaves the learner with nothing more substantial than toy apps and very little experience solving problems in context. The problem with the second approach is that learners get very fluent with a limited range of techniques and then fossilize and stop improving. They'll often be able to build something to solve the problem but it may be deeply flawed and hard to extend.

    The best way to improve is to do a small amount of study and then use what you've learned to build something. Then study a little bit more and immediately build something slightly more sophisticated. Continue in this tight loop and try to find peers you can share with and learn from as you continue improving.

  10. 2

    If you can get freelance or salaried/intern/etc work, definitely go for it!

    I think the best way to learn is to constantly challenge yourself, ignore the fear and the "I'm not good enough" mentality, and jump in to build a personal project and try new things!

    I'll bet hundreds of hours have been put into the IndieHackers website, but the concept is simple, and you can learn those basics pretty quickly. Your first version won't be sleek, and it will probably be thrown away, so get building and get it out of the way :)

    You already know what you want to learn, and you already have a side project you know you want to build, so:

    • Write it down: What are your highest learning priorities, and what site/app features will help you get there. Eg: A database with posts and comments. A login system.
    • Research: Do a small research phase where you figure out what tech you'll use. If you already do frontend work and want to learn how people build backend databases, you can skip the language wars and comparisons. Maybe NodeJS with MongoDB is the best option because you'll write javascript and save JSON into a database.
    • Minimize tasks: A login system can be complex and take hours of work. Try to minimize tasks like this while learning. You can go so far as to have a username field when something is posted, and not validate a password until you really want to dig into user systems.
    • Write it down: Yep. Again. Turn the feature list into a list of tasks. When it's overwhelming, break it down into small steps you think need to be done. Break those down if necessary.

    With a big project in mind, you can direct your learning based on your desires/priorities. When one task becomes frustrating, you can switch to another, like a lower priority, or work on FE/design that you're already familiar with for a break.

  11. 1

    There is no real difference in both path you mentioned for achiving your goal. The best way to improve building as for my experience and what I saw it's to find someone who can guide you and able to answer your questions. That means working with a senior who can teach you how show you his approach to problems and projects. In all cases the fuel which bring you at the top is motivation, so keep building your front-end experience and try to face the community on github which can help you as well.
    Hope to hear some good news about your journey soon ;)

  12. 1

    I would suggest joining a good team as a junior dev. That's how you will level up the fastest way. BONUS: it pays your bills at the same time.

    Many people here will suggest "building" but many things you won't learn on your own or it's very difficult and the progress is slow.

  13. 1

    Sign up at exercism.io and do all their exercises in technologies you’re interedted in. Volunteers give you mentoring, it can really improve your coding skills.

  14. 1

    Start with something really hard and unusual. Don't give up until you build an MVP. You will be forced to research. I personally only learned after I was forced to find the answer to spur progress. Contribute to StackOverFlow and you'll find yourself transitioning from asking questions to answering them.

  15. 1

    We have a team of Junior or new engineers being mentored by my co-Founder who is an ex engineer for Uber

  16. 1

    Contributing to open-source projects is a great way to become a more competent dev. Check out CodeTriage

  17. 1

    My experience was somewhat different. I came coding from an educational background in business. For the first 2-3 year I worked through coding tutorials and tried to create small applications myself. My skills are mostly around building applications with ReactJS, React Native and Node Servers.

    Once I was able to create simple websites, I started contacting startups and other smaller companies if they needed help on their tech development. I often took assignments that I didn't know yet how to build, but somehow completed. For me personally this approach was valuable in three different ways:

    • You can build new projects. Learning to build features for large companies is not always the fastest route to teach you to build new projects from scratch. You optimize existing projects instead of building new ones. By working with startups as a freelancer I was often the only responsible person for building a project from scratch.

    • You get much more motivation when building your coding skills if there is a real project involved. You can see your clients pain points and can find real solutions for them. For me this was a huge learning boost.

    • You can learn to code as your full-time job. After transitioning from another job I started freelancing full time. It's great to learn valuable skills while you are making money.

    Note that you can of course also have these benefits in a smaller company or working with an agency.

    However, one thing that you learn only as a freelancer is how to run a business. And that was the most valuable point for me.

  18. 4

    This comment was deleted 7 years ago