8.
Building in Public
Written by Jenn Bailey
Now that you’ve started building a professional network, it’s time to show the world what you’ve got! In this chapter, you’ll learn about building in public: using your coding skills in ways that other people can see and use. This will give the world a sample of what you have to offer while helping you build your portfolio, your network and your confidence.
If you don’t feel ready to take this step, don’t worry! Showing off your skills can be intimidating, especially when you’re just starting out. Skip ahead to the section on “Conquering Impostor Syndrome” for advice on getting past that feeling, then come back here and read on.
What You’ll Learn
- How to find and participate in hackathons.
- How to contribute to open-source projects.
- Why to build a personal app, including some ideas to get you started.
- How to let potential employers know about your building-in-public experience.
- Tips for overcoming hesitation or imposter syndrome.
You’ll start with a fun way to show off your skills and build your professional network at the same time!
Entering Hackathons and Coding Competitions
Hackathons and coding competitions offer excellent opportunities for new developers to make a name for themselves while meeting other devs in their area.
A hackathon is an event where developers are challenged to use technology to create a solution to a specific problem. Hackathons often involve working in a group to propose a solution to a real-world problem. They range from small and collaborative problem-solving sessions to larger competitions offering big prizes like cash, jobs and grants.
Hackathons are an awesome way to build in public and show off what you can do. They let you practice your skills, learn how to work on a team with other coders and meet people who might be a good fit for your professional network.
Plus, they’re a great addition to your resume, and they give you something to discuss during an interview that can set you apart from other job seekers.
A coding competition is similar to a hackathon, and occasionally the two terms can overlap. However, a coding competition is generally more of a syntactical and algorithmic challenge where participants compete individually or in teams to solve difficult data structure and algorithm puzzles in a short amount of time.
Competitive coding is an art unto itself, and some programmers dedicate a lot of time and energy into climbing the leaderboards. However, you don’t have to do that to benefit from competitive coding. Practice problems can help you build your resume, learn or review concepts and increase your talent for coding under pressure. This can help you in a technical interview, where you’re given a code problem to work out.
Code competitions are another great way to build your professional network. You can join communities dedicated to them and also make connections among the people you meet at the competition.
Now, you’ll learn some tips about how to locate and participate in hackathons successfully.
Participating in Hackathons
Many individuals are intimidated by the thought of participating in a hackathon. However, even people with no professional code experience can participate. Regardless of your background and level of expertise, you have something you can bring to a team.
Remember, hackathons aren’t only about competition — they’re about networking, learning new skills and bringing awareness to a solvable problem in the community.
Hackathons can take place online or in person. They usually last for a specific period of time, which might be a few hours or a couple of days. Developers join up in small groups to come up with creative solutions to problems that fit a specific theme. The solutions are judged by a panel on criteria that usually include the creativity, feasibility and impact of the proposed solution.
Some general tips for getting the most out of hackathons include:
-
Do your research: Before the hackathon starts, make sure you’re familiar with the rules, guidelines and resources you’ll receive. If the theme is announced ahead of time, look into it before you start.
-
Work in a team: Many hackathons will suggest or require working in a team. It helps to go early and mingle to select some individuals you’d like to work with. Your team is most likely to thrive if you have a diverse skill set. Look for team members who can contribute skills that differ from your own and who seem enthusiastic to participate until the end.
-
Prioritize and delegate: Time is limited in a hackathon, so be sure to stay tightly focused on the challenge at hand. Come up with a solution together, then delegate specific tasks to each team member so that you can make as much progress as possible.
-
Pitch your idea: In nearly every hackathon, you’ll wrap up and pitch your idea. It’s common that you don’t fully implement your code idea, so the presentation is often the most important part. Be sure to build a wireframe of your app idea or create a thorough slide presentation to get your ideas across. Presenting gives you the opportunity to polish soft skills that you’ll need in an interview. If you’re uncomfortable, however, find a team member that likes to present or present together as a team, which can be less intimidating. Be prepared for the judges to ask you questions during your presentation.
Don’t stop at just attending events, either. Oftentimes, event organizers need a helping hand. Reach out to the organizers prior to the event to see if you can volunteer. This will give you a front seat to the event along with the opportunity to meet more participants.
After you have experience attending and volunteering at hackathons, it’s a great experience to host your own. Hosting gives you the chance to pick the themes and prizes and helps you build a community.
If you’re hosting your own event, you don’t need to make it too complicated. Create an event at a local coffee shop and offer small prizes — or none at all. Even a very simple hackathon will be a fun way to meet developers in your area!
Now that you know how a hackathon works, it’s time to find one. You’ll get some tips on that next.
Locating Hackathons
Some great websites to locate hackathons include:
-
Google Developer Group: Offers many chapters worldwide. You can find a number of hackathons hosted by community volunteers on a variety of topics.
-
Hacktoberfest: Hacktoberfest is an annual event that encourages participants to contribute to open-source projects in the month of October.
-
Hackathon for Social Good: Women Who Code’s Hackathon for Social Good gives participants the opportunity to contribute to causes that matter to them the most. You can work in a team or alone and there are many speakers and great support to engage you throughout the process.
-
Major League Hacking: Hosts lots of hackathons for students. After graduation, you can attend for 12 more months. They also have non-student hackathons.
-
Devpost: Provides a platform where hackathons host projects and create teams. Their excellent search system lets you filter by in-person or online events, topic, location, prize amount or date. This site is particularly helpful if you live outside the United States because it has a broader international community.
-
Devfolio: Hosts some of India’s largest community hackathons, as well as listing hackathons worldwide. You can search by city, time frame, application status, rating and type.
-
HackerEarth: Hosts hackathons and challenges. It’s well organized, and you can filter by hackathons, competitive, university and hiring challenges. You can use this site to practice problems — and it even comes with a leaderboard so you can see how your efforts stack up.
-
Eventbrite: Eventbrite helps you find events both online and locally, which makes it a great place to find local and online hackathons. It’s easy to use and you can search for events by location and keywords.
-
Meetup: Lists clubs and other events, including hackathons. It’s a useful platform to find hackathons near you.
Next, you’ll look at how to make coding competitions work for you.
Coding Competitions
Similar to hackathons, coding competitions give you the chance to build in public and make a name for yourself. A hackathon centers around proposing an idea and providing the proof of concept. A coding competition differs in that many teams are given specific code challenges that showcase logic and syntax skills.
Competing in coding competitions is an excellent way to build your interviewing skills. Oftentimes, code interviews will present algorithmic problems that the interviewee must solve in a short time frame. By practicing logic and syntax problems that center around data structures and algorithms, you’ll be more prepared to tackle these challenges should they arise in the code interview.
Like any other sport, the more you practice, the more competitive you become. Coding competitions are the most fun for individuals who like algorithmic problems.
Succeeding at Coding Competitions
It takes a lot of practice to become a competitive coder. Don’t be discouraged if you aren’t winning right off the bat. Not only will you need a good understanding of your chosen language, but another good area of focus is data structures and algorithms, sometimes shortened as DSA. Studying DSA serves a dual purpose: This knowledge will help you ace coding interviews while also teaching you to be a fast and efficient problem solver.
Note: To learn more about data structures and algorithms, check out the following books from the Kodeco library:
• Data Structures and Algorithms in Dart
Here are some more tips on how to boost your performance at coding competitions:
-
Lots of practice: Start by trying many problems on your own until you know the ins and outs of a popular language used to solve them, like Java, C++ or Python.
-
Research other competitions: Check out how people have won previous coding competitions. Work to deeply understand their code and why they made the choices they did.
-
Break down the problem: Make sure you fully understand the challenge, then break it down into bite-sized tasks that you’re comfortable tackling.
-
Optimize your code: Efficiency counts in coding competitions, so make sure you take the time to not only come up with a solution, but also to optimize and test it.
-
Focus on learning over winning: Especially at the beginning, it’s more important to improve your skills than to win the competition. So put in a serious effort, but don’t feel pressured or stressed. The more competitions you enter, the better your skills will become.
Finding Coding Competitions
So now that you know how to approach coding competitions, the next question you probably have is where to find them. Luckily, a quick Google search will show you a wealth of coding competitions. Some of my favorites come from Google itself. Here are some well-known competitions to enter:
- Google Code Competitions: Code Jam allows you to work through rounds of puzzles — plus it offers a large cash prize. In Hash Code, you pick your team and solve an engineering problem together. Kick Start is a coding competition meant for students and those who are new to coding competitions.
- Topcoder: Offers weekly single-round matches, two annual tournaments and a programming and design contest.
- The ICFP Programming Contest: Held every year, a few months before the International Conference on Functional Programming. There’s no entry fee or preregistration, and you can work from anywhere and in any size team.
- Other well-known sites include: HackerRank, CodeChef, LeetCode, Codeforces and Project Euler. Another benefit of visiting these sites is that each includes practice problems.
Now that you’ve explored building publicly through hackathons and coding competitions, you’ll learn about coding for the community.
Coding for the Community
The competitive spirit is great, but there are other ways to build your profile and code publicly. When you code for your community, you volunteer your skills to help someone you know or something you believe in — while simultaneously showcasing your work.
The best way to find opportunities is to think about where you can help out in your community. Small businesses, faith communities, local schools, sports teams and clubs of all kinds might benefit from your skills.
You can also check with online charities or causes. A variety of individuals and businesses need simple apps, basic websites or help updating existing systems. Websites such as donate:code and Social Coder are good places to start.
Often, I come across situations where I think of easy-to-build apps that someone I know could use: a simple calculator, a flashcard game or an app with a map and company information, for example. As an aspiring dev, you could use these observations to build your portfolio.
Not sure where to start? Talking to people who own businesses or run community organizations is the best way to uncover their needs. If you’re working in a job outside of tech, you might even identify a need your current employer has. I knew an individual who created a custom point-of-sale system for their company while they were in school. This led to a promotion and shifted their role from something non-technical to in-house developer and tech support.
When coding for the community, be sure to keep the time commitment and project scope realistic. Only select projects that are small and manageable. Make sure they have a finite end date, or that you can delegate them to someone else later, when you’ve found a tech job. You can also assess whether you can ask for payment for your contribution.
Supporting the community is a wonderful way to build in public and add to your portfolio and reputation. Plus, it always feels good to help!
Another way to contribute to the community is by working on open-source projects.
Contributing to Open-Source Projects
Open-source projects contain source code that’s openly available in a repository — a repo for short — typically hosted on GitHub or sometimes GitLab. Open-source project licenses let you copy and modify this code, sometimes with a requirement to credit the original project.
Contributing to open source gives you the opportunity to:
- Create code that demonstrates your ability.
- Join a community.
- Learn new skills.
- Find mentors and connections for your network.
- Improve apps or libraries you personally use.
For job seekers, it’s another great way to show off your coding skills where future employers can see them.
There are many ways to contribute including, but not limited to, coding. This means that it’s easy to get started at a level you feel comfortable with.
One way to start is by correcting existing documentation. Once you feel comfortable with that, you can go a step further and add new documentation.
Once you’re ready to do a bit more, consider some other options:
- If you have a talent for design, create logos or improve layouts.
- Volunteer to help the community by planning events or helping with mailing lists or blogs.
- Keep an eye on the ticket queue and find duplicate issues or link to existing solutions.
- Help others by answering questions or helping them with their coding problems.
- And of course, contribute code.
A good first step when you join an open-source project is to introduce yourself. Join the discussion and chat channels, familiarize yourself with the current issues and acquaint yourself with the community leaders.
Most projects contain a license, a README that explains what the project does, a document about how to contribute, a code of conduct, and of course, the code base. Be sure to review and follow the code of conduct. Review the README and contributing guidelines thoroughly, then clone or download the project and look through it carefully. If you’re having trouble building the project, review all the documentation, then ask for help.
Once you’re familiar with the community, the code of conduct and the code base, look for an issue you’d like to tackle. Then, submit your contribution via a pull request according to the project’s guidelines.
Now that you’ve learned more about contributing to open source, it’s time to locate a project.
Finding Open-Source Projects
One way to find an open-source project is to think about the code libraries and products you use. Contributing to a project you value is motivating — not to mention, you’ll have more insight into how to improve the project if you’ve used it before.
Open-source projects have a /contribute page that shows issues you can work with on GitHub. For example, here is the /contribute page for React, which links to a detailed guide to contributing to this JavaScript UI library, originally developed by Meta.
You can also use tools like the following:
- Explore GitHub: Helps you find your next project, see what’s trending and connect with the GitHub community.
- Open Source Friday: Encourages users to spend a few hours on Fridays contributing to the open-source software they use. It’s well organized, making it easy to find projects and issues to contribute to. It also offers communities that welcome new contributors.
- First Timers Only: Links to a hands-on tutorial that walks you through contributing on GitHub for the very first time. It also has many links to help you find projects with issues that new contributors can help with.
- Up For Grabs: Lists projects actively seeking contributions.
- Good First Issues: Compiles issues labeled as a good first issue for first-time contributors.
- MediaWiki: A very cool open-source project that has help and instructions on how to participate in many capacities, including code!
Choosing an Open-Source Project
Once you’ve identified some projects you’d like to work on, here are some things to check:
- How recent is the project? When was the last commit?
- Are there a lot of contributors?
- How many issues are there, and when were they opened?
- Is there a discussion board, Discord or Slack channel? How active is it?
- Look over the project’s pull requests. Does the community look welcoming based on the comments from maintainers?
Using Flame as an example, here are some things to notice at the time of this writing:
- This project is active — the last commit happened just an hour ago.
- This project is popular — over 7,000 people starred it.
If you were thinking about contributing to this project, you’d also want to look at the open Issues (in this case, there are a lot — 84) and the Pull Requests. Many open pull requests may mean there aren’t enough maintainers to keep up with the contributors; it’s worth looking into.
You can use all of this information to decide whether a project is a good fit for your time. Open-Source Collaboration Using Git and GitHub is a hands-on tutorial to help you on your way.
Contributing to open source is rewarding; you’re helping the code community, building your network, showcasing your abilities and learning new skills, all at once. However, publishing your own app is another way to build in public that lets you strike out on your own.
Shipping Your Own App
A very clear way to show the world that you’re an app developer is to build and publish your own app. This helps you polish your skills while giving you a concrete piece for your portfolio.
When planning your app, aim to keep your idea appropriately scoped for a team of one. Start simple with something like a to-do list, calculator or tracker, but use current techniques and tools to demonstrate that your skills are up to date. Review the big announcements from your tech stack’s most recent conference, such as Apple’s WWDC or Google I/O, to stay current with new frameworks.
Another way to come up with app ideas is to draw on your personal passions, like building a character guide for your favorite video game or an app to support a favorite hobby.
Keep your codebase on GitHub or somewhere else where you can share it with the world. Include a detailed README file. In the README, note all the modern features you included, and add screenshots to demonstrate what you’ve done at a glance.
Note: An example of a beautiful README is Jeremy Freeman’s Pixel-Grid app.
Since you’re designing this app to act as a kind of advertisement for your skills, make sure you create a detailed GitHub profile that includes a good headshot. Include current contact information, like social media links, to make it easy for admirers to contact you.
Tip: There are guidelines for how to create a good headshot in Chapter 7, “Growing Your Professional Network”.
In the repo, show off your thinking by making frequent and well-labeled commits.
After you’ve built your app and pushed the code to GitHub, it’s time to publish it! Be sure to include good screenshots that demonstrate the most technical features.
When you’re done, you’ll have a link to share with potential employers. Check out Publish to the Google Play Store or Publishing to the App Store for more about bringing your app to market.
Now that you’ve courageously put your skills and talents out there where the world can see it, the last step is to share your accomplishments.
Sharing Your Accomplishments
Just as you’d market an app to make it sell better, you’ll need to market your skills if you want people to hear about them. So remember, whenever you accomplish something, be sure to share it with the community and document it in your portfolio.
For example, when you participate in hackathons or coding competitions, share that to your social media and tell your friends. If you’ve earned an accolade, add it to your resume.
Create a GitHub profile README to showcase your code. See some fun examples of these profiles here.
Anything you’ve built for the community, added to an open-source project or published yourself can be included on your LinkedIn portfolio and your resume. When you apply for specific positions, detail your relevant accomplishments in your cover letter.
A great way to keep a log of what you’ve been up to is to create a blog and add a post about each of your activities. You’ll be surprised how quickly they build up.
Are you ready to build in public? If you’re feeling overwhelmed or nervous, the next section will help ease your mind with some tips about imposter syndrome.
Conquering Imposter Syndrome
Imposter syndrome is when a person underestimates their own skills, leaving them afraid of being exposed as a fraud. In fast-paced fields like tech, imposter syndrome is especially common, so don’t worry if you feel this way. You’re certainly not alone.
Feelings of inadequacy and self-doubt are often not objectively true. If you’ve made it this far in your career and you’re representing yourself fairly to potential employers, you’re not an imposter.
The bad news is that imposter syndrome happens to many, particularly when they’re on the cusp of leveling up their skills and career. I personally have had many struggles with imposter syndrome and will probably have many more.
The good news is that these feelings are manageable. They might not go away entirely, but you can push back against them; you don’t have to let them get in your way.
Identifying Imposter Syndrome
One of the most difficult things about imposter syndrome is that it’s sneaky. It’s likely to come up when learning something new, starting a new job or exposing your work to a public forum. If you’re feeling hesitant or overwhelmed at the prospect, start questioning why.
Feelings of not belonging, not being quite up for the task, or that what you’ve achieved isn’t enough are symptoms of imposter syndrome. You might be experiencing imposter syndrome if you credit your success with outside factors like luck, have difficulty accepting compliments, or have trouble enjoying what you’ve achieved. Really question those thoughts and feelings, because they’re very likely not true.
Managing Imposter Syndrome
If you are having these feelings, here are some tips to help you:
1. Realize What You’re Feeling Is Common
A lot of developers struggle to feel smart or qualified enough because tech is a high-pressure, ever-changing environment. The job descriptions and demands of each new project are often unpredictable. The pressure of always needing to learn the latest changes in your platform can make you feel like you’re always behind the curve.
Remember, however, that all developers face these challenges. Embrace the learning process, remember you have your own strengths and focus on progress, not perfection.
2. Look for Support
Many people experience imposter syndrome, but they don’t always talk about it. Find individuals you trust in your network and ask for support. With a solid professional network, you’re sure to find people who can help you overcome your challenges and empathize because they’ve been there themselves.
3. Inventory Your Accomplishments
It’s good to acknowledge shortcomings and to keep an objective view, but be sure to acknowledge accomplishments too. Recall times you’ve been consistent, dependable, trustworthy and helpful. Make a list of your strongest attributes.
The idea isn’t to inflate your ego! Rather, listing your accomplishments helps to combat the negative filter that so commonly accompanies imposter syndrome. It’s easy to focus on one mistake, even when you’ve had a dozen successes. Celebrate your accomplishments and look back at them often.
4. Ask for Feedback
Many times, we write stories in our heads about our skills or perceived failures. Don’t assume these stories are true; instead, ask mentors, managers or peers for objective feedback. You might be surprised that they have a more positive view of your aptitude and performance. I’m often surprised that feedback from others is more positive than I anticipated.
5. Let Go of Expectations
Unrealistic expectations feed imposter syndrome. Sometimes these come from outside, but often they’re from inside. Know you’re exactly where you need to be. Remind yourself that outcomes are often unpredictable, so don’t get too attached to the end result you visualized. One of my favorite sayings in college was “Hope for the best, prepare for the worst and take what comes”.
6. Let Go of Perfectionism
Learning often happens through mistakes, and code projects are rarely straightforward from beginning to end. Unforeseen difficulties arise, and you must adapt. Focus on moving forward. Remember that it’s easy to get caught up in feeling like you need to be an expert in everything. Instead, focus on making progress and building new skills.
7. Cultivate a Spirit of Play
Placing high stakes on tasks makes them scarier to accomplish. Instead, take some of the pressure off by finding ways to make your work more fun. For example, you could think of learning as a quest or use your sense of humor to put your goals into perspective.
8. Do It Anyway
Fear is just an emotion. Think of a picture of a tiger — imposter syndrome can’t tear off the page and attack you, although your body might feel like it’s under that kind of threat. Take a few deep breaths, do what you fear, then walk away and find a distraction.
You might be surprised to find that your work is better received than you think! If not, you’ll collect valuable feedback for next time.
When dealing with imposter syndrome, the best thing you can do is educate yourself. Be prepared for when it’s likely to happen. You don’t have to stop the emotions, just recognize them and proceed — the feelings will pass.
Note: For some good imposter syndrome resources, check out the websites of the International Society for Imposter Syndrome Studies or the American Psychological Association (APA).
Key Takeaways
- Building in public is a great way to learn while expanding your portfolio and network.
- Showcasing your skills is key to getting great opportunities.
- You can demonstrate your skills by participating in hackathons, working on open-source projects, building your own apps and more.
- If you’re nervous about showing off your skills, don’t let imposter syndrome stop you from reaching for your aspirations.
Resources
- Take up Coding Challenges to build your skills rounds up major international coding competitions. HackerEarth, mentioned earlier in “Locating Hackathons”, also lists upcoming coding competitions for a wide variety of languages and tech stacks.
- What it means to contribute from the Open Source Guides curated by GitHub. This guide, which itself is open source, provides detailed guidelines on all aspects of creating, maintaining and contributing to open-source projects.
- Art of README. This guide to writing a great README links to examples and references. It also includes a checklist to help you cover all the bases when creating your own repository or improving the README in an existing project, which can be a great way to make an initial contribution!
Action Plan
- Find and participate in a hackathon.
- Try out three code problems from one of the code competition sites.
- Brainstorm a simple app that you could write for an individual, club, small business or organization in your community. Draw a rough mock-up.
- Find an open-source project you’d like to contribute to and join the community.
- Look for one open-source issue you can resolve.
- Brainstorm a simple app that you can build and publish yourself.
- Add a project you’ve done in school or as a hobby to GitHub and include a great README.
- Write down at least three accomplishments in the tech field that you’re proud of.
Reflect on what you’ve learned: Find this chapter’s worksheet (PDF) in this book’s GitHub materials repo.