Developers February 10, 2020

Do I need to learn front end?

Elliott Stone @emstone

Hi guys,

A problem I have whilst indie hacking is this:

  • I am a fairly experience back-end (Java) engineer. I've built some fairly complex systems over the years.
  • I have virtually no experience in web front end programming.

Whenever I have an idea for an Indie Hacking project, the back end logic is well within my ability - but I'm just not sure how I would hook it to a front end properly.

I am wondering:

  • Should I learn front end programming, or will it take to long to get to a reasonable standard?

  • Should I partner with a front-end but no back-end experience guy?

  • Are there services that would allow me to "hook up" by back end to a (easily buildable) front end?

Thanks,

  1. 9

    In short - if you want to control your own destiny then yeah you need to learn.

    If you’re happy to be at the whim of human dependencies then don’t.

    1. 1

      A good summary. Thanks.

    2. 1

      This right here.

      Even if you do plan to outsource the role, knowing how to do it with a decent level of precision is going to help a ton. If you can do the job, it's easier to sniff out the BS when somebody else is simply taking advantage.

  2. 3

    I started in C, a long time ago, and had the same "crisis of faith" when I started looking at my own projects. I wasted a few months trying to find inexpensive contractors and tools to do the work for me, but it turned out to be a lot more expedient (and useful!) to just dive in and learn as I needed more.
    And bear in mind that, to get a project moving, it's not out of the question to start out with a gray background with a bunch of text boxes to be fixed up later.

  3. 2

    Can you use a html, css, java frontend? I've been using a no-code designer to build out the front end stuff, plugs into a django back end pretty quickly. Kind of like bootstrap templates if you've messed with those.

  4. 2

    100% yes, learn some front-end development. I love programming in Java and think that it's a fantastic back-end tech to create applications. For the front-end, JSP is still a great and viable technology that should be extremely easy to pick-up. Unless you have a very specific use case, there is really no reason why you would need to start with one of the complex front-end frameworks.

    Other recommendations here suggest learning VueJS. In my experience, I've had very good results taking existing JSP-based front-ends and incorporating VueJS to facilitate a better user experience (near-instant time-to-load, reactive interfaces with real-time data binding, etc.).

    DM me if you want to chat about this tech.

  5. 2

    @emstone I was in the same exact boat as you. I'm a backend engineer, and up until maybe a year ago had zero frontend experience.

    So, I went and learned VueJs. Built a few tools using it, and now I feel proficient - Vue Rocks! Not the end of the story though!

    Writing the backend and frontend in two different languages was a lot of work. I got sick of context swapping, so I started looking for a better way and discovered:

    https://wicket.apache.org/

    (here is a spring/wicket starter if you're interested. Didn't make it but I based my starter project off it https://github.com/MarcGiffing/wicket-spring-boot )

    I'm building my current project with Wicket. Honestly, I really like it. It's not "sexy" or modern, but in no time I was able to really get moving quickly. I can build "SPAs" using the AJAX wrappers and outside a few strange "gotchas" it just works!

    I don't regret learning vue, but don't feel like you have to learn a specific FE library.

  6. 2

    I was in a similar situation last year. I'm also a Java backend developer, I know some NodeJS but almost zero experience in frontend. Here is my experience:

    • Finding a frontend guy can be difficult (and expensive). I suggest learning frontend development.
    • I didn't have any experience in modern frontend development. I would suggest having a quick look at the official documentation first. Then (maybe) bought a React admin template from ThemeForest and study their code, it can be a bit overwhelming at first since there might be a lot of dependencies. High-quality templates often follow best practices and well-organized, so I can learn some best practices from the code. It took me about 20-30 working hours to get through the basic and another 20-30 hours to be proficient with the library.
    • I'm not aware of any service like that, but there are some prebuilt components that are ready to use (e.g https://ant.design)
    1. 1

      I have no experience in programming at all yet, but i think i will be learnong java to build an desktop notetaking and calender app. However, isnt there a frond end tool called javafx for java programming? And i know that doesnt even require any programming, but mostly just photoshop alike skills.

      But qould ot maybe be more customizable with a own front end programminh? What do you recommend for me to build my desktop app?

      1. 2

        @Polomalolo if you're just getting started I'd really suggest going with JavaScript. Java is great, but you'll find a lot more relevant resources for JavaScript.

        1. 1

          Yeah, Ive heard Javascript is also good for web development. But is it strong and fast enough for a notetaking + calender + some more database required features?
          Also i dont want to be all-in programmer, but an entrepenuer - just want to understand programming such that i can see the oppurtunities from the techlogical needs too.
          Sure enough i have gotten this initial business idea to work on to learn it, but i also actually strongly believe i will have some good reach and profit for the product i want to build. But that requires that my app is not too slow if you know what i mean, at least considering that there are some indirect well-funded and established competitors.
          And when/if i have made a succesfull business, i want to move from there to a venture capitalist, which i think deep understanidng of tech would help.
          What do you think i should do from there?

          1. 1

            Javascript will be plenty fast, but don't worry about premature optimization - that is a trap all on its own.

            I'm personally friends with the team of one startup that got to 50K MRR with a NodeJS backend and VueJS frontend - which was then acquired.

            If I were you I'd go all in on learning Javascript. Once you have down the fundamentals you can do anything with it.

            1. 1

              Sounds good tbh. But to be clear, I kinda wanna combine google calender + OneNote/EverNote + some database requiring features ...
              Can javascript and electron then be able to build this?

              1. 1

                Any programming language could do what you're trying to do. Albeit, some will be easier than others.

                Let me ask - why do you not think JavaScript will not be able to build what you want it to? If I can understand your hesitation, I might be able to clarify better.

                1. 1

                  Uhm, interesting. Though matbe javascript may not be able to have a such good database structure as some others such as even python and not be able to store big chunk of data from note taking (which includes pictures and also maybe doing paint handwriting with the mouse) + more database.

                  May also be limitid on GUI and the frontend stuff for the desktop app.

                  Also thinl that learnong a more lowlevel language such as java or c++ may help me understand others projects more when it comes to venture capitalism.

                  And additionally think that javascript may aldo be dlow in additipn to all the database required for my app that will make ot slower. (Would it take like 2sec before the app starts?)

      2. 1

        @Polomalolo I'm not familiar with JavaFX. But I think you still have to code at some point to implement the logic for your app. I would recommend learning Javascript and having a look at Electron.

        1. 1

          As for the logic i was thinking java.
          but, Ive heard Javascript is also good for web development. But is it strong and fast enough for a notetaking + calender + some more database required features?
          Also i dont want to be all-in programmer, but eventually an entrepenuer / venture capitals when i see some success - just want to understand programming such that i can see the oppurtunities from the techlogical needs too.
          Sure enough i have gotten this initial business idea to work on to learn it, but i also actually strongly believe i will have some good reach and profit for the product i want to build. But that requires that my app is not too slow if you know what i mean, at least considering that there are some indirect well-funded and established competitors.
          What should i do?

          1. 1

            @Polomalolo

            i dont want to be all-in programmer, but eventually an entrepenuer / venture capitals when i see some success...
            I've seen some people build their MVP without coding, have you tried that approach? If you want to do some coding, I would still recommend Javascript. In my opinion, Java has steeper learning curve than JavaScript.

            but, Ive heard Javascript is also good for web development. But is it strong and fast enough for a notetaking + calender + some more database required features?
            You can connect to a database with JavaScript as well. Depends on the logic of your app, if you do it right, the app will be fast enough regardless of the language choice.

            But that requires that my app is not too slow if you know what i mean, at least considering that there are some indirect well-funded and established competitors.

            I don't know your app requirement, but premature optimization is not neccessary. Further reading https://stackify.com/premature-optimization-evil/.

            1. 1

              Yeah. But I am actually quite confident that my app will succeed in some way. Even at least 100 paying users will use if I am able to make a good enough product out of the idea.

              But to make it clear I kinda wanna combine Google Calender + OneNote/EverNote + some database requiring features into a product. Do you think javascript with electron will be able to handle and make this?

              1. 1

                @Polomalolo
                It depends on the requirement. If you just want to integrate with multiple services (e.g your app mostly make api calls to Google Calendar, Evernotes and make no complex computation), then I think Javascript is good enough.

                1. 1

                  Oh. Can i like legally integrate google calender into my app, and then maybe make my own notetaking features and then some even more features? Can i then also make money commercially by directly using google calender in my app? And will it be very slow considering i am integrating someone elses product?
                  I think i may aswell just write in Java then btw tbh, then i can make the notetaking features and more database requiring features with the java, with i now get the impression that in fact it is a complex and ambitious project i am taking on.

                  1. 1

                    Can i like legally integrate google calender into my app, and then maybe make my own notetaking features and then some even more features? Can i then also make money commercially by directly using google calender in my app? And will it be very slow considering i am integrating someone elses product?

                    Yes, you can integrate with other apps legally. You can build add-ons or another app on top of them and sell your service (e.g G Suite Marketplace)

        2. 1

          This comment was deleted 2 months ago.

  7. 1

    Hi Elliott, you kicked off a very interesting discussion and you got lots of appropriate advice on your initial question, to front-end of not to front-end by yourself. I know one thing or two about back-end as well as front-end. so I wondered if maybe you might show me some of your back-end say on github, I clone that to my local machine and based on that I might guide you what your next front-end steps might be? It's just a thought, however, I'd be interested in another question, namely which advice given here so far did resonate probably the most with you? Regards, M.

  8. 1

    Either option#1 or option#2.

    If you have both the time and the motivation, learn frontend.

    Partner with a skilled frontend dev if you either lack any of the above or you have the urgency to ship your idea

  9. 1

    If you want to learn UI dev these things will save you time.

    Angular: need alot of time to learn, too many concepts to master. Lesser custom components.
    ReactJS: Quick to start and lots of components and framework plugins. I suggest don't go with Redux shit, prefer Mobx if at all you need a state-management, generally 'Context' is good for most cases.
    Vue: You surely won't find as many components as you get from ReactJS and documentation is little poor compared to ReactJS.

    Select something like Bootstrap, Bulma or fomantic-ui.com for base components or theme set.

  10. 1

    Mobile dev turned backend dev here. Launched https://www.indiehackers.com/product/listenbox and got paying customers without knowing any JS & CSS (learning along the way to be precise).

    Tiny bit of JS the site has is just copy & paste. Layout & styling is https://semantic-ui.com/

    1. 1

      I just had a look at your website - it's impressive that this was done with no-code. I'll have a look into semantic ui. It looks like a good prototyping tool. Thanks!

      1. 1

        Semantic UI is dead go for fomantic-ui.com

  11. 1

    I have the total opposite situation. Go ahead and learn front end, you'll get the hang of it super fast.

    The good thing about doing front end is that there's a ton of serverless services out there so getting started could be fast.

    1. 1

      Thanks - I have rudimentary knowledge of html, css & js - so I was thinking of doing the free React course on Codeacademy. Do you think this is a reasonable step?

      1. 1

        Yep! I started with Udemy! I took the courses from Max at Academind. https://academind.com/ But there are also great courses in https://frontendmasters.com/.

        Also, two great guys on the web are:
        Scott Tolinski and his website Level Up Tutorials: https://www.scotttolinski.com/projects
        And Wes Bos: https://wesbos.com/courses/

        They are all (Max, Scott and Wes) incredibly gifted for teaching.

        1. 1

          Thanks for this, they all look like great resources.

          I had a question though.

          Apologies if it comes across as rude, I don't mean it to be - I'm just curious.

          I've made a few half-hearted attempts to learn front end, but I always become frustrated/bored because it seems that a lot of it is configuring how the screen looks/the styles of it/images used etc. rather than writing interesting logic.

          Did you feel this phase as well when you were learning or do you just get over it once you aren't a complete beginner?

          1. 1

            You are totally right, it's mostly that, and to be honest the feeling kinda never left. But I learned to see it from this perspective:

            • Users interact through your front end and obtain value in the majority of cases through the back end. For example, without data persistency there's just no way to make something usable (in the majority of use cases). With out APIs there might not be external functionality/data to provide value.

            • But if we dig deeper into the meaning of "usable", there's a factor that is undeniable: Ugly things, although they might be useful, are way more often than not, surpassed by the looks of other apps, by the usability of other apps, by the quick responsiveness, by the simplicity of others.

            So I decided long ago to not care about how a web looks but how usable it is. If it is beautiful but it doesn't do what it's supposed to do, what was promised, it sucks. But if it's only functional and it doesn't react quickly to my inputs, feels kinda sluggish, there are too many steps to take to get the simplest of results, it sucks too!

            So there's a sweet spot between functional, usable and beautiful that makes some things just feel like magic, and that's where the front end and back end should meet. That's how I see it.

  12. 1

    Same background here. Currently working full time as a Back-end Java Engineer.

    I don't know exactly your background, but I'm quite familiar with Spring Framework and many of its extensions (Spring Boot, Spring MVC, Spring Security and so on...). So to me, the quickest way to get going with Front-end tech was to learn Thymeleaf (Spring has a great support/integration with Thymeleaf) and then HTML, CSS and JS. For a simple MVP you will not need much JS at all. You can do all your validations and logic server-side. The UX isn't great, I know, but for a MVP, I don't think this is a dealbreaker.

    Later on you can add some JS during your learning process and maybe add a JS Framework if you feel the need.

    1. 1

      I like using Spring Boot myself and have knowledge of Thymeleaf - but I always thought the problem is that the UI didn't look at all modern. Do you have a similar problem?

      1. 1

        Thymeleaf is just a template engine, it's not responsible for the looks of your app at all. It basically just brings the dynamic data from your Controller to the HTML.

        To make your app look nice, you need a good knowledge of HTML/CSS/JS but then you can just use a template and customize it to your liking. However, I do believe that HTML/CSS and basic JS are an important knowledge to have.

        But don't think that the Java or JS framework you get to use will be responsible for the looks of your app. This is exclusively HTML/CSS/JS's responsability.

  13. 1

    You should probably learn some JavaScript and CSS but you don't need to become an expert. You don't need to go all in on using Webpack, React or,—god help you—Redux right now.

    You can just keep it simple, learn a bit here and there as you need it, include your JS right in your HTML with <script> tags and do things the "naive" way.

    You'll hear people who are working full-time as front-end developers who will say that's "wrong", and indeed it would be if you're working with a full team of front-end devs on a more mature project!

    But that doesn't matter for you.

    I've personally seen multiple semi-technical friends build successful businesses with that kind of front-end and a tangled pile of PHP files on the back-end with no organizing framework whatsoever.

    My main advice would be to listen to the IH podcast with levelsio of Nomad List.

  14. 1

    Another alternative is to learn Bubble.io or WebFlow and no-code your front end. You'll just need to write the APIs in Java and hook into them from your no-code front end.

  15. 1

    Basically its Html (mostly div's these days), CSS and some of JS. You should grasp it in few sessions.

    Vue and React are also help.

    I would advise learning it and not shelving out $60k or half of your shares to someone with whom you might disagree.

  16. 1

    Does your product/idea require something you can't build without a frontend framework? - if not, then go without.

  17. 1

    Depends on three factors:

    1. You network
    2. Your urgency to get the product out
    3. Your financial situation

    If you want to get the product out as soon as possible:

    • look for someone in your presonal network who might help you out with it.
    • If you find no one, and have good enough savings, outsource the frontend development. You can find a freelancer or use an agency(if more reliability required).

    If there is no urgency, my advice would be to learn the front-end programming yourself.

  18. 1

    If I were you, I would start learning and looking for a partner at the same time. Learning the basic concepts, tools, and techniques is useful to be able to communicate with your partner effectively. An experienced partner will give you the speed you need. Also, finding a partner is a good first test of your product idea as well.

  19. 1

    I was in a similar boat a few years ago (although I had experience in games and mobile development, my web front-end skills were non-existent). I decided to bite the bullet and learn React. I've found the experience quite beneficial for a few reasons:

    • Don't need to rely on anyone to test ideas and develop products quickly.
    • The knowledge was applicable to not just web development but also mobile via React Native.
    • There are certain paradigms that are specific to front-end development that I didn't have to think about on the backend side that are actually pretty fun to solve. State management is a big one.
    1. 1

      Thanks for your answer - I know this is a general question - but how long did you have to learn react for until you could get a basic (but nice looking) MVP up?

      1. 1

        It took a few weeks of development to feel comfortable building a product from scratch that was also “built right”. That may vary depending on person and hours spent per day.