Building a developer community with Sandeep Panda
We also talk about:
- building a developer community from scratch,
- getting investors to fund your projects,
- the ups and downs of entrepreneurship,
- transitioning to remote work,
- and software engineering practices in a startup,
- code reviews, testing, deployment, and keeping technical debt at bay.
Hashnode the developer community
Syed Fazle Rahman Sandeep’s co-founder
Hashnode’s tech stack
Remote book from Basecamp
Accel the venture capital (VC) firm
AI Superpowers Book on how China uses AI
Sandeep Panda, is the CEO and Founder of Hashnode, a friendly and inclusive developer community.
Other episodes you'll enjoy
Read the whole episode "Building a developer community with Sandeep Panda" (Transcript)
Michaela: [00:00:00] Hello, and welcome to the Software Engineering Unlocked podcast. I'm your host, Dr. McKayla and I'm opening the doors to the top companies and thought leaders around the world. Today, I speak with Sandeep Panda about starting a developer community from scratch, his entrepreneurial journey, remote work, and software development practices at his startup.
I'm super thrilled for this awesome third episode. I hope you enjoy it. If you like it, support my work by spreading the word. Tell your friends about the podcast share it on Twitter, LinkedIn, and Facebook. I promise I will do a happy dance each time you do it.
Today, I have the pleasure to talk to Sandeep Panda, the founder and CEO of Hashnode, a friendly and inclusive developer community/ Hashnode is a startup that's fully remote just in February to shift it from a Q and A side to provide plugin functionality for developers. So there's plenty to talk about here, but yeah, let's start at the beginning. Sandeep, you're running a developer community. Are you a developer yourself?
Sandeep: [00:00:59] Thanks for having me McKayla. I'm honored to be here. So, uh, yeah, to answer your question, I am a developer and I love coding. And beside that, I'm the founder of the company called Hashnode and we are a team of six running, a friendly and inclusive community for engineers.
Michaela: [00:01:16] So how did you become a developer? What was your way? Are you a self-taught developer or did you go to university?
Sandeep: [00:01:22] So I studied computer science for four years, uh, from 2009 to 2013. And that kind of, uh, give me the boost to become an engineer and learn coding. While I started a lot of things in the college I am mostly a self taught engineer when it comes to using latest technologies and the tools that we use right now. I taught myself all those tools and technologies.
Michaela: [00:01:45] So when you were in college, did you already have that urge to start your own company? Or did that just come later?
Sandeep: [00:01:51] When I was in college, I met my cofounder Fazle, and both of us, you know, we, we divided our tasks, tasks. So I told him that he has to do the UX side of things, you know, design things, learn CSS. And I restricted myself to backend development. So at that point we thought that we'll create something cool. So in fact, we did, we, uh, built a bunch of side projects. We ended up running them through the college, but we never had the idea of creating a formal company and raising money and, you know, build a full fledged business. And that happened well only after we left the college and we started doing our respective day jobs. At that point, we realized that we were not meant for day jobs. We should start something of our own and utilize the skill sets that we have.
Michaela: [00:02:40] And what was your first dayjob after college?
Sandeep: [00:02:43] So we studied in the Computer Science in a small town in India, and after college we moved to Mumbai. And there we started, Fazle, my cofounder He worked in a company called Cab Gemini, and, and I started as a trainee software engineer in a company called Majes domestic. We did that for a year, and then we got the idea of creating a friendlier community.
Michaela: [00:03:11] And when you started Hashnode, did you do that full time immediately, almost as a side project again? So in addition to your nine to five job?
Sandeep: [00:03:20] In 2013, I joined the company then, around mid 2014 we started working on Hashnode part time. We wrote some initial code, and we got it going at, you know, 50 to 60% rate. We thought that we are going to take this seriously, at that point, we left the job and left the job and we had some savings and we thought that we'll do something, we'll utilize those savings and we'll build this on our own.
Michaela: [00:03:45] So you had this idea of building Hashnode, this friendly community and QA side. Well, I actually read on your blog that you asked something on Stack Overflow, and then you have been shut down. And so this is somehow how this whole idea was born.
Sandeep: [00:03:59] Right.
Michaela: [00:04:00] But then, um, then you just kept going. So how did you decide which technologies to use and, um, how this community should look like? And yeah, the whole process actually start.
Sandeep: [00:04:12] At that point, you know, we thought that Stack Overflow was being restrictive and people weren't able to ask questions that were subjective in nature and open ended questions. So that led us to create, we thought that we will create a, you know, a more open community that encourages all kinds of questions, not just bugs and errors.
You could, you could ask all, all those subjective questions and open ended questions basically. So when we started, the choice of tech stack was very simple. I was very comfortable using Node JS. So we started with Node basically, and we, and we use a Mongo DB as the database because it was too easy to integrate both with Node and Mongo. And we also used jQuery normal JavaScript per templating we use EDS with all these tools. They're just very simple, simple setup. I can say, Node, Mongo and jQuery, it was that Hashnode was made up of at that time.
Michaela: [00:05:08] And did you choose that tech stack because you wanted to make progress really fast and because you knew the technologies very well from your previous job, then decide projects you built while at university?
Sandeep: [00:05:20] So when we, when we started coding, when, when we decided that we'll create something like this, we wanted to move really fast and we wanted to build a prototype and test and pilot the idea. For that I thought that it smart to go with technologies I was familiar with. So, so that we could build something really, really fast and get it piloted by the customers. So that, that's why we chose Node JS. And I just said, I had, uh, experienced with Node and Mongo working at my day job and side projects that I built So it was the natural choice.
Michaela: [00:05:54] Okay. Very cool. So you've wrote that. And then what was the next step? So how much functionality did you actually build into the first product and how did you validate it then?
Sandeep: [00:06:06] The initial product name was not Hashnode. It was something called DevMag. So we thought that it's a magazine for devs. So we'll call it the DevMag.io and we launched the super early review. So we launched the product and, uh, at that point we were staying in Mumbai. So. Well, what we thought was, uh, we'll move to a different city called Bangalore in India.
So the city, the city was called the Silicon Valley of India, you know, so you could easily access VCs, investors, and customers and talk to a lot of techies in general. So we, we lost the early preview of hasnode and we immediately started to Bangalore and here we came in touch with Axle. So, so we had showed them this initial prototype, and we told them that we have acquired, we launched the product and got more than 200 boards and we got, yeah, lots of comments, feedback, and early adopters.
So at that point we made actual partners and we sold them the product. And we told them that we would like to raise money, and buildtake this full time. So, yeah, that's, that's how it happened.
Michaela: [00:07:18] And this sounds like really exciting time. So you're building this product and you're launching it and then you're also moving across the country and then you want to get this really important from excellent to invest. Can you tell me a little bit more about Axle?
Sandeep: [00:07:35] So Axle is the investor. So they have invested in, in companies like Facebook, but BookMyShow, lots of companies. So we went to them to raise capital, to raise is seed money to build this platform.
Michaela: [00:07:46] Was Axle the first firm that you asked for money and pitched your idea, or did you try somewhere else as well?
Sandeep: [00:07:53] Yes. So even before we, we changed the CD we kind of thought that we will raise money from Axle because we will get pan up the companies funded back. So. So we thought that the, um, our best bet would be to approach Axle and see if they're interested. And luckily we, uh, when we moved to this new city, uh, there, we met somebody who was, uh, funded by Axle. And we worked with him for a brief period of two months and we helped him build his company and then he introduced us to Axle. And that's how we, that's how we got in touch with Axle.
Michaela: [00:08:30] Okay. That's really smart. So you really researched sort of your investor firm and, you know, the background of them and know that they're interested in companies like the one that you're actually building. And then you got your way in, through another company that has access to them. Very cool. But, uh, was it sort of a smooth ride from there? Or have there been some ups and downs to actually get the money from the firm?
Sandeep: [00:08:57] When you're trying to raise money, it, uh, it takes time. It takes time to convince people that it's going to be big. So it took us, uh, a month or so, about a month to convince them, to envision us. So, so at that time we used to, uh, wonder if they're really going to invest or not, but it happened eventually. And when it happened at that time, they gave us a pre office space and we could, and we went to that office space and we started recruiting and slowly started using the money.
Michaela: [00:09:28] So you make it pitch, then you go there, you tell them about your community, about your dreams, about your vision. And then a month goes by and, um, they just think, or, or you ping them and well, you say you're really cool. You should invest.
Sandeep: [00:09:44] Okay. Yeah. So I'll just walk you through it. So when you go and meet a partner at a VC firm, you will know from the first meeting that they're going to invest or not, they're not interested to the first meeting. You will probably not hear from them and most business they'll probably tell you that this is not something they're looking for. But when there's sort of interest, they ask us questions, you know, difficult questions, like why do we think people will use our product and why we think we are going to be a big company and numbers, stats, all those they asked in the first meeting and they give us a week or two to think about the questions and come for the next meeting.
Right? So when this, when they say come for the next meeting, it means they're interested. They just want to make sure that we are able to think we're able to think and we're able to convince them why we are the company that they should invest in. Yeah. So the first meeting led to the second and second led to third. So in, in that, so those three, two to four meetings took about a month, but it happened eventually.
Michaela: [00:10:50] So, yeah, three to four meetings. And it's you and your cofounder that tried to convince them that your product is going well and well, before that you launch it actually on product hand and got early adopters, do you have an idea how many people were on DevMag.io at that point?
Sandeep: [00:11:07] So at that point, we got about 2,000 sign ups in that week alone, 2,000 people signed up on the platform and subsequently people started creating accounts, started asking questions and slowly, instead of the number was good growing at the rate of 20% per week. That's when we knew that we should take it more seriously.
Michaela: [00:11:27] Okay. Very cool. And then you said they are creating accounts and they're starting these captions on their platform. Did you facilitate a lot there as well? So, um, did you go and create questions and answers or how did you kickstart the whole thing? Because I imagine, especially at the beginning, it's sort of empty and what people need, something that they can find there. Do you need some community? So how, how did you start that?
Sandeep: [00:11:54] We initially started the community. I myself asked a lot of questions myself and I answered them. I still answer them. And I didn't really actually have some questions that I didn't know about. And I invited all those people who signed up to answer those questions.
And whenever somebody asked a question, I always answered that, answer the question, even if I didn't know about it, I researched that question and I tried to find find a solution and I, I will try to be helpful and provide them an answer. But when we hired our teammates, all of us had to, you know, be super active on the community and curious if you want to ask questions and whenever there was a question, all of us strive to be helpful and assess the question and provide an answer. That person gets satisfied. That person, it comes back again. Whenever he has a question. So that look that took a lot of efforts and you can say, uh, our days then was less coding, more community management.
Michaela: [00:12:50] Yeah. Yeah. That's what I imagined. Yeah. So you had quite a stable system at that point. So your focus was really on building the community and not the system anymore right?
Sandeep: [00:13:00] Yeah. So at that point, we, we thought that if we just give a building new features or keep developing. No one is going to come and use the platform. They won't care if you're building, if you're doing this using Node JS or JavaScript, they just need people's would get value out of the community. And that's how they will come back to you again and again and again. So we made it our, we made it our motto to do community management actively and grow the community and put more focus on the community rather than the, uh, other than thinking about tech or building new features.
Michaela: [00:13:34] Yeah, that makes sense. So I imagine that you have this company and it's you and your cofounder, and then you want to hire your first employee. Was that a community manager or who was your first employee?
Sandeep: [00:13:46] Yeah. So for the first few years we didn't have even had a community manager or marketer. We thought that we are developers and we could be the best company to manage it, the best marketers and ambassadors for our community. So all the developers that we hired, we did the job of community manager. Part time. We wrote code the division of the time, but we did community management, 70% of the time, all the developers.
Michaela: [00:14:09] And how did you find them? I mean, for startup, it's sometimes hard to find good talent. So how did you find your first employees?
Sandeep: [00:14:17] Initially we utilized AngelList. So AngelList was quite good at that time, and it was free. So we posted some jobs and we, we also reached out to a few candidates that we thought are going to be a good fit. So we talked to them and increment from AngelList. We had a lot of success in Sydney and we had really good engineers from there.
Michaela: [00:14:37] It's several years. Now, since you started just still have the same employees, or did you have some churn at your company?
Sandeep: [00:14:44] Uh, we took a detour in 2017. We thought that we'll create, um, we've transformed Hashnode into a blockchain based community. So we did, we spent an entire year building blockchain based reward system, but that didn't materialize and at that point we had to change the structure and the team a bit. So at that point, uh, we had to restrict the company.
Michaela: [00:15:10] Does this mean that some people left the company and you had to hire new ones?
Sandeep: [00:15:14] Yeah. Some people left and we, we thought that we'll create, we'll hire people we'll work on the blockchain. That's when we, in fact hired our first community manager. And we thought that will take a lot of effort to manage a blockchain specific community. So we started to set the team in that direction, but in the end that didn't happen. But the good part is that we hired a bunch of good people and we didn't do blockchain, but they're still with us.
Michaela: [00:15:42] So when you say it's a blockchain community, is that a QA side that's all about understanding the blockchain or what is the blockchain community? How can I imagine that?
Sandeep: [00:15:53] So at that point we were thinking that people were sharing their knowledge for free. What we decided to do was we wanted to reward people for writing answers and asking good questions, and we couldn't do that using real, a real currency.
So instead we thought that we'll put all the QA, all the questions on a public blockchain. And we'll use our own custom tokens. Like, you know, people were crazy about Bitcoin, Ethereum at that point. So we heard that we'll get there own currency. We'll get our own token on digital token and use that to reward people for asking good questions and writing answers. So that was, that was the goal.
Michaela: [00:16:27] That makes sense. And why did that fall apart? I mean, it's a good idea. So how did it fall?
Sandeep: [00:16:34] It was a good idea. At that point we even built an entire blockchain an entire custom of blockchain and we were about to open source that thing. But the problem was that, uh, being a blockchain company or we would have tried to raise money. And people were doing ICOs, but at that point it was initial coin offering just like IPO. It was initial offering, but it was coins. So what happened is that when we were ready, almost ready, the market just crashed and no one was interested in digital tokens because lots of rules and regulations, government rules. For example, in India, you couldn't get your favorite coins are ETX or you couldn't create any custom tokens. So that led to market crashing. And we didn't think that it was the right time to raise money and build our blockchain project. So that's when we that's, when we thought that we'll stop this, For now, and we'll look into any other ways of building this community and taking this forward. And that's when we thought about the blog and we put the blockchain thing on hold and we kind of went ahead with DevLog because we believe more that angle.
Michaela: [00:17:46] So actually another sort of people from your company. Right? So from these Q and A's style website to blogging functionality for developers. So how is that going?
Sandeep: [00:17:59] Okay. So when we started thinking we'll put blockchain on hold. At that point, we thought we were constantly thinking of how we can bring more value to the platform, how we can give more value to our users. So at that point, many people were complaining about Medium. How Medium is putting their content under the table and people they're not happy with it. And that was the key thing that we taught and we thought that will create the DevLog. And when we initially launched it we didn't tell anyone about it we let it grow organically. We initially reached out to people, ourselves. We told them that we are building something cool. Would you like to migrate from Medium or your personal blog to their Hashnodes Dev Blog? Then it remained like that for a month before opening it for everyone. Right now we have unlocked personal blogs for around 5,000 people. And it's growing steadily and we're getting a lot of support from Twitter. And lots of people are writing about us and people are happy with it and people are helping us build it. And we're quite happy. We're quite happy with the way it's going.
Michaela: [00:19:09] And did you raise money for that as well?
Sandeep: [00:19:12] We raised another 400k for this part building this thing. So in total we have a million dollars.
Michaela: [00:19:18] What's your vision for that DevBlog? What should be the end result?
Sandeep: [00:19:22] What we believe is that everyone in the world, every developer in the world should have a personal blog. And they shouldn't be giving away their content for free to other platforms, which put it under their pay wall or benefit from it. So I'm constantly thinking about one days and how we can help developers make money from their blog and how they can moniter their skills.
Michaela: [00:19:42] And for some of the monetization strategies that you brainstorm, is that a blockchain coming back?
Sandeep: [00:19:48] I don't think blockchain is coming back anytime soon. We'll try to do this without blockchain, because that will be simpler. Blockchain comes with a lot of baggage. It will again, set our, focus to other things like legal things. Uh, the military, all those things. Uh, we will be much better at doing this without blockchain.
Michaela: [00:20:07] So for all of these well, from the QA side to the blockchain, and then to the Dev Blogs, there's a lot of development involved. Have you still been able to keep this 70 / 30 split between development and community management, or did that change in that time where you made, for example, the decision to go for this blockchain?
Sandeep: [00:20:26] When we decided to do blockchain at that point, it was like a hundred percent quoting all the time. We, we didn't provide the necessary attention to Hashnode at that point for a period of six months. And, uh, that was a mistake we should have given more to attention to Hashnode and maintained the balance there. But instead we went full on the blockchain and we spent a lot of time building the blockchain rather than the building of the community. So, um, That was there, but when we gradually moved away from blockchain and started doing Dev Blog at the front, we again, uh, regained the balance. We again started managing the community, actively growing the community actively. And we developed for about 50% of the 60% time we did development to get that dev blog. And the 40% of the time we, we least went to the community and with AMAs and talked to the people and started growing it.
Michaela: [00:21:19] Basically you are talking about the trade off between being really fast with development versus still growing your community.
Sandeep: [00:21:25] Exactly. Yeah.
Michaela: [00:21:26] Okay. And in the six months that you stopped attending so much to your community, did you see a drop in users or questions or what happened? Because you said that you are a little bit regretting, that you did not focus too much on the community.
Sandeep: [00:21:40] Yes. So in those six months, when we were doing blockchain, we did development most of the time and we didn't manage the community properly.
And there were several implications of that. Although we don't, we didn't lose a lot of users, we weren't acquiring them at a faster rate, and being a VC backed company, we should have grown at a rate of 20% a week, but that wasn't happening because we didn't put a lot of effort then to drive the community growth. We didn't lose a lot of users, but the community, when you, when you would come to the community, you will know that there were people who were taking the privacy policy and the code of conduct for granted. So we were a friendly and inclusive community, but there were some people who were taking advantage of it and they were, you know, constantly bashing people and they werent very civil in their discussions. And we didn't do a lot of things at the time because we are too much occupied with blockchain. We didn't have a lot of time dealing with those kinds of people. So ultimately that put a lot of people off the notion of the friendly community. And as soon as we realized that that was happening and we were thinking to put blocks in away that point we regained the control and we started managing it actively. You know, we enforce the code of conduct, doing more efforts to grow the community, such as this, we started again, which I've been doing, AMAs. AMAs were one of the powerful. Aspects of hasnode that people really love as many things as, since we started doing those, those again. And we started enforcing the code of conduct and we, again, started engaging with the community. Those are the things that we started doing.
Michaela: [00:23:18] Yeah. Well that sounds like up and downs and really a lot of learnings right there. Does the VC firm. Give you some feedback on that as well. Or do they look over your shoulder somehow? What's the relationship there?
Sandeep: [00:23:30] We meet them twice a month and we show them, our numbers, our stats, and the progress that we have made. And they ask us questions, like what's the current challenge and how is the team stepping up and, and what we should do in order to, in order to go big and all those questions, basically. So basically we were working sort of, sort of, sort of, if you have any, if, if we need any help hiring or if you need any, any different, we can go and ask them about it. And, uh, and they're always providing feedback, providing support. And now it's beyond money right now. And if we have any questions, concerns, they're helping us. There isn't too much interference from their side. You know, you can call it a good partnership. Very good assistance.
Michaela: [00:24:17] Do you have to ask the VC firm for permissions for big changes that you want to make?
Sandeep: [00:24:22] Yes. So if there's a big chance such as going on blockchain or open sourcing, certain parts, we talked to our investors in advance, we tell them that we're thinking this way and we are thinking of doing all these changes and we take there, we tell them that, do they have any questions. They are so experienced they have, they have run a lot of companies. They are, they see lots of companies day in and day out. Whenever you give them a suggestion or. You pitch something for them, they will ask you questions. And that itself is a big win. There you'll know that what you're doing is correct or not. And you'll get a chance to think more about it, dig deeper into the subject and really think about whether your, what they're doing is correct or not. So that's the plan when we do a big changes, and, and if it's not so much so big, chang, just a minor change we take the decision ourselves.
Michaela: [00:25:17] Okay. So as you describe it,I imagine this,VC Firm like, well, your personal consultant that looks over your shoulder and has a lot of knowledge and can provide a lot of value to you. Well, probably mostly related to them product itself. Do they also have opinions about the software development side of the project. For example, let's say best practices you should follow, or which technologies you should use.
Sandeep: [00:25:42] No. So, uh, they don't talk much about development. It's more of a business side of things. It's more about how do we raise more money? How do we hire a good team? How do we go big? How do we monetize the platform? All those angles.
Michaela: [00:25:58] Well that really sense because, well, they have like the business background and they have the knowledge and the insights, as you said, into all these companies. And so they can share it with you and from the developer side, well, you are the experts. Do you feel like an expert?
Sandeep: [00:26:14] So sometimes I feel really good about myself and a lot of times I think, I don't know. I don't know anything. So that's how life developer is at times you feel like you're the God I have some of the time you think that you don't know anything. So that's happened a lot with me, but generally if you ask me, I still think that I don't know a lot of things. I know a specific things. And I'm good at a specific technologies. And if you ask them to build something, I can build it, but I'm in no way an expert. So I still think that I can get a company running and build good products, but they're far more experienced developers than me who write better code than me who write or build better products than me. Every day is a new learning system for me and personally, I have to grow a lot.
Michaela: [00:27:05] And so when you look at your decisions that you made from a technical side of your project, which ones do you think were really good decisions and which were the smart things that you are proud of and you say, well, that's what I think we did really well.
Sandeep: [00:27:19] Yeah. So the best decision was was rewriting Hashnode in Next JS. So there is something called Next JS. Uh it's it really makes things really easy if you're using modern tools: Mongo, Express, React, and Node - those are the tools that those are the technologies that you're using. You should probably be using Next JS. So in May, 2017, we rewrote Hashnode in Next JS and probably the best assistant that it took to reduce the development time, deployment time, everything. I recommend everyone to do that if they are using a modern stack.
Michaela: [00:27:56] Well, that sounds like a big commitment. So how did you decide to say we are going to do a rewrite right here and how much of the code base was actually read written at that point?
Sandeep: [00:28:08] So moving to Next JS, this is a matter of changing the UI because Next JS you have node. So we have good preserved all those backend code that we had. And we just had to write the front end components, that process, we left out a lot of unused components and unused pages and we could report it only the things that we are going to go ahead with. It is not a very difficult task. It took about a couple of weeks to write all those components in Next JS. And it, and it has worked like a charm for us. After that we could make changes faster. We could deploy really fast, and Next JS team has been releasing new updates once in a while. And they're really, really good at what they're doing. It was a very good the system as for me.
Michaela: [00:28:53] So, how does your development process in general look like, do you do testing or do you do code reviews? How does it look like?
Sandeep: [00:29:02] So in our team we have four developers and we always make sure to write unit tests and E to E tests for critical components. So we use something called Cyprus, right? You do tests. And all of us are when we are building a feature or a particular component, we make sure to unit test that, and after we. We do this basic things. We, we always use to protect ourselves when we build it. We test all the edge cases, all the different scenarios. And we make sure that whatever we build, we use it and test them properly before setting. Once we are confident about it, once we know that, our tests are passing and we have tested everything we, uh, submit for peer review.
So let's say, uh, our teammate Girish, is working on something. And once he is confident about it, he submits PR, pull request, in GitHub. And then one of our teammates goes there and reviews the entire thing. And if we have any comments, if you have any, any suggestions or feedback, we leave it on the PR itself. GitHub has a nice tool for reviewing the code and see the divs and we use that to review the code and provide our criticism and feedback. And we then request changes if any, and the developer then has another look at the code and they explained why they took that particular approach, or they simply resolve the problem, if I identified it. And once we were all happy, we just, we just push it to production and the CICD tool takes care of everything else.
Michaela: [00:30:40] And so there is at least one person that looks through the code for you?
Sandeep: [00:30:44] Exactly. Yeah, absolutely.
Michaela: [00:30:46] And it doesn't matter who that is. So if that person says it looks fine to me, then you can actually push that to production?
Sandeep: [00:30:52] Yes. So most of the times it's me. I review the, I make sure that I review all the, all the pull requests, but if, what if I, if am not available for some reason, Um, then they can just do peer review and puts it to prod and, uh, make sure that they're observing the feature, if there are any bugs they're available to fix it.
Michaela: [00:31:11] So when you push it to production, they monitor what's going on with the community. And if there are any bugs, then they would revert the change. Or how does the process look like?
Sandeep: [00:31:22] Well, so for most of the times we don't encounter a lot of critical bugs on the production. We have a lot of times we identified them before deploying and on some occasions, if there are any bugs, uh, after this happened, after the deployment, sometimes we revert those changes or we send a fix with quickly after testing and that solves the problem.
Michaela: [00:31:41] So if I encounter a problem as a user, how would I report that?
Sandeep: [00:31:45] So we have multiple ways to report. The first way is to, you know, create a new issue on our GitHub. We have a separate report on GitHub, a public repo where they can raise it so they can do that. Otherwise they can directly PM me. And, and third way is to talk to us on Discord. So if they're a member of our digital channel, they can directly communicate with us and talk to us in real time, report bugs, get feedback.
Michaela: [00:32:15] Yeah. I wanted to ask you something about reliability. So do you look into that in particular, like side reliability issues? Do you have a person that really tries to be an expert for that, or also for security related issues?
Sandeep: [00:32:30] So right now we are a small team of, four people in the dev team. So right now it's just me, uh, who looks after the reliability and security issues. So I always moniter things and use different tools to make sure that the site is not, is not unreliable. And the site is not down. The first one is we use a tool called Epics. That constantly pings the website and notifies all of us on Discord and Slack that site is a little bit down, there is an increased latency, if reports things like that, then we use new Relic and, uh, uh, key metrics to make sure that the performance of the update site is up to the mark, and it has not degraded. Those are the two things that helped me the most and regarding security users, we encourage people to email us about security vulnerabilities. Uh, send me, send us a message on Discord. And there've been many instances where people have reached out to us over email with security issues and security vulnerabilities, and we have always fixed them. And we also reward them with some Hashnode swag and gift cards. And so, so yeah, so I'm the one who looks up all those things.
Michaela: [00:33:48] So your strategy is to encourage you users. Well, I guess, especially the ones probably that are interested insecurity to think about ways you could attack hash node or vulernabilities that are they find, and then they send you those via email and let you know about that.
Sandeep: [00:34:05] Exactly. Yeah.
Michaela: [00:34:07] Oh, yeah, that's really smart.
Sandeep: [00:34:08] Yeah. People like there are people, people who always think to think of it, things who want to test things out and we encourage them to do that and report to us so that we can fix them and reward them.
Michaela: [00:34:20] Cool. Well, so probably those are always the same people. So, you know, the 10 people that are really interested in the that and the send the message.
Sandeep: [00:34:28] Yeah. Yeah, exactly.
Michaela: [00:34:31] Okay, great. Something else. I wanted to talk a little bit more about this testing. So you say you're investing in testing and you're doing unit integration and some manual testing before you send the code, even for the code review. But do you write the test before you start development? So in a test driven development fashion, or well, is there some methodology around it or is that up to everybody on the team to decide.
Sandeep: [00:34:58] We're pretty flexible when it comes to a methodology, each one of us chooses their pace. If someone thinks that they have to really follow TDD, they do it. And others from the team, they might not feel comfortable with TDD so they, they make sure to build the feature. And once they are confident, they for that. But the end result is that when the submit the PR, there has to be some tests and they should be confident about it. And we're not too much worried about or focused on the material that they follow.
Michaela: [00:35:32] And do you have something like code coverage. Um, so you know, what part of the code is covered? Uh, do you use metrics like that?
Sandeep: [00:35:40] We don't have metrics on the code coverage. Uh, we, what we do is we. We make sure that the critical functionalities are working critical functionalities are tested. For example, the user onboarding sign up process, push creates, and a response creates and some reactions. All of them are working or not. And if they're working and I, that's fine, if all of them are working, then we're good to go. And we make sure that the new features they are, they have unit tests and EtoE tests, but right now we are, we are not measuring the code coverage number. But I, but I think we should start doing that once we go ahead a little bit with the, the dev log thing, uh, we will do all those things. We'll start with numbers and competence score.
Michaela: [00:36:27] And do you have like other studying analysis tools that you run over your code base?
Sandeep: [00:36:32] Yes, so, Oh, we used to use ESLint heavily before, uh, before doing the blockchain thing. Then after, after that, we kind of stopped that and they're going to reintroduce ESLint very soon probably in the coming weeks.
Michaela: [00:36:45] And why did you stop it?
Sandeep: [00:36:46] When we did blockchain at that time. We were pretty much focused on build the actual blockchain thing and launched our own token. And we were not so much focused on the style guide. Um, because we are, we're not using our, our regular technologies Node. We're using GO language at the time and GO is a very easy language to start with. And we were too much focused on, uh, shipping the production and worrying about the content and all. So, so, so at that point we disabled ESLint in our Hashnode core. And we started building the blockchain. Then, after we came back from the blockchain, we decided that we're going to focus on the Dev Blog instead.
So at that point, uh, we thought that not going to have your ESLint right now, but we'll follow the pattern of a styleguide. We'll make sure that we're following patterns and good standards. And at some point when we are confident and we have, uh, built something, uh, something that people love, at that point we will introduce something like ESLint to make sure that whoever is any of the team that they're following the same pattern.
Michaela: [00:38:00] So, is this your way of reducing the overhead value? Just figuring out the features and what the product is.
Sandeep: [00:38:05] Right. It's a very small team, a small team, and we have done multiple reworks. So we always think that how we can do things effectively and faster and introduce something like ESLint. I think it's a really good thing to do do so, uh, right now, as we have grown a little bit, I think its the right time to do something like introduce ESLint and, uh, make sure we are sticking to standards.
Michaela: [00:38:27] Yeah. Yeah, I see that. So one of the things that I wanted to talk with you about is that you are running a remote company and also people on Twitter were asking about that. So a little bit before you told me about the offices that you actually got with the VC funding. So apparently you have offices, but you're also remote or don't you have the offices anymore. What's the story behind that?
Sandeep: [00:38:51] We got a office space for free for me, this money. And we used office space for, for nearly four years only the recently we went with the remote team approach and we still have the office with us, but we don't go there. There are fully remote, um, with two of our members from Europe and we, we are very happy with the way it has worked out for us. So, uh, but when we want to meet, uh, for example, when my cofounder and I want to meet, we just meet in a coffee shop or in a nearby area. Very rarely Fazle And I go to the office, the free office space we have got. And we always collaborate on the, uh, on the remote site. And we, it was worked out really, really well.
Michaela: [00:39:41] And why did you decide to go from being two people in an office to hiring all over the world and remotely,
Sandeep: [00:39:47] After running Hashnode for four years, we realized that you shouldn't rely on a particular geographical area to find the best talent you can. You can find talent from all over the world. And if you're restricting yourself to a particular area, then you are missing out on a lot of good people. So we started lookingfor good people from all over the world. And he said that we were, we're going to build a remote team and we are not going to keep looking for people in, in one particular area. So that made us rethink this way of working a little bit.
And I read a book called "REMOTE: Office Not Required" from Basecamp. So I got inspired. I got inspired and I, I thought that that's a really, really cool way of working, helps you immensely. So as soon as they finished the book, I was sold and thinking in this new direction and we, uh, so we didn't start, started going to office. Yes. And we built that team remotely.
Michaela: [00:40:48] Yeah, I'm a big remote advocate. I've been working remotely since years now and I love it. But when you made this shift to remote work, did you see that you had to make changes in the way you are working or some of your tooling or your development process?
Sandeep: [00:41:04] So when we built the remote team, we thought that things have to be documented in a central location and. For that we started using using Basecamp. Basecamp, we can collaborate really easily with a remote team. So that was the primary change that we did. And then we made sure that we are communicating often and communicating in an effective way. So, and we use all the tools like Slack, Google Hangouts, and good old email to, uh, communicate with each other and be in sync and we will, and we also make sure that we have all of us have a good internet connection and we have access to good a mic and and earphones.
Michaela: [00:41:47] So have you met your two European employees already? Did you meet them face to face before the hiring decision or was the whole process completely remote?
Sandeep: [00:41:57] Everything was completely remote. I've never met them in person.
Michaela: [00:42:00] Oh, that must be funny. Right?
Sandeep: [00:42:02] Yeah. So, so yeah, so initially it was a bit weird. We had never had like that, but then everything fell into place and it has worked out really well. So yeah, now it seems normal.
Michaela: [00:42:14] So especially remote work is really built up on trust. So I can imagine that at the beginning you have to put a lot of trust forward. So how was that for you?
Sandeep: [00:42:23] When I first met our first remote employee? Uh Milica right. Well, 30 minutes to 1 hour, I got the vibe, I got good vibes and she has been the community member of Hashnode for nearly three to four years. And she loved the platform. She had a lot of good ideas, lots of new thinking, and we decided that we're going to work together.
Michaela: [00:42:46] So you say it's really a gut feeling and that if it's clicking, there's automatically trust.
Sandeep: [00:42:52] Exactly.
Michaela: [00:42:52] Yeah. I liked that. I liked that a lot. So one of the other things I wanted to talk with you about is your dev ops and your deployment strategy, has everybody access and the right to deploy to production, or is there some specific process you follow?
Sandeep: [00:43:08] So our dev team is four people. And what we do is everyone has access push to master, which will trigger deployment. But we have ruled that no one does that apart from me. So whenever I'm available, I'm the person who pushes to master and everyone, they have their own branches, they have their feature branches. And once they're confident, they just submit a pull request on Github and I review it or someone else reviews it. And once we are all confident, I merge that with master and It can go to the deployment, but if I'm not available, for some reason, someone else from the team takes over and they take care of reviewing merging and posting to master.
Michaela: [00:43:50] Do you have a specific time that you deploy to the production? I imagine Hashnode is used all over the world. So there isn't really a perfect time, like say in the middle of the night to actually do the pushes. So do you just deploy whenever its ready?
Sandeep: [00:44:04] There's no specific time actually, when we think that we have built, we have fixed up a bunch of things and we think, we should post it as soon as possible. We do it quickly, nearly zero downtime deployment that we have set up. So there is no reason to defer it. But one thing is that we don't deploy on Fridays.
Michaela: [00:44:25] And also not on weekends. I guess one of the things that I've talked with another startup founder recently was about technical debt. And he said, well, our company is now four years old. So you can imagine how much technical debt we just have from the technology that changed. Do you experience that as well?
Sandeep: [00:44:42] I think we have our fair share set of technical debt. Uh, we have a bunch of code that was written a long back and okay. They need refactor, but right now we are too much focused on shipping Dev Blog and making this the best platform for bloggers. So right now we have, we're not doing a lot of cleanup work. Uh, we, we are not refactoring the old codes and fixing those things, but we had that thing in our, on our mind. And once we grow a little bit in size, once we ship a few more devs and once we have some time, we will probably go back to the old way of doing things and will it refactor those things and make it better.
Michaela: [00:45:24] So right now it's really about finding product market fit and making the best product. But do you have some processes or tools that help you to not introduce new technical debt?
Sandeep: [00:45:35] All of us, we, we stick to conventions. So we have a specific way of bringing things and we always make sure that we are sticking to it. And the best practices and a style guide, we'll do that in place. So that prevents us from shipping bad code or patches. And as I said, we work in a very relaxed way. We don't have hard deadlines that makes it enough that you get a lot of time to do, to give it proper thought. And you, you, you design features, uh, within a span of one week or two weeks. So you're not constrained by time. So you will. So most of the times we do a good job rather than a patchy work. We try not to introduce a new technical debt this way.
Michaela: [00:46:22] So you say you're having no hard deadlines. Would you describe your way of working sort of an agile way of working? Do you do stand ups and well, do you follow some sort of methodology for your day to day work?
Sandeep: [00:46:35] It's not strictly agile, but we do daily stand ups for a for about 10 to 15 minutes. All of us come online and we do it Google Hangouts, call where we talk about what we did yesterday and where we're going to do today. So that's what we do. And we communicate with each other or Slack and Discord, and we make sure that everyone is in sync. So we take bugs from GitHub and take features from feature requests, bugs, and prioritize them on a weekly basis. And we, we had soft deadlines, not hard ones, soft deadlines and we make sure that we are meeting them so that we can know that this thing is expected to be done in a week. But for some reason it doesn't happen. We review it and we, again, set a deadline and we see, we see that gets finished soon.
Michaela: [00:47:26] So if you would hire right now, let's say two out other people, what would their roles be?
Sandeep: [00:47:31] I think we'll, we might take help of a full placed product manager who will constantly look at the metrics stats and drive all the efforts to increase them. So right now it's me and Fazle who looks up to the stats and metrics. But if you, if we have a dedicated person who owns that part, that will be really good.
Michaela: [00:47:53] What metrics and stats would that be? What's your key metric that you think helps you go in the right direction?
Sandeep: [00:47:59] So we track a lot of things. Basically the key things will be a number of blogs we are unlocking per week. And number of people, writing posts, adding stories per week, and monthly active bloggers, weekly active bloggers and monthly active users on hashnode, weekly on hashnode. And how are they retained on a week on week basis? Are they dropping dropping off in four weeks. And if a hundred people sign up today, how many are retained? How many come back after four weeks? There are the few key things that we are measuring right now.
Michaela: [00:48:33] So, how do you learn? I mean, apart from that, that has started, you probably are constantly learning, but all the new problems you have to solve, but do you have also some dedicated times set aside for you and your teammates for learning or experimenting? And is there some budget that people can spend on like books or conferences?
Sandeep: [00:48:52] Great. So we encourage our teammates to attend conferences and read books and we encourage ourselves to take a break, uh, every day and, uh, read books. If you know, when to take a break and utilize that time by reading something cool, something new that will be really, really helpful for us. I bought a couple of books last week. We're looking forward to finishing them by the end of this month.
Michaela: [00:49:18] Yeah. What are the books that you're looking forward to read right now?
Sandeep: [00:49:21] One of them is a book called AI Superpowers. So it's about how China is experimenting with AI and how they are utilizing machine learning and AI to drive their economy. So that book was recommended by our investors at Axle. So I bought that book last week and I'll read a couple of chapters and I'm looking forward to finishing that. Really quick.
Michaela: [00:49:42] Yeah. Cool. Do you have some ideas? I mean, for your community, how AI can bring that to the next level?
Sandeep: [00:49:48] We are already discussing about and how it began introduce some kind of intelligence to the field. So if you come to Hashnode right now, it's the, the feed is pretty simple. You follow, set up notes and people and based on that we create your feed, but a very, very good old person or post once trending or Hashnode we have not come across them. And there are some posts that you might be missing because of any reason, that you might have that node or that person, but we can probably predict what kind of posts you might like, and based on that, we can start suggesting good posts, good people to follow.
That's one way AI can be applied and another area where we can and do something cool. Is that suggesting ideas to write? And if you're a blogger and you are writing, about things, and there's a good, good chance, we will be able to predict what are the things that you might want to write about in future? So that's another area where we can do some cool experiments.
Michaela: [00:50:45] That's really cool. Yeah. So I think we covered a lot in that interview. I'm really happy that you took the time to talk with me about hash node, your startup journey, your development practices, and the future. Thank you so much for being here.
Sandeep: [00:50:58] Thank you. Thanks. Thanks for having me.
Michaela: [00:51:01] I'm also part of Hashnode. since I think I joined in February and they really like it. So I'm looking forward to your adventure. Thank you.
Sandeep: [00:51:08] Thanks a lot, Chad. I love it. All your blog posts and code reviews. I am looking forward to reading them on Hashnode. Thanks a lot.
Michaela: [00:51:16] I hope you enjoyed another episode of the Software Engineering Unlocked Don't forget to subscribe. And I talked to you again in two weeks. Bye.
Copyright 2022 Doctor McKayla