[{"data":1,"prerenderedAt":2746},["Reactive",2],{"learn-element-the_ai_trap":3,"learn-element":246},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"tags":9,"related_content":13,"short_title":8,"header_two":14,"header_three":15,"icon":16,"cta_header":17,"body":18,"_type":241,"_id":242,"_source":243,"_file":244,"_extension":245},"/learn/the_ai_trap","learn",false,"","The AI Trap",[10,11,12],"hiring","management","product",[],"Can You Scale With","AI?","creation","Need help scaling your AI product?",{"type":19,"children":20,"toc":231},"root",[21,30,36,42,47,52,57,62,67,73,78,83,88,93,98,103,109,114,119,124,129,135,140,145,150,156,161,191,196,201,207,217],{"type":22,"tag":23,"props":24,"children":26},"element","h2",{"id":25},"overview",[27],{"type":28,"value":29},"text","Overview",{"type":22,"tag":31,"props":32,"children":33},"p",{},[34],{"type":28,"value":35},"You can generate functional code. Design interfaces. Ship working products. All without a technical co-founder. This is real. We've seen it happen across 200+ founder companies. AI has genuinely democratized execution. But it created a specific problem that most founders don't anticipate until it's too late.",{"type":22,"tag":23,"props":37,"children":39},{"id":38},"the-gap-nobody-sees-coming",[40],{"type":28,"value":41},"The Gap Nobody Sees Coming",{"type":22,"tag":31,"props":43,"children":44},{},[45],{"type":28,"value":46},"You can build further than you can evaluate. This sounds abstract until you experience it. Then it becomes very concrete.",{"type":22,"tag":31,"props":48,"children":49},{},[50],{"type":28,"value":51},"You generate features, integrate APIs, ship code that works. What you can't see are the architectural decisions underneath. The ones that compound over time. Which database approach. Which API. How data flows. How complexity is managed.",{"type":22,"tag":31,"props":53,"children":54},{},[55],{"type":28,"value":56},"Early on, this gap doesn't matter. Features ship. Customers engage. You feel good about the progress.",{"type":22,"tag":31,"props":58,"children":59},{},[60],{"type":28,"value":61},"By week 12, you feel it. Features that took 3 days now take 8. Changes break unexpected things. Estimating work becomes unreliable. You start thinking you need better engineers.",{"type":22,"tag":31,"props":63,"children":64},{},[65],{"type":28,"value":66},"By month 6, you know something is wrong. You just can't name it.",{"type":22,"tag":23,"props":68,"children":70},{"id":69},"the-pattern-is-consistent",[71],{"type":28,"value":72},"The Pattern Is Consistent",{"type":22,"tag":31,"props":74,"children":75},{},[76],{"type":28,"value":77},"Here's what we've observed repeatedly across different business models, industries, and team compositions:",{"type":22,"tag":31,"props":79,"children":80},{},[81],{"type":28,"value":82},"Non-technical founders optimize for shipping. That's the right instinct when you're validating. Speed matters. Learning matters. Shipping matters.",{"type":22,"tag":31,"props":84,"children":85},{},[86],{"type":28,"value":87},"But those early decisions were made in isolation. They worked fine with one feature. They don't work with ten.",{"type":22,"tag":31,"props":89,"children":90},{},[91],{"type":28,"value":92},"You're now carrying architectural debt you can't see. Every new feature exposes it. Every new hire discovers it. Every scaling milestone highlights it.",{"type":22,"tag":31,"props":94,"children":95},{},[96],{"type":28,"value":97},"Most founders think they need to hire better engineers. Rebuild the codebase. Reset the technical direction.",{"type":22,"tag":31,"props":99,"children":100},{},[101],{"type":28,"value":102},"That's not the actual problem. The problem is accumulated architectural decisions made when building mattered more than sustainability.",{"type":22,"tag":23,"props":104,"children":106},{"id":105},"what-changes-it",[107],{"type":28,"value":108},"What Changes It",{"type":22,"tag":31,"props":110,"children":111},{},[112],{"type":28,"value":113},"The founders who scaled successfully made one decision early. They got clarity on what they were building before execution locked them in.",{"type":22,"tag":31,"props":115,"children":116},{},[117],{"type":28,"value":118},"This doesn't mean they hired a full-time CTO. Doesn't mean they stopped moving fast. It means they got a technical perspective on the decisions that compound over time.",{"type":22,"tag":31,"props":120,"children":121},{},[122],{"type":28,"value":123},"Someone who could look at the architecture and say: \"This works for now, but here's what needs to change before you scale.\" Someone who could prevent the invisible iceberg from becoming expensive.",{"type":22,"tag":31,"props":125,"children":126},{},[127],{"type":28,"value":128},"The ones who didn't get that clarity are still paying the price. They're rebuilding. They're firefighting. They're spending months on refactoring that could have been prevented.",{"type":22,"tag":23,"props":130,"children":132},{"id":131},"the-cost-of-waiting",[133],{"type":28,"value":134},"The Cost of Waiting",{"type":22,"tag":31,"props":136,"children":137},{},[138],{"type":28,"value":139},"By the time you feel the wall, you're already locked in. Pivoting costs months. Hiring becomes friction. New engineers take 4-6 weeks to ramp instead of 2.",{"type":22,"tag":31,"props":141,"children":142},{},[143],{"type":28,"value":144},"You optimize for the wrong moment, and you pay for it across the next 12-18 months.",{"type":22,"tag":31,"props":146,"children":147},{},[148],{"type":28,"value":149},"The founders who avoided this didn't have special foresight. They just got perspective early.",{"type":22,"tag":23,"props":151,"children":153},{"id":152},"what-you-actually-need",[154],{"type":28,"value":155},"What You Actually Need",{"type":22,"tag":31,"props":157,"children":158},{},[159],{"type":28,"value":160},"You need someone who can:",{"type":22,"tag":162,"props":163,"children":164},"ul",{},[165,171,176,181,186],{"type":22,"tag":166,"props":167,"children":168},"li",{},[169],{"type":28,"value":170},"Assess what you've built and identify which decisions will break as you grow",{"type":22,"tag":166,"props":172,"children":173},{},[174],{"type":28,"value":175},"Architect the next phase without slowing you down",{"type":22,"tag":166,"props":177,"children":178},{},[179],{"type":28,"value":180},"Set standards for how your team builds",{"type":22,"tag":166,"props":182,"children":183},{},[184],{"type":28,"value":185},"Guide technical hiring",{"type":22,"tag":166,"props":187,"children":188},{},[189],{"type":28,"value":190},"Translate business vision into technical execution",{"type":22,"tag":31,"props":192,"children":193},{},[194],{"type":28,"value":195},"Not a consultant who reviews and leaves. Someone embedded in your execution.",{"type":22,"tag":31,"props":197,"children":198},{},[199],{"type":28,"value":200},"This is the difference between founders who scale and founders who hit a wall they didn't see coming.",{"type":22,"tag":23,"props":202,"children":204},{"id":203},"start-with-clarity",[205],{"type":28,"value":206},"Start With Clarity",{"type":22,"tag":31,"props":208,"children":209},{},[210,215],{"type":22,"tag":211,"props":212,"children":213},"strong",{},[214],{"type":28,"value":8},{"type":28,"value":216}," report documents exactly what this gap looks like, why it exists, and what prevents it. It's based on direct engagement with 200+ non-technical founders who've been through this. The patterns are consistent. The solutions are clear.",{"type":22,"tag":31,"props":218,"children":219},{},[220,229],{"type":22,"tag":221,"props":222,"children":226},"a",{"href":223,"rel":224},"https://report.rightbalance.io/aitrap",[225],"nofollow",[227],{"type":28,"value":228},"Get Your Copy",{"type":28,"value":230}," and discover what you're missing before the cost becomes expensive.",{"title":7,"searchDepth":232,"depth":232,"links":233},2,[234,235,236,237,238,239,240],{"id":25,"depth":232,"text":29},{"id":38,"depth":232,"text":41},{"id":69,"depth":232,"text":72},{"id":105,"depth":232,"text":108},{"id":131,"depth":232,"text":134},{"id":152,"depth":232,"text":155},{"id":203,"depth":232,"text":206},"markdown","content:learn:The_AI_Trap.md","content","learn/The_AI_Trap.md","md",[247,501,624,830,1134,1298,1454,1643,1774,1955,2125,2626],{"_path":248,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":249,"description":250,"draft":6,"tags":251,"related_content":252,"short_title":253,"header_one":254,"header_two":255,"header_three":7,"cta_header":256,"cta_button":7,"cta_href":7,"icon":257,"icons":258,"image_url":7,"body":259,"_type":241,"_id":499,"_source":243,"_file":500,"_extension":245},"/learn/3-reasons-why-throwing-more-features-at-the-product-doesn-t-work","3 Reasons Why Throwing More Features At The Product Doesn't Work","You’ve been working on your product very hard. You’re excited to launch it. There is a lot of interesting product ideas that you incorporated into it. You keep thinking: “Just one last feature and it will be perfect!”. Finally, you push the button, the product is live but it doesn’t perform the way you expected. Sounds familiar? After reading this post, you’ll learn a better way to deliver a better product faster.",[12,11],[],"Mo features mo problems","Mo features","Mo problems","Need some help with setting up proper Agile?","chart-timeline",[],{"type":19,"children":260,"toc":487},[261,274,280,285,304,310,344,352,375,393,399,413,418,425,430,436,441,447,452,458,463,469,474],{"type":22,"tag":31,"props":262,"children":263},{},[264,266,272],{"type":28,"value":265},"You’ve been working on your product very hard. You’re excited to launch it. There is a lot of interesting product ideas that you incorporated into it. You keep thinking: “Just one last feature and it will be perfect!”. Finally, you push the button, the product is live but it doesn’t perform the way you expected. Sounds familiar? After reading this post, you’ll learn a better way to deliver a ",{"type":22,"tag":267,"props":268,"children":269},"em",{},[270],{"type":28,"value":271},"better product faster",{"type":28,"value":273},".",{"type":22,"tag":23,"props":275,"children":277},{"id":276},"why-adding-a-lot-of-features-slows-you-down",[278],{"type":28,"value":279},"Why adding a lot of features slows you down",{"type":22,"tag":31,"props":281,"children":282},{},[283],{"type":28,"value":284},"If your awesome product has all features in the world, it’s exactly where the problem is. More features come at the cost of the following things:",{"type":22,"tag":286,"props":287,"children":288},"ol",{},[289,294,299],{"type":22,"tag":166,"props":290,"children":291},{},[292],{"type":28,"value":293},"Feedback loop increase. It takes longer to build more functionality into the product. It delays time to market and it delays getting valuable customer feedback.",{"type":22,"tag":166,"props":295,"children":296},{},[297],{"type":28,"value":298},"You don’t know what works until you test it. You’re not your target audience. What works for you will not necessarily work for your customer.",{"type":22,"tag":166,"props":300,"children":301},{},[302],{"type":28,"value":303},"Building a product gets harder the more features you add to it. User experience gets confusing.",{"type":22,"tag":23,"props":305,"children":307},{"id":306},"agile-methodology-to-the-rescue",[308],{"type":28,"value":309},"Agile methodology to the rescue",{"type":22,"tag":31,"props":311,"children":312},{},[313,315,323,325,332,334,342],{"type":28,"value":314},"The process of planning ahead for a complete product is called ",{"type":22,"tag":221,"props":316,"children":320},{":target":317,"href":318,"rel":319},"\\_blank","https://en.wikipedia.org/wiki/Waterfall_model",[225],[321],{"type":28,"value":322},"Waterfall",{"type":28,"value":324},". There is nothing bad about the waterfall process. It works, people build things like spaceships and aircrafts with it successfully. However, the waterfall methodology has one important drawback: you might spend a lot of time implementing a fully-featured solution that doesn't work well for the customer. It's best illustrated in a classic comic from ",{"type":22,"tag":221,"props":326,"children":329},{":target":317,"href":327,"rel":328},"http://projectcartoon.com/",[225],[330],{"type":28,"value":331},"project cartoon",{"type":28,"value":333}," (also mentioned as ",{"type":22,"tag":221,"props":335,"children":339},{":target":317,"href":336,"rel":337,"title":338},"https://archive.is/FgxPK",[225],"Tree Swing Picture archived",[340],{"type":28,"value":341},"Tree Swing Picture",{"type":28,"value":343}," in an archived source):",{"type":22,"tag":31,"props":345,"children":346},{},[347],{"type":22,"tag":348,"props":349,"children":351},"img",{"alt":7,"src":350},"https://images.rightbalance.io/uploads/waterfall_comic.jpeg",[],{"type":22,"tag":31,"props":353,"children":354},{},[355,357,366,368,373],{"type":28,"value":356},"As you may see from the picture above, there is a fundamental disconnect between how the person implementing it or even a customer sees the product and what the customer actually needs. After numerous companies fell into this trap, a group of smart individuals invented the methodology called Agile which solves this problem. You can find the agile definition in ",{"type":22,"tag":221,"props":358,"children":363},{":target":359,"href":360,"rel":361,"title":362},"_blank","https://agilemanifesto.org/",[225],"Agile Manifesto",[364],{"type":28,"value":365},"The Agile Manifesto",{"type":28,"value":367},". The main idea is to short-circuit a long iteration cycle by building the product in small increments, testing it with a real customer, and pivoting. In other words, instead of planning for a rich feature set in advance, you plan for a _minimum_ feature set needed, ship it, and learn from it. ",{"type":22,"tag":267,"props":369,"children":370},{},[371],{"type":28,"value":372},"Then and only then",{"type":28,"value":374}," you decide what to build next. Here are the main advantages of agile project management:",{"type":22,"tag":286,"props":376,"children":377},{},[378,383,388],{"type":22,"tag":166,"props":379,"children":380},{},[381],{"type":28,"value":382},"It shortens the feedback loop so you can iterate faster.",{"type":22,"tag":166,"props":384,"children":385},{},[386],{"type":28,"value":387},"You build a better product based on the customer input.",{"type":22,"tag":166,"props":389,"children":390},{},[391],{"type":28,"value":392},"The team feels a greater sense of ownership since it’s more involved working with the customer.",{"type":22,"tag":23,"props":394,"children":396},{"id":395},"how-you-can-implement-the-agile-methodology-for-your-team",[397],{"type":28,"value":398},"How you can implement the Agile methodology for your team",{"type":22,"tag":31,"props":400,"children":401},{},[402,404,411],{"type":28,"value":403},"If you would like to know more about Agile, I encourage you to read ",{"type":22,"tag":221,"props":405,"children":408},{":target":317,"href":406,"rel":407},"https://www.amazon.com/gp/product/1934356581/ref=as_li_tl?ie=UTF8&tag=howtoprogramb-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1934356581&linkId=be6e2304236fdbfe25fdfe58cd95926d",[225],[409],{"type":28,"value":410},"The Agile Samurai",{"type":28,"value":412}," from Pragmatic Programmers. It goes into greater detail about the agile process starting from inception to planning and execution.",{"type":22,"tag":31,"props":414,"children":415},{},[416],{"type":28,"value":417},"Agile methodology (you may also hear the term called scrum) has many flavors and each team tweaks it to come up with its own flavor. Here are the main events in Agile:",{"type":22,"tag":419,"props":420,"children":422},"h3",{"id":421},"inception",[423],{"type":28,"value":424},"Inception",{"type":22,"tag":31,"props":426,"children":427},{},[428],{"type":28,"value":429},"Once you go through the inception process, you’ll identify the roles, goals, and risks of the project. This process may take from several hours to several days for big projects. The outcome of inception is the backlog of items for the first iteration.",{"type":22,"tag":419,"props":431,"children":433},{"id":432},"planning",[434],{"type":28,"value":435},"Planning",{"type":22,"tag":31,"props":437,"children":438},{},[439],{"type":28,"value":440},"The first inception will serve as your first planning. That being said, you’ll need to get together with your team for a planning meeting at the beginning of every iteration to make sure everybody understands what needs to be done.",{"type":22,"tag":419,"props":442,"children":444},{"id":443},"daily-standup",[445],{"type":28,"value":446},"Daily Standup",{"type":22,"tag":31,"props":448,"children":449},{},[450],{"type":28,"value":451},"Standups are quick check-ins where you go around the room and everyone shares a status update. The goal is to track progress and identify blocking issues early.",{"type":22,"tag":419,"props":453,"children":455},{"id":454},"retrospective",[456],{"type":28,"value":457},"Retrospective",{"type":22,"tag":31,"props":459,"children":460},{},[461],{"type":28,"value":462},"This is one of the most important parts of Agile. The team gets together at the end of the iteration to discuss what worked, what didn’t so we can iterate on the process itself. Retrospective meetings are a safe place to express your thoughts so the team can improve.",{"type":22,"tag":23,"props":464,"children":466},{"id":465},"conclusion",[467],{"type":28,"value":468},"Conclusion",{"type":22,"tag":31,"props":470,"children":471},{},[472],{"type":28,"value":473},"Using the right tool for the job is key. The Waterfall process is very different from Agile/Scrum. Which methodology is right for you is your choice. In some cases, it may be appropriate to go with a waterfall process if your product cycle is very long in your industry. For most of the tech startups, we recommend going with Agile since things move quickly requiring rapid innovation.",{"type":22,"tag":31,"props":475,"children":476},{},[477,479],{"type":28,"value":478},"Originally posted on ",{"type":22,"tag":221,"props":480,"children":484},{":target":317,"href":481,"rel":482,"title":483},"https://alextamoykin.com/why-throwing-more-features-at-the-product-doesnt-work",[225],"Original post from Alex Tamoykin",[485],{"type":28,"value":486},"alextamoykin.com",{"title":7,"searchDepth":232,"depth":232,"links":488},[489,490,491,498],{"id":276,"depth":232,"text":279},{"id":306,"depth":232,"text":309},{"id":395,"depth":232,"text":398,"children":492},[493,495,496,497],{"id":421,"depth":494,"text":424},3,{"id":432,"depth":494,"text":435},{"id":443,"depth":494,"text":446},{"id":454,"depth":494,"text":457},{"id":465,"depth":232,"text":468},"content:learn:3-reasons-why-throwing-more-features-at-the-product-doesn-t-work.md","learn/3-reasons-why-throwing-more-features-at-the-product-doesn-t-work.md",{"_path":502,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":503,"description":7,"draft":6,"tags":504,"related_content":506,"short_title":507,"header_one":507,"header_two":7,"header_three":7,"cta_header":508,"cta_button":7,"cta_href":7,"icon":509,"icons":510,"image_url":7,"body":511,"_type":241,"_id":622,"_source":243,"_file":623,"_extension":245},"/learn/5-qualities-of-a-10x-engineer","5 Qualities of a 10x Engineer",[11,505],"career",[],"10x Engineer","Want a 10xer for your team?","weight-lifter",[],{"type":19,"children":512,"toc":611},[513,517,522,528,542,548,553,559,564,570,575,581,586,592,597,601,606],{"type":22,"tag":23,"props":514,"children":515},{"id":25},[516],{"type":28,"value":29},{"type":22,"tag":31,"props":518,"children":519},{},[520],{"type":28,"value":521},"You most likely heard about a magical 10x engineer producing 10x more output than any other engineer in the company. It’s not a myth. They do exist. It’s just hard to find them. This post goes over the qualities of such people so you can recognize them in your organization and set them up for success.",{"type":22,"tag":23,"props":523,"children":525},{"id":524},"what-makes-a-10x-er",[526],{"type":28,"value":527},"What Makes a 10x-er",{"type":22,"tag":31,"props":529,"children":530},{},[531,533,540],{"type":28,"value":532},"In general, 10x engineers are well-rounded ",{"type":22,"tag":221,"props":534,"children":537},{":target":317,"href":535,"rel":536},"https://en.wikipedia.org/wiki/T-shaped_skills",[225],[538],{"type":28,"value":539},"T-Shaped",{"type":28,"value":541}," professionals with their core expertise in software engineering. In addition to it, they amplify the effectiveness of their main skill with some complementary skills like people management, leadership, product strategy, architecture, and more. Doing so allows them to operate at a higher level of efficiency than a regular engineer making each contribution more impactful.",{"type":22,"tag":419,"props":543,"children":545},{"id":544},"self-sufficient",[546],{"type":28,"value":547},"Self-Sufficient",{"type":22,"tag":31,"props":549,"children":550},{},[551],{"type":28,"value":552},"A 10x-er is usually self-sufficient, doesn’t need hand-holding, and doesn’t need to be micromanaged. They enjoy the freedom of making their own decisions. Choosing what to work on and how to execute allows them to make a greater impact. People of this caliber always keep the big picture in mind allowing them to identify issues and fix them as they go. An issue may be in code, in the current process, people, methodology, etc. They are often curious about why things are the way they are. They’re constantly asking themselves if we can make things better than they are.",{"type":22,"tag":419,"props":554,"children":556},{"id":555},"architect-systems",[557],{"type":28,"value":558},"Architect Systems",{"type":22,"tag":31,"props":560,"children":561},{},[562],{"type":28,"value":563},"You can find 10x-ers spending most of their time building systems as opposed to executing the systems they built. This leads us to the next point.",{"type":22,"tag":419,"props":565,"children":567},{"id":566},"excited-for-a-challenge-bored-from-routine",[568],{"type":28,"value":569},"Excited For a Challenge, Bored from Routine",{"type":22,"tag":31,"props":571,"children":572},{},[573],{"type":28,"value":574},"Developing something new is exciting for them. On the other hand, repetitive tasks drain their energy and make them more disengaged. If you have a 10xer on your team, you’ll need to keep them engaged by throwing more challenges at them and perhaps moving them to the next project once the current project gets into the maintenance phase.",{"type":22,"tag":419,"props":576,"children":578},{"id":577},"lead-by-example",[579],{"type":28,"value":580},"Lead by Example",{"type":22,"tag":31,"props":582,"children":583},{},[584],{"type":28,"value":585},"10x-ers demonstrate their work often, make presentations and get input from their colleagues. They like putting together a proof of concept to see if it’s a fit for the current project. They often challenge the status quo, bringing some fresh perspective into the mix.",{"type":22,"tag":419,"props":587,"children":589},{"id":588},"always-hands-on",[590],{"type":28,"value":591},"Always Hands-On",{"type":22,"tag":31,"props":593,"children":594},{},[595],{"type":28,"value":596},"You rarely see a 10xer as a pure hands-off manager. They are always deeply involved in the process. They code, participate in architecture discussions, engaged with product managers and stakeholders while having fun doing it.",{"type":22,"tag":23,"props":598,"children":599},{"id":465},[600],{"type":28,"value":468},{"type":22,"tag":31,"props":602,"children":603},{},[604],{"type":28,"value":605},"10x engineers are a special breed of people with a set of complementary skills in addition to their strong core engineering fundamentals. They are self-sufficient self-starters, able to identify inefficiencies and opportunities. They execute on them while being hands-on and leading by example. On the other hand, they don’t like to perform the same procedure over and over again, they get bored quickly and need a challenge.",{"type":22,"tag":31,"props":607,"children":608},{},[609],{"type":28,"value":610},"The best use of a 10xer on your team is to rethink your current technology and processes, set up the best practices, and train the existing staff on it. Greenfield projects, modernization of the existing architecture, new product or feature development is something that excites them and keeps them motivated.",{"title":7,"searchDepth":232,"depth":232,"links":612},[613,614,621],{"id":25,"depth":232,"text":29},{"id":524,"depth":232,"text":527,"children":615},[616,617,618,619,620],{"id":544,"depth":494,"text":547},{"id":555,"depth":494,"text":558},{"id":566,"depth":494,"text":569},{"id":577,"depth":494,"text":580},{"id":588,"depth":494,"text":591},{"id":465,"depth":232,"text":468},"content:learn:5-qualities-of-a-10x-engineer.md","learn/5-qualities-of-a-10x-engineer.md",{"_path":625,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":626,"description":627,"draft":6,"tags":628,"related_content":629,"short_title":630,"header_one":630,"header_two":631,"header_three":7,"cta_header":632,"cta_button":7,"cta_href":7,"icon":633,"icons":634,"image_url":7,"body":635,"_type":241,"_id":828,"_source":243,"_file":829,"_extension":245},"/learn/5-rules-of-managing-technical-debt.how-to-keep-moving-fast-today-and-tomorrow","5 Rules of Managing Technical Debt: How to Keep Moving Fast Today and Tomorrow","In a technology organization, terms like technical debt, refactoring, or a hack are quite common to use. Knowing what technical debt is helps you work productively with software engineers. This post explains what technical debt is and how to manage it efficiently.",[11],[],"Technical debt","5 rules to manage it","Need some help working with legacy applications?","credit-card-multiple-outline",[],{"type":19,"children":636,"toc":816},[637,652,658,663,668,676,682,687,693,699,713,719,731,737,742,748,753,759,764,768,773,805],{"type":22,"tag":31,"props":638,"children":639},{},[640,642,650],{"type":28,"value":641},"In a technology organization, terms like ",{"type":22,"tag":221,"props":643,"children":647},{"href":644,":target":317,"rel":645,"title":646},"https://www.agilealliance.org/project-management-and-technical-debt/",[225],"Technical debt explanation",[648],{"type":28,"value":649},"technical debt",{"type":28,"value":651},", refactoring, or a hack are quite common to use. Knowing what technical debt is helps you work productively with software engineers. This post explains what technical debt is and how to manage it efficiently.",{"type":22,"tag":23,"props":653,"children":655},{"id":654},"what-is-technical-debt",[656],{"type":28,"value":657},"What is Technical Debt",{"type":22,"tag":31,"props":659,"children":660},{},[661],{"type":28,"value":662},"Technical debt is similar to credit card debt. You can spend some extra money now with a credit card. If you won’t pay it back shortly, you’ll be charged interest. If you don’t pay it off for a long time, the amount you owe increases drastically. This decreases your credit score which is hard to recover from.",{"type":22,"tag":31,"props":664,"children":665},{},[666],{"type":28,"value":667},"Taking on technical debt in software product development is very similar to it. In order to accomplish a certain feature faster in the short term, a developer can apply a hack. If the hack is not replaced with a well-made out solution, the code around it decays over time. In addition to it, the software is built on top of other software. We all use libraries and operating systems. Technologies change and the system needs maintenance updates as time goes by, even if there are no new features being developed. If maintenance updates are not addressed, it also increases your technical debt.",{"type":22,"tag":31,"props":669,"children":670},{},[671],{"type":22,"tag":348,"props":672,"children":675},{"alt":673,"src":674},"Credit Card Debt","https://images.rightbalance.io/uploads/credit_cards.jpeg",[],{"type":22,"tag":23,"props":677,"children":679},{"id":678},"why-taking-on-more-technical-debt-slows-you-down",[680],{"type":28,"value":681},"Why Taking on More Technical Debt Slows You Down",{"type":22,"tag":31,"props":683,"children":684},{},[685],{"type":28,"value":686},"As you apply more hacks, your future development gets slower, you have more bugs in the product, and you get closer to the point when you need to start over. I’ve seen several companies in the past abandoning and rewriting their entire application from scratch since they were not able to make meaningful progress anymore.",{"type":22,"tag":23,"props":688,"children":690},{"id":689},"how-to-manage-technical-debt",[691],{"type":28,"value":692},"How to Manage Technical Debt",{"type":22,"tag":419,"props":694,"children":696},{"id":695},"get-on-the-same-page-with-engineers-and-stakeholders",[697],{"type":28,"value":698},"Get on the same page with engineers and stakeholders",{"type":22,"tag":31,"props":700,"children":701},{},[702,704,711],{"type":28,"value":703},"It’s crucially important for everyone on your engineering team and for stakeholders to understand the implications of endlessly taking on technical debt. Set up and maintain high code standards and ",{"type":22,"tag":221,"props":705,"children":708},{"href":706,"title":707},"/solutions/automated-tests-get-dividends-with-every-test-run","Automated testing solution",[709],{"type":28,"value":710},"high test coverage",{"type":28,"value":712}," on your engineering team. Make sure that stakeholders understand the technical debt concept and how it affects the speed and quality of the product. Aligning everyone’s expectations goes a long way.",{"type":22,"tag":419,"props":714,"children":716},{"id":715},"pay-it-off-right-after-you-introduced-it",[717],{"type":28,"value":718},"Pay it off right after you introduced it",{"type":22,"tag":31,"props":720,"children":721},{},[722,724,729],{"type":28,"value":723},"Every system has technical debt. Sometimes we need to focus on short-term goals. In this case, it's ok to introduce technical debt ",{"type":22,"tag":267,"props":725,"children":726},{},[727],{"type":28,"value":728},"if and only if",{"type":28,"value":730}," you can pay it off right after you introduced it. The companies that ignore this important fact and continue to what seems like “moving quickly” will eventually slow down to a halt.",{"type":22,"tag":419,"props":732,"children":734},{"id":733},"revisit-your-architecture-regularly",[735],{"type":28,"value":736},"Revisit your architecture regularly",{"type":22,"tag":31,"props":738,"children":739},{},[740],{"type":28,"value":741},"What worked several months ago will not necessarily work now. Especially in startups where businesses grow and change fast, it’s important to revisit decisions made in the past. Take your time to refactor (or better yet, delete) code that no longer makes sense in order to accomplish the needs of today. Bring it up with your team as a part of your retrospectives and make action items to make sure it gets done.",{"type":22,"tag":419,"props":743,"children":745},{"id":744},"pay-off-big-debt-incrementally",[746],{"type":28,"value":747},"Pay off big debt incrementally",{"type":22,"tag":31,"props":749,"children":750},{},[751],{"type":28,"value":752},"When dealing with legacy systems, it may be too big of a task for one engineer to refactor it. In this case, make a plan on how you want it to look and change it one piece at a time. It’s important to maintain the vision of what you want this legacy system to be at the end.",{"type":22,"tag":419,"props":754,"children":756},{"id":755},"leave-the-codebase-in-a-better-place-than-when-you-started",[757],{"type":28,"value":758},"Leave the codebase in a better place than when you started",{"type":22,"tag":31,"props":760,"children":761},{},[762],{"type":28,"value":763},"All that matters is if everyone makes incremental progress towards making the codebase better. It’s impractical to stop feature development to get rid of all technical debt. Maintaining the right balance between feature delivery and paying off technical debt is key.",{"type":22,"tag":23,"props":765,"children":766},{"id":465},[767],{"type":28,"value":468},{"type":22,"tag":31,"props":769,"children":770},{},[771],{"type":28,"value":772},"Every system out there has technical debt. Managing it effectively is a skill that can be learned. Technical debt is a risk. It's best to avoid risk and sometimes you have to take it. As long as the team is disciplined about paying it off, it's ok. At the end of the day, we all want to ship quality product, and managing technical debt is a part of it.",{"type":22,"tag":31,"props":774,"children":775},{},[776,781,783,793,795],{"type":22,"tag":267,"props":777,"children":778},{},[779],{"type":28,"value":780},"Photos are provided by",{"type":28,"value":782}," ",{"type":22,"tag":221,"props":784,"children":787},{"href":785,":target":359,"rel":786},"https://www.flickr.com/photos/p_valdivieso/",[225],[788],{"type":22,"tag":267,"props":789,"children":790},{},[791],{"type":28,"value":792},"p_valdivieso",{"type":28,"value":794}," _and_ ",{"type":22,"tag":221,"props":796,"children":799},{"href":797,":target":317,"rel":798},"https://www.flickr.com/photos/smemon",[225],[800],{"type":22,"tag":267,"props":801,"children":802},{},[803],{"type":28,"value":804},"smemon",{"type":22,"tag":31,"props":806,"children":807},{},[808,809],{"type":28,"value":478},{"type":22,"tag":221,"props":810,"children":814},{"href":811,":target":317,"rel":812,"title":813},"https://alextamoykin.com/5-rules-of-managing-technical-debt-how-to-keep-moving-fast-today-and-tomorrow",[225],"alextamoykin.com backlink",[815],{"type":28,"value":486},{"title":7,"searchDepth":232,"depth":232,"links":817},[818,819,820,827],{"id":654,"depth":232,"text":657},{"id":678,"depth":232,"text":681},{"id":689,"depth":232,"text":692,"children":821},[822,823,824,825,826],{"id":695,"depth":494,"text":698},{"id":715,"depth":494,"text":718},{"id":733,"depth":494,"text":736},{"id":744,"depth":494,"text":747},{"id":755,"depth":494,"text":758},{"id":465,"depth":232,"text":468},"content:learn:5-rules-of-managing-technical-debt.how-to-keep-moving-fast-today-and-tomorrow.md","learn/5-rules-of-managing-technical-debt.how-to-keep-moving-fast-today-and-tomorrow.md",{"_path":831,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":832,"description":7,"draft":6,"tags":833,"related_content":834,"short_title":835,"header_one":836,"header_two":837,"header_three":7,"cta_header":838,"cta_button":7,"cta_href":7,"icon":839,"icons":840,"image_url":7,"body":841,"_type":241,"_id":1132,"_source":243,"_file":1133,"_extension":245},"/learn/build-for-scale-build-to-last-10-steps-to-build-a-long-lasting-product","Build For Scale, Build to Last: 10 Steps to Build a Long Lasting Product",[11,505,12],[],"Build For Scale, Build to Last","Build For Scale","Build to Last","Want to build something impactful?","trending-up",[],{"type":19,"children":842,"toc":1118},[843,849,854,885,890,896,910,916,921,927,932,938,943,949,954,960,983,1006,1012,1053,1059,1064,1070,1093,1099,1104,1108,1113],{"type":22,"tag":23,"props":844,"children":846},{"id":845},"building-things-right-makes-everything-else-easier",[847],{"type":28,"value":848},"Building things right makes everything else easier",{"type":22,"tag":31,"props":850,"children":851},{},[852],{"type":28,"value":853},"It's very tempting to build something really quick, ship it out there, and start growing quickly. Sacrificing some quality for speed may make sense while building a prototype at the idea validation phase. That said, once the idea is validated, the product needs to be properly architected for scale. The reason behind it is that you need to set up your product architecture for future growth. If your product is not built for scale in mind, and you try to scale it, your technology will eventually stop supporting the increased traffic. As a consequence, your code will be convoluted to be able to make future changes rapidly, the team morale will go down which can lead to losing your core team members. Time and time again we’ve seen companies not architecting things properly at the beginning. Then needing to hire more engineers later to support an unscalable system. Long story short, if you build your product right in the beginning, scaling it won’t be a problem. Your cloud infrastructure bill will be low and you won’t need that many engineers to support it and grow it.",{"type":22,"tag":31,"props":855,"children":856},{},[857,859,866,868,875,877,883],{"type":28,"value":858},"A classic example of not building for scale is starting with a ",{"type":22,"tag":221,"props":860,"children":864},{"href":861,"rel":862,":target":317,"title":863},"https://en.wikipedia.org/wiki/Monolithic_system",[225],"monolithic architecture",[865],{"type":28,"value":863},{"type":28,"value":867},", putting all your code in a single application, then taking it too far to later realize that you need to rebuild the entire product. A better way is to start with the ",{"type":22,"tag":221,"props":869,"children":873},{"href":870,"rel":871,":target":317,"title":872},"https://en.wikipedia.org/wiki/Microservices#:~:text=",[225],"microservices architecture",[874],{"type":28,"value":872},{"type":28,"value":876}," from the beginning (or at least pivot into microservices as the application gets large). This way you develop your software in multiple modules with a clear set of responsibilities. This approach is a lot more manageable and more scalable because you can scale each module independently. Here is a link to the ",{"type":22,"tag":221,"props":878,"children":881},{"href":879,"title":880},"/solutions/serverless-software-development-focus-on-features-instead-of-the-infrastructure","Serverless Microservices solution",[882],{"type":28,"value":880},{"type":28,"value":884}," going deeper on the topic.",{"type":22,"tag":31,"props":886,"children":887},{},[888],{"type":28,"value":889},"In the meantime, let’s go over the 10 ways to build a long-lasting product:",{"type":22,"tag":23,"props":891,"children":893},{"id":892},"_1-achieve-company-alignment",[894],{"type":28,"value":895},"1. Achieve Company Alignment",{"type":22,"tag":31,"props":897,"children":898},{},[899,901,908],{"type":28,"value":900},"It’s important to have a buy-in from the whole organization that rushing through and shipping low-quality product is counterproductive. Each shortcut we take will add on to our technical debt which needs to be paid off. On the other hand, there should always be urgency around shipping because it’s easy to fall into a trap of building a perfect product for a long time. The best code is worthless if it’s not shipped and running in production without any issues. It’s all about finding ",{"type":22,"tag":221,"props":902,"children":905},{"href":903,"rel":904},"https://rightbalance.io",[225],[906],{"type":28,"value":907},"the right balance",{"type":28,"value":909}," (no pun intended).",{"type":22,"tag":23,"props":911,"children":913},{"id":912},"_2-minimize-system-downtime",[914],{"type":28,"value":915},"2. Minimize System Downtime",{"type":22,"tag":31,"props":917,"children":918},{},[919],{"type":28,"value":920},"As software engineers, we should strive to build computer systems that are always up and serving our customers without our manual intervention. Why? Because it’s in the nature of our profession and in the core strength of the whole of humankind to build systems that work without requiring our presence. While developing a software component, engineers should always be focused on developing it in a way so it can deliver customer value and recover gracefully from an error situation. Which involves performing validation on the incoming data, making sure there are self-healing automated systems in place. And if the error happens, it’s clear what to do, appropriate people are notified for taking care of the issue.",{"type":22,"tag":23,"props":922,"children":924},{"id":923},"_3-minimize-maintenance",[925],{"type":28,"value":926},"3. Minimize Maintenance",{"type":22,"tag":31,"props":928,"children":929},{},[930],{"type":28,"value":931},"Doing things right is hard and it takes time. However, if you commit to doing things right, then eventually, doing things right becomes second nature. In addition to it, doing things right becomes easier the more you do it. So, if there is a question when you should start doing things right, the answer is now. It’s very easy to fall into a trap of introducing a couple of manual steps in your deployment or some SQL you need to run sometimes to clean up your data. The goal is to reduce the number of manual steps engineers need to do instead of adding more manual steps. Each maintenance step you add may not seem like a lot. It’s a slippery slope that turns software engineers into maintenance engineers. We’ve seen the entire engineering team not producing any more new code and just doing some manual tasks to keep the product running. Unfortunately, it’s quite common, especially in large organizations. All high maintenance systems start with just one manual step you leave behind.",{"type":22,"tag":23,"props":933,"children":935},{"id":934},"_4-automate-manual-work",[936],{"type":28,"value":937},"4. Automate Manual Work",{"type":22,"tag":31,"props":939,"children":940},{},[941],{"type":28,"value":942},"The best use of a software developer’s time is to create systems that deliver value. Coding is hard and there are only so many hours in a day. So it’s best to apply our coding skills towards automating some manual work we otherwise need to do. Another issue with manual work is that it requires a context switch. Because coding requires you to deal with a lot of variables, it takes some time to get into the context (what some people call getting into the zone). Switching to a manual task, like updating some records in the database, requires you to switch your context. Then once the task is done, coming back to coding will take some time again because you need to get into another, more complicated context of coding. If you have several manual tasks spread throughout the day, you’ll find yourself not producing any meaningful code by the end of the day. That said, doing some manual work once in a while is unavoidable. The solution is to strive to minimize it and automate it away instead of adding to it.",{"type":22,"tag":23,"props":944,"children":946},{"id":945},"_5-keep-your-hand-on-the-pulse-with-alerting-and-monitoring",[947],{"type":28,"value":948},"5. Keep your hand on the pulse with Alerting and Monitoring",{"type":22,"tag":31,"props":950,"children":951},{},[952],{"type":28,"value":953},"Each microservice or a client application has to have some alerting and monitoring component before going live. Your component may work on your local machine or even in the hands of a QA person. Once it goes live, the only way to know if it works as expected after you deploy your changes is to have some comprehensive alerting and monitoring. If an error happens, it should be sent to email/text/slack/PagerDuty or anywhere it can be seen and acted upon. The goal of it is to not create more distractions or more manual work, but rather to find if we missed something that should be added as a feature or an improvement to the product. As long as you keep on improving and refactoring your system, you’ll one day come to a place where things just work, always.",{"type":22,"tag":23,"props":955,"children":957},{"id":956},"_6-measure-and-analyze",[958],{"type":28,"value":959},"6. Measure and Analyze",{"type":22,"tag":961,"props":962,"children":963},"blockquote",{},[964,972],{"type":22,"tag":31,"props":965,"children":966},{},[967],{"type":22,"tag":267,"props":968,"children":969},{},[970],{"type":28,"value":971},"If you can’t measure it, you can’t improve it.",{"type":22,"tag":162,"props":973,"children":974},{},[975],{"type":22,"tag":166,"props":976,"children":977},{},[978],{"type":22,"tag":267,"props":979,"children":980},{},[981],{"type":28,"value":982},"Peter Drucker",{"type":22,"tag":31,"props":984,"children":985},{},[986,988,995,997,1004],{"type":28,"value":987},"Trusting your gut is important, that said, business decisions need to be made based on some real data. Our recommendation is to target a specific set of metrics for the product, collect the data, and monitor the metrics closely with some regular analysis. Some of the metrics can be collected from the client application like button clicks, page views, etc. And some need to be collected from the back end. The best solution is to have a proper ",{"type":22,"tag":221,"props":989,"children":992},{"href":990,"rel":991,":target":317},"https://en.wikipedia.org/wiki/Data_warehouse",[225],[993],{"type":28,"value":994},"data warehouse",{"type":28,"value":996}," or ",{"type":22,"tag":221,"props":998,"children":1001},{"href":999,"rel":1000,":target":317},"https://en.wikipedia.org/wiki/Data_lake",[225],[1002],{"type":28,"value":1003},"data lake",{"type":28,"value":1005}," where all sources of data come together in a structured format you can query. This allows you to connect the dots and build conversion funnels based on the rich set of data.",{"type":22,"tag":23,"props":1007,"children":1009},{"id":1008},"_7-document-instead-of-keeping-things-in-your-head",[1010],{"type":28,"value":1011},"7. Document instead of Keeping Things in Your Head",{"type":22,"tag":31,"props":1013,"children":1014},{},[1015,1017,1024,1026,1033,1035,1042,1044,1051],{"type":28,"value":1016},"Having the system knowledge only in someone's head is risky. It decreases your ",{"type":22,"tag":221,"props":1018,"children":1021},{"href":1019,"rel":1020,":target":317},"https://en.wikipedia.org/wiki/Bus_factor",[225],[1022],{"type":28,"value":1023},"bus factor",{"type":28,"value":1025},". If the knowledge is spread out then having to talk to multiple people to understand how the system works is inefficient. It also slows down your team velocity in the long run. The solution to this problem is simple. You choose your documentation tool (",{"type":22,"tag":221,"props":1027,"children":1030},{"href":1028,"rel":1029,":target":317},"http://quip.com",[225],[1031],{"type":28,"value":1032},"Quip",{"type":28,"value":1034},", ",{"type":22,"tag":221,"props":1036,"children":1039},{"href":1037,"rel":1038,":target":317},"https://www.atlassian.com/software/confluence",[225],[1040],{"type":28,"value":1041},"Confluence",{"type":28,"value":1043},", or even ",{"type":22,"tag":221,"props":1045,"children":1048},{"href":1046,"rel":1047,":target":317},"https://docs.google.com/",[225],[1049],{"type":28,"value":1050},"Google Docs",{"type":28,"value":1052}," work just fine) and you make it a good practice to document how each part of the system works. Once the modification to the system is made, the documentation needs to be updated too. This way, there is a consistent process for ramping up new developers on any part of your system. New developers just read the existing docs and make the updates as necessary.",{"type":22,"tag":23,"props":1054,"children":1056},{"id":1055},"_8-minimize-management-overhead",[1057],{"type":28,"value":1058},"8. Minimize Management Overhead",{"type":22,"tag":31,"props":1060,"children":1061},{},[1062],{"type":28,"value":1063},"It’s amazing to see how a lot of open source projects streamline the process for reporting issues, implementing the fixes, and rolling out new releases. The same principles should apply within your organization too. The key to minimizing management overhead is to have a solid feature delivery process (preferably Agile) that everyone believes and follows. Things like introducing more changes mid-sprint create additional scope-related conversations, change of context, sometimes misaligned expectations. It takes energy to address them, and this energy could be spent on delivering the functionality by sticking to the plan.",{"type":22,"tag":23,"props":1065,"children":1067},{"id":1066},"_9-maximize-maker-time",[1068],{"type":28,"value":1069},"9. Maximize Maker Time",{"type":22,"tag":31,"props":1071,"children":1072},{},[1073,1075,1082,1084,1091],{"type":28,"value":1074},"Maker’s Schedule, Manager’s Schedule article from ",{"type":22,"tag":221,"props":1076,"children":1079},{"href":1077,"rel":1078,":target":317},"https://en.wikipedia.org/wiki/Paul_Graham_(programmer)",[225],[1080],{"type":28,"value":1081},"Paul Graham",{"type":28,"value":1083},", one of the founders of ",{"type":22,"tag":221,"props":1085,"children":1088},{"href":1086,"rel":1087,":target":317},"https://www.ycombinator.com/",[225],[1089],{"type":28,"value":1090},"YCombinator",{"type":28,"value":1092}," describes the difference between how the maker operates and the manager operates. It’s important to realize that your product is built by makers. Software engineering is hard and it consumes a lot of brain energy. To make a great product, it takes some time to get into the zone. And if a developer gets constantly dragged into some side conversations and meetings, getting into the zone is almost impossible. Maximizing maker time, removing the meetings and distractions from your developers is key to having a high velocity on your team.",{"type":22,"tag":23,"props":1094,"children":1096},{"id":1095},"_10-have-fun",[1097],{"type":28,"value":1098},"10. Have Fun!",{"type":22,"tag":31,"props":1100,"children":1101},{},[1102],{"type":28,"value":1103},"Software engineering is a creative process. Any creative process requires having fun, having high energy fueled by enjoying what you’re doing. Just cranking through some boring work isn’t going to get your team very far in the long run. Doing things so it’s exciting, using the latest technologies, solving problems in new and creative ways is what makes the products great. If things get boring, think about how you can spice things up using the new tech, features, or product opportunities. You’ll get a highly motivated team having a lot of fun!",{"type":22,"tag":23,"props":1105,"children":1106},{"id":465},[1107],{"type":28,"value":468},{"type":22,"tag":31,"props":1109,"children":1110},{},[1111],{"type":28,"value":1112},"There is no time to waste building your product. Everything you build today can last decades and affect millions of people. When the basics are done right, scaling your product is easy. It lowers your maintenance costs so you can focus on future growth and development. Doing so requires some effort upfront which is totally worth it.",{"type":22,"tag":31,"props":1114,"children":1115},{},[1116],{"type":28,"value":1117},"So what are you waiting for? Go ahead and build something that scales and lasts! 🙌",{"title":7,"searchDepth":232,"depth":232,"links":1119},[1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131],{"id":845,"depth":232,"text":848},{"id":892,"depth":232,"text":895},{"id":912,"depth":232,"text":915},{"id":923,"depth":232,"text":926},{"id":934,"depth":232,"text":937},{"id":945,"depth":232,"text":948},{"id":956,"depth":232,"text":959},{"id":1008,"depth":232,"text":1011},{"id":1055,"depth":232,"text":1058},{"id":1066,"depth":232,"text":1069},{"id":1095,"depth":232,"text":1098},{"id":465,"depth":232,"text":468},"content:learn:build-for-scale-build-to-last-10-steps-to-build-a-long-lasting-product.md","learn/build-for-scale-build-to-last-10-steps-to-build-a-long-lasting-product.md",{"_path":1135,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1136,"description":1137,"tags":1138,"related_content":1139,"short_title":1140,"header_two":1141,"header_three":1142,"icon":1143,"cta_header":1144,"body":1145,"_type":241,"_id":1296,"_source":243,"_file":1297,"_extension":245},"/learn/do-you-have-to-become-a-manager-to-advance-as-a-software-engineer","Do You Have To Become a Manager To Advance As a Software Engineer?","The short answer is no. Some people say you have to become a manager in order to advance in your career as a software engineer.\nThis is not necessarily true. It depends on what company your work for, the type of work you do, and your personal preference.\nAfter reading this post, you’ll know the path to advance as a software engineer regardless of becoming a manager or not.\nHiring the best people is at the core of every successful organization. It doesn't matter if the person is a full-time\nemployee or a contractor. If you know the person is the best fit for your product and the team, hire them.\nAt the end of the day, people are your most important asset.",[11],[],"Have to become a manager?","Do you have to become an engineering","Manager","account-tie","Interested in growing your career long term?",{"type":19,"children":1146,"toc":1291},[1147,1151,1157,1162,1168,1173,1181,1186,1191,1209,1231,1236,1251,1265,1270,1276,1281],{"type":22,"tag":31,"props":1148,"children":1149},{},[1150],{"type":28,"value":1137},{"type":22,"tag":23,"props":1152,"children":1154},{"id":1153},"why-advancing-in-your-career-benefits-everyone",[1155],{"type":28,"value":1156},"Why advancing in your career benefits everyone",{"type":22,"tag":31,"props":1158,"children":1159},{},[1160],{"type":28,"value":1161},"When you grow, you’re able to deliver a better quality product, your company gets better as a result of that.\nIn addition to it, you solve harder challenges, make more money, have more impact at the company, and it’s more fun!",{"type":22,"tag":23,"props":1163,"children":1165},{"id":1164},"how-to-advance-your-career",[1166],{"type":28,"value":1167},"How to advance your career",{"type":22,"tag":31,"props":1169,"children":1170},{},[1171],{"type":28,"value":1172},"In technology companies (i.e. companies where technology plays a major part in product development) engineering\nmanagement recognizes the value of growing their engineers regardless of them becoming managers or not.\nHere comes a typical engineering ladder:",{"type":22,"tag":31,"props":1174,"children":1175},{},[1176],{"type":22,"tag":348,"props":1177,"children":1180},{"alt":1178,"src":1179},"Engineering ladder","https://images.rightbalance.io/uploads/engineering_ladder_diagram-2.png",[],{"type":22,"tag":31,"props":1182,"children":1183},{},[1184],{"type":28,"value":1185},"Different companies have different levels and ladders. Underlying principals stay the same.\nThe goal of the ladder is to provide a framework for engineers to grow within the company.",{"type":22,"tag":31,"props":1187,"children":1188},{},[1189],{"type":28,"value":1190},"As you can see, all engineers start from Software Engineer I and make it's way to Staff Software Engineer.\nA Staff Software engineer demonstrates a great level of individual contributions in addition to leading moderate size\nprojects and teams. At this point, the engineer has a choice of focusing on management skills or technical skills.\nIf the engineer decides to take the management track, the engineer becomes an Engineering Manager,\nthen a Director of Engineering, VP of Engineering, and CTO. All management related roles include growing the team,\nhiring, people management, resource planning, and so on.",{"type":22,"tag":31,"props":1192,"children":1193},{},[1194,1203],{"type":22,"tag":221,"props":1195,"children":1197},{"target":359,"href":1196},"https://www.amazon.com/gp/product/1594484805/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1594484805&linkCode=as2&tag=howtoprogramb-20&linkId=40f71fdebcea2a56f8f674b048a6c765",[1198],{"type":22,"tag":348,"props":1199,"children":1202},{"border":1200,"src":1201},0,"//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=1594484805&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=howtoprogramb-20",[],{"type":22,"tag":348,"props":1204,"children":1208},{"src":1205,"width":1206,"height":1206,"border":1200,"alt":7,"style":1207},"//ir-na.amazon-adsystem.com/e/ir?t=howtoprogramb-20&l=am2&o=1&a=1594484805",1,"border:none !important; margin:0px !important;",[],{"type":22,"tag":31,"props":1210,"children":1211},{},[1212,1214,1221,1223,1230],{"type":28,"value":1213},"One of the basic principles of people management is keeping the team motivated.\nWe highly recommend reading the book called ",{"type":22,"tag":221,"props":1215,"children":1218},{":target":317,"href":1216,"rel":1217},"https://www.amazon.com/gp/product/1594484805/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=howtoprogramb-20&creative=9325&linkCode=as2&creativeASIN=1594484805&linkId=d1dced0c8f563243a3ff97864a66a382",[225],[1219],{"type":28,"value":1220},"Drive by Daniel Pink.",{"type":28,"value":1222}," It's a great book talking about what drives us as human beings. You want to make sure to provide people on your team with autonomy, mastery, and purpose to keep your teammates motivated. It goes over the reasons behind it with some case studies and some suggestions on implementing it at your workplace. Another good read is the all-time classic called ",{"type":22,"tag":221,"props":1224,"children":1227},{":target":317,"href":1225,"rel":1226},"https://www.amazon.com/gp/product/0321934113/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=howtoprogramb-20&creative=9325&linkCode=as2&creativeASIN=0321934113&linkId=df3daf1e07ef06b56ad51bbbaa32511a",[225],[1228],{"type":28,"value":1229},"Peopleware",{"type":28,"value":273},{"type":22,"tag":31,"props":1232,"children":1233},{},[1234],{"type":28,"value":1235},"Alternatively, the engineer has a choice of staying on the technical track to become a Principal Software Engineer\nand then a Senior Principal Software Engineer. In this role, the engineer makes technological and architectural\ncontributions across the entire company and improves engineering performance as a result of that.",{"type":22,"tag":31,"props":1237,"children":1238},{},[1239,1247],{"type":22,"tag":221,"props":1240,"children":1242},{"target":359,"href":1241},"https://www.amazon.com/gp/product/0134032802/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0134032802&linkCode=as2&tag=howtoprogramb-20&linkId=993a83c211014757e438477ed1087438",[1243],{"type":22,"tag":348,"props":1244,"children":1246},{"border":1200,"src":1245},"//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=0134032802&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=howtoprogramb-20",[],{"type":22,"tag":348,"props":1248,"children":1250},{"src":1249,"width":1206,"height":1206,"border":1200,"alt":7,"style":1207},"//ir-na.amazon-adsystem.com/e/ir?t=howtoprogramb-20&l=am2&o=1&a=0134032802",[],{"type":22,"tag":31,"props":1252,"children":1253},{},[1254,1256,1263],{"type":28,"value":1255},"It's important to note that a Principal Software Engineer also has to have some managerial skills since the impact\nof this person's work spans across the entire organization. There are numerous books on the subject.\nour favorite is ",{"type":22,"tag":221,"props":1257,"children":1260},{":target":317,"href":1258,"rel":1259},"https://www.amazon.com/gp/product/0134032802/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=howtoprogramb-20&creative=9325&linkCode=as2&creativeASIN=0134032802&linkId=46a5776c76ddec05de77943cb1798fba",[225],[1261],{"type":28,"value":1262},"The Art of Scalability",{"type":28,"value":1264},".\nIt starts by describing different functions of the technical organization, how they are all connected together,\nand how it connects with technology. It's interesting to note that even though the technology aspect is quite hard\nto implement, it's connecting technology with business functions of the organization is what gives the best results.",{"type":22,"tag":31,"props":1266,"children":1267},{},[1268],{"type":28,"value":1269},"No matter which way you go, as long as you grow within the company, you'll have more impact, bring more value,\nand you'll get paid more. At the end of the days, it's just a personal preference. If you like coding and you're not\na big fan of people management, you can safely stick to the technical track. If you're passionate about hiring,\nmentoring, and people management then talk to your manager about getting on the management track when the right time comes.",{"type":22,"tag":23,"props":1271,"children":1273},{"id":1272},"finishing-thoughts",[1274],{"type":28,"value":1275},"Finishing thoughts",{"type":22,"tag":31,"props":1277,"children":1278},{},[1279],{"type":28,"value":1280},"We spend so much of our life working on products. You want to make sure you’re happy at your workplace.\nTalk to your manager about your long-term career goals and plans. Everybody wins when you grow. Work hard, have fun\nand the right things will happen.",{"type":22,"tag":31,"props":1282,"children":1283},{},[1284,1285],{"type":28,"value":478},{"type":22,"tag":221,"props":1286,"children":1289},{":target":317,"href":1287,"rel":1288},"https://alextamoykin.com/do-you-have-to-become-a-manager-to-advance-as-a-software-engineer",[225],[1290],{"type":28,"value":486},{"title":7,"searchDepth":232,"depth":232,"links":1292},[1293,1294,1295],{"id":1153,"depth":232,"text":1156},{"id":1164,"depth":232,"text":1167},{"id":1272,"depth":232,"text":1275},"content:learn:do-you-have-to-become-a-manager-to-advance-as-a-software-engineer.md","learn/do-you-have-to-become-a-manager-to-advance-as-a-software-engineer.md",{"_path":1299,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1300,"description":7,"tags":1301,"related_content":1302,"short_title":1303,"header_one":1303,"icon":1304,"cta_header":1305,"body":1306,"_type":241,"_id":1452,"_source":243,"_file":1453,"_extension":245},"/learn/how-to-hire-best-people","How to Hire Best People",[10,11],[],"Hire Best People","trophy","Need help hiring software engineers?",{"type":19,"children":1307,"toc":1441},[1308,1324,1329,1335,1340,1346,1351,1357,1362,1368,1382,1388,1393,1398,1404,1409,1414,1419,1425,1430,1436],{"type":22,"tag":961,"props":1309,"children":1310},{},[1311,1316],{"type":22,"tag":31,"props":1312,"children":1313},{},[1314],{"type":28,"value":1315},"It doesn't make sense to hire smart people and then tell them what to do; we hire smart people so they can tell us what to do.",{"type":22,"tag":162,"props":1317,"children":1318},{},[1319],{"type":22,"tag":166,"props":1320,"children":1321},{},[1322],{"type":28,"value":1323},"Steve Jobs",{"type":22,"tag":31,"props":1325,"children":1326},{},[1327],{"type":28,"value":1328},"Hiring the best people is at the core of every successful organization. It doesn't matter if the person is a full-time\nemployee or a contractor. If you know the person is the best fit for your product and the team, hire them.\nAt the end of the day, people are your most important asset.",{"type":22,"tag":23,"props":1330,"children":1332},{"id":1331},"where-to-find-the-best-people",[1333],{"type":28,"value":1334},"Where to find the best people",{"type":22,"tag":31,"props":1336,"children":1337},{},[1338],{"type":28,"value":1339},"Your personal network is a great source of quality candidates. If you know some A-level players,\nand you worked with them in the past, it's the best it can be. You already know they're great.\nYou and your friend will make a great team and it'll be a fun experience.\nYou may even get a referral bonus if your company has a referral program.",{"type":22,"tag":419,"props":1341,"children":1343},{"id":1342},"referrals",[1344],{"type":28,"value":1345},"Referrals",{"type":22,"tag":31,"props":1347,"children":1348},{},[1349],{"type":28,"value":1350},"Best people bring more best people. A-players want to constantly evolve, and they naturally want to work with people\nbetter than them. Especially if the team members have some complementary skills. They learn from each other and become\nbetter as a team where 1+1 = 3. On the opposite side, B level people bring C level people and it keeps going downhill.\nThe reason behind it is because people who are not striving for excellence don't have the burning desire to be the best.\nThey are ok where they are now. So bringing people who are better than them may feel as a thread.\nThe point is, hiring the A players pays off big time.",{"type":22,"tag":419,"props":1352,"children":1354},{"id":1353},"recruiters",[1355],{"type":28,"value":1356},"Recruiters",{"type":22,"tag":31,"props":1358,"children":1359},{},[1360],{"type":28,"value":1361},"A great recruiter is worth it. That said, due to a low barrier to entry, there is a lot of inexperienced recruiters out\nthere, so make sure you’re working with an A-level recruiter. Recruiters find you a software developer on a full time or\non a contract basis matching the skillset you’re looking for. Be prepared to do a thorough vetting of technical skills\nas the majority of the recruiters aren’t technical. Most of the recruiters in the US work on a commission basis ranging\nanywhere between 15% to 25% of the annual salary of the hired employee as a one-tme payment. Which is one of the biggest\ndisadvantages of using a recruiter, it’s costly. If the candidate doesn’t work out, most of the recruiters find\na replacement at no cost. And if you’re in a hurry to find some people, a great recruiter can save you a lot of time\nby bringing you the great candidates who are available now.",{"type":22,"tag":419,"props":1363,"children":1365},{"id":1364},"diy-search",[1366],{"type":28,"value":1367},"DIY Search",{"type":22,"tag":31,"props":1369,"children":1370},{},[1371,1373,1380],{"type":28,"value":1372},"If you’re on the budget, or you would like to be involved in the forefront of the search, you can do it yourself.\nJust go on ",{"type":22,"tag":221,"props":1374,"children":1377},{":target":317,"href":1375,"rel":1376},"https://linkedin.com",[225],[1378],{"type":28,"value":1379},"LinkedIn",{"type":28,"value":1381},", start searching for people with the skills you’re looking for in your\ntarget region. Once you found them, connect with them and start hitting them up with a message describing who you’re\nlooking for to see if there is any interest. People out there are open to new opportunities at different times so you\nnever know who responds to your message. If you need to fill a role or two and you have a lot of time,\nthis could be a great option. Worth noting that this method takes a lot of effort, a lot of rejections, and ghosting.\nHigh profile developers get bombarded with a lot of similar messages and get overwhelmed quickly.",{"type":22,"tag":419,"props":1383,"children":1385},{"id":1384},"contractors",[1386],{"type":28,"value":1387},"Contractors",{"type":22,"tag":31,"props":1389,"children":1390},{},[1391],{"type":28,"value":1392},"The best part about working with a solid contracting firm is that they most likely already have some resources\navailable to start. If they don’t at the moment, some good reputable firms can hire new people very fast.\nContractors are usually properly trained. Each contractor comes with a manager, managing the performance,\nand helping with roadblocks as they arise. Contractors are performance-oriented and come with “batteries included”.\nEach contractor comes with their equipment, health insurance, and they pay 100% of their taxes.\nWhereas if you hire a full-time employee you’ll need to provide them with some equipment, pay some portion of their\ntaxes and most likely a portion of the health insurance, paid leave, sick days, etc.",{"type":22,"tag":31,"props":1394,"children":1395},{},[1396],{"type":28,"value":1397},"The only issue with contractors is it’s a hit and miss. Do your research first and make sure the firm is reputable.\nPast clients are happy and the staff if skilled. There are a lot of firms out there, some of them are great,\nsome of them aren’t and some of them are just a disaster. That being said, once you find a good firm, this engagement\nwill form a long-lasting relationship for you in all your future endeavors.",{"type":22,"tag":23,"props":1399,"children":1401},{"id":1400},"interview",[1402],{"type":28,"value":1403},"Interview",{"type":22,"tag":31,"props":1405,"children":1406},{},[1407],{"type":28,"value":1408},"Different companies interview full-time employee candidates differently. In a nutshell, each interview process consists\nof a phone screen which can involve some technical questions or a short coding session. Once the phone screen is\ncomplete, the candidate meets the team. There are usually several meetings with the members from different parts of\nthe team to have some objective feedback coming from different people. Once the candidate finishes the interview,\nthe team decides on the candidate. Which involves either moving forward with a job offer or passing on the candidate\nproviding valuable feedback.",{"type":22,"tag":31,"props":1410,"children":1411},{},[1412],{"type":28,"value":1413},"Worth noting that it’s tempting to delay the final decision to get more information from some additional interviewer.\nThe reality is you get no new information after you team’s interview. No need to waste candidate’s time and your time.\nIt’s best to come to a decision on the candidate as soon as possible. On a related note, candidates usually interview\nwith multiple companies at the same time. Good people get multiple offers (sometimes from large companies like Amazons\nand Googles of the world) so it’s important to move quickly, get your offer in first, and close.",{"type":22,"tag":31,"props":1415,"children":1416},{},[1417],{"type":28,"value":1418},"In case of hiring a contractor, you may still do a technical interview to make sure the person meets your expectations.\nThat said, the interview doesn’t have to be as comprehensive as the FTE interview. If you work with a reputable\ncontracting firm, the firm already does a lot of the heavy screening for you. You can rely on the developer profile\nprovided confirming on your end it’s the right fit for your team.",{"type":22,"tag":23,"props":1420,"children":1422},{"id":1421},"hire",[1423],{"type":28,"value":1424},"Hire",{"type":22,"tag":31,"props":1426,"children":1427},{},[1428],{"type":28,"value":1429},"You found, interviewed, and are ready to hire a person. It’s a great match. You and your team are excited to move forward.\nNow it’s time to seal the deal and get to work. If you hire a full-time employee, start with a job offer.\nWhich can be sent as an email. There might be some going back and forth about the terms of the arrangement\n(salary, stock options, etc). Once the terms are clear, the candidate accepts or rejects your job offer.\nThe job market for technology workers is hot. Make sure you have a strong offer. Give the candidate some time to think\nthrough it and to give you a final answer. If you work with a contracting firm to secure a new candidate,\nyour Account Executive will handle all negotiations, candidate followup, closing, and contract signing.",{"type":22,"tag":23,"props":1431,"children":1433},{"id":1432},"final-thoughts",[1434],{"type":28,"value":1435},"Final Thoughts",{"type":22,"tag":31,"props":1437,"children":1438},{},[1439],{"type":28,"value":1440},"In this article, we went over some major aspects of hiring. Hiring is a long play game. And it’s worth it to do it right.\nBest people bring more best people and this is what you want to happen with your team. Hiring takes time which you may\nnot necessarily have. If you would like to move forward with a project or need some extra help immediately,\nthen hiring a contractor is another option. Most firms combine the two strategies by continuously looking for full-time\nemployees while augmenting their staff with some contractor resources.",{"title":7,"searchDepth":232,"depth":232,"links":1442},[1443,1449,1450,1451],{"id":1331,"depth":232,"text":1334,"children":1444},[1445,1446,1447,1448],{"id":1342,"depth":494,"text":1345},{"id":1353,"depth":494,"text":1356},{"id":1364,"depth":494,"text":1367},{"id":1384,"depth":494,"text":1387},{"id":1400,"depth":232,"text":1403},{"id":1421,"depth":232,"text":1424},{"id":1432,"depth":232,"text":1435},"content:learn:how-to-hire-best-people.md","learn/how-to-hire-best-people.md",{"_path":1455,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1456,"description":1457,"draft":6,"tags":1458,"related_content":1460,"short_title":1461,"header_one":1462,"header_two":1463,"header_three":7,"cta_header":1464,"cta_button":7,"cta_href":7,"icon":1465,"icons":1466,"image_url":7,"body":1467,"_type":241,"_id":1641,"_source":243,"_file":1642,"_extension":245},"/learn/how-to-reduce-manual-qa-increase-product-quality-and-iterate-faster","How to Reduce Manual QA, Increase Product Quality, and Iterate Faster","Product development is a very complex task involving ideation, product and project management, design, software engineering, and testing. As you develop more features, manually testing every feature becomes impossible over time. The number of bugs increases and the development cycle slows down. This post demonstrates how to automate your quality assurance efforts to increase the quality of your product and iterate faster.",[1459,11],"qa",[],"Automate manual QA","Reduce manual QA","While Increasing Product Quality","Need a hand automating manual tests?","car-shift-pattern",[],{"type":19,"children":1468,"toc":1628},[1469,1473,1479,1484,1491,1496,1505,1510,1515,1521,1526,1538,1545,1550,1556,1562,1567,1573,1587,1593,1598,1604,1609,1613,1618],{"type":22,"tag":31,"props":1470,"children":1471},{},[1472],{"type":28,"value":1457},{"type":22,"tag":23,"props":1474,"children":1476},{"id":1475},"why-reducing-manual-qa",[1477],{"type":28,"value":1478},"Why reducing manual QA",{"type":22,"tag":31,"props":1480,"children":1481},{},[1482],{"type":28,"value":1483},"Let’s take a look at a typical software development cycle with only manual QA.",{"type":22,"tag":31,"props":1485,"children":1486},{},[1487],{"type":22,"tag":348,"props":1488,"children":1490},{"alt":7,"src":1489},"https://images.rightbalance.io/uploads/development_cycle_with_manual_qa.png",[],{"type":22,"tag":31,"props":1492,"children":1493},{},[1494],{"type":28,"value":1495},"Let’s say you have two teams, a software development team, and a QA team. Software engineers only write application code, the QA team tests the developed product. Once a new release is developed under phase 1, the software goes to the QA team. The QA team executes manual tests by going through the user interface and making sure the product works right in phase 2. If a bug is found in phase 3, the QA team tells the development team how to reproduce the bug. Sometimes a product manager is involved to prioritize bug fixes to go in certain releases. As you can see, it’s a complex process involving communication between developers and QA engineers on a regular basis. In addition to it, there are only so many manual tests that a human can execute per day.",{"type":22,"tag":419,"props":1497,"children":1499},{"id":1498},"manual-qa-doesnt-scale-well",[1500],{"type":22,"tag":211,"props":1501,"children":1502},{},[1503],{"type":28,"value":1504},"Manual QA doesn’t scale well",{"type":22,"tag":31,"props":1506,"children":1507},{},[1508],{"type":28,"value":1509},"As mentioned previously, what happens after you develop more features, a number of manual tests increases and teams usually make one of the following decisions. They either hire more QA staff or execute fewer tests. Unfortunately, most of the companies I’ve seen go with the second approach which causes bugs, loss of customers, and lost revenue.",{"type":22,"tag":31,"props":1511,"children":1512},{},[1513],{"type":28,"value":1514},"There is another way, have computers execute tests for you.",{"type":22,"tag":23,"props":1516,"children":1518},{"id":1517},"what-are-automated-tests",[1519],{"type":28,"value":1520},"What are automated tests",{"type":22,"tag":31,"props":1522,"children":1523},{},[1524],{"type":28,"value":1525},"When you write a piece of software, you want to make sure it works correctly. Let’s say, you implemented a login screen in your mobile app. After you’re done with your task, you may go ahead, stand up the app and try logging into the system. After you move on to the next feature, you test the next feature in a similar way. As you develop more features, you can’t possibly test all features you developed to date. It will simply take you too much time to test every feature manually every time you change the code. What ends up happening is that you break previously developed functionality without even realizing it.",{"type":22,"tag":31,"props":1527,"children":1528},{},[1529,1531,1536],{"type":28,"value":1530},"That’s where ",{"type":22,"tag":221,"props":1532,"children":1533},{"href":706,"title":707},[1534],{"type":28,"value":1535},"automated tests",{"type":28,"value":1537}," come in. An automated test is a piece of code that executes a test. You write it once and execute it with one command any number of times you want. In the example of the login screen, you write a test that stands up the app and taps into a field with an invisible finger, enters some information, and checks that the user is successfully logged in.",{"type":22,"tag":31,"props":1539,"children":1540},{},[1541],{"type":22,"tag":348,"props":1542,"children":1544},{"alt":7,"src":1543},"https://images.rightbalance.io/uploads/development_cycle_with_automated_qa.png",[],{"type":22,"tag":31,"props":1546,"children":1547},{},[1548],{"type":28,"value":1549},"As you can see from the following diagram, all 3 steps of software development happen during the same development phase. It involves fewer people, lowers communication overhead, and increases quality (computers are more consistent at running tests than humans).",{"type":22,"tag":23,"props":1551,"children":1553},{"id":1552},"how-to-automate-your-tests",[1554],{"type":28,"value":1555},"How to automate your tests",{"type":22,"tag":419,"props":1557,"children":1559},{"id":1558},"product-managers-to-provide-clear-requirements",[1560],{"type":28,"value":1561},"Product Managers to provide clear requirements",{"type":22,"tag":31,"props":1563,"children":1564},{},[1565],{"type":28,"value":1566},"Developing and trying to automate an undefined product is very expensive. If requirements constantly change, both, the application code and automated tests need to be constantly rewritten. In addition to it, it’s tough to identify the best testing strategy if you don’t know what kind of product you’re building. Make sure your product manager provides clear acceptance criteria for every user story.",{"type":22,"tag":419,"props":1568,"children":1570},{"id":1569},"engineers-write-unit-and-integration-tests",[1571],{"type":28,"value":1572},"Engineers write unit and integration tests",{"type":22,"tag":31,"props":1574,"children":1575},{},[1576,1578,1585],{"type":28,"value":1577},"The problem with a manual test is that you need to have a human executing it every single time which is expensive. If you automate your test, you spend a little more effort upfront by writing it. Then, you have your ",{"type":22,"tag":221,"props":1579,"children":1582},{"href":1580,":target":317,"rel":1581},"https://en.wikipedia.org/wiki/Continuous_integration",[225],[1583],{"type":28,"value":1584},"continuous integration",{"type":28,"value":1586}," servers running tests for you as many times and as often as you would like.",{"type":22,"tag":419,"props":1588,"children":1590},{"id":1589},"dont-automate-every-single-thing",[1591],{"type":28,"value":1592},"Don’t automate every single thing",{"type":22,"tag":31,"props":1594,"children":1595},{},[1596],{"type":28,"value":1597},"It’s a delicate balance between what makes sense to automate and what doesn’t. You have to compare time cost vs benefit. In some cases, an integration test gives you the most bang for the buck. In some cases, it’s easier to test an isolated piece of logic with a unit test instead.",{"type":22,"tag":419,"props":1599,"children":1601},{"id":1600},"qa-engineers-test-interactions-between-systems",[1602],{"type":28,"value":1603},"QA engineers test interactions between systems",{"type":22,"tag":31,"props":1605,"children":1606},{},[1607],{"type":28,"value":1608},"If your product consists of multiple systems (like a mobile front end, a web front end, multiple back-end services, etc), it’s important to test all pieces working together. Software engineers make sure every system is functioning correctly. However, it doesn’t really matter if each piece works as expected if the system as a whole doesn’t work. Cross-functional tests are the toughest to write. Make sure you automate the tests you execute most often manually first to be more efficient.",{"type":22,"tag":23,"props":1610,"children":1611},{"id":465},[1612],{"type":28,"value":468},{"type":22,"tag":31,"props":1614,"children":1615},{},[1616],{"type":28,"value":1617},"Automated tests are a great way to increase quality and iterate faster. If you keep your tests healthy, you can ship your software to production at any time. It allows you to move quicker, iterate and learn faster. Writing automated tests is an important skill for every software engineer. It takes some time to develop and it pays off big time. Every system is different. That’s why you need to constantly challenge yourself with writing fewer tests that cover more functionality.",{"type":22,"tag":31,"props":1619,"children":1620},{},[1621,1622],{"type":28,"value":478},{"type":22,"tag":221,"props":1623,"children":1626},{"href":1624,":target":317,"rel":1625,"title":483},"https://alextamoykin.com/how-to-reduce-manual-qa-increase-quality-of-your-product-and-iterate-faster",[225],[1627],{"type":28,"value":486},{"title":7,"searchDepth":232,"depth":232,"links":1629},[1630,1633,1634,1640],{"id":1475,"depth":232,"text":1478,"children":1631},[1632],{"id":1498,"depth":494,"text":1504},{"id":1517,"depth":232,"text":1520},{"id":1552,"depth":232,"text":1555,"children":1635},[1636,1637,1638,1639],{"id":1558,"depth":494,"text":1561},{"id":1569,"depth":494,"text":1572},{"id":1589,"depth":494,"text":1592},{"id":1600,"depth":494,"text":1603},{"id":465,"depth":232,"text":468},"content:learn:how-to-reduce-manual-qa-increase-product-quality-and-iterate-faster.md","learn/how-to-reduce-manual-qa-increase-product-quality-and-iterate-faster.md",{"_path":1644,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1645,"description":7,"draft":6,"tags":1646,"related_content":1647,"short_title":1648,"header_one":1649,"header_two":1650,"header_three":7,"cta_header":1651,"cta_button":7,"cta_href":7,"icon":1652,"icons":1653,"image_url":7,"body":1654,"_type":241,"_id":1772,"_source":243,"_file":1773,"_extension":245},"/learn/how-to-start-a-new-project-when-all-your-developers-are-busy","How to start a new project when all your developers are busy",[10,11],[],"Start new project","Start New Project","When all your devs are busy","Need developers for your new project?","play-circle-outline",[],{"type":19,"children":1655,"toc":1763},[1656,1662,1667,1672,1678,1683,1689,1702,1708,1721,1727,1748,1752],{"type":22,"tag":23,"props":1657,"children":1659},{"id":1658},"time-is-of-the-essence",[1660],{"type":28,"value":1661},"Time is of the essence",{"type":22,"tag":31,"props":1663,"children":1664},{},[1665],{"type":28,"value":1666},"You would like to launch a new feature or a new product in your organization. You're done with the ideation, you made some mockups and it's time to start building it. The only issue is that there is no one to work it on since all engineers are already allocated for their current projects. New full-time hires and interviews take time. New opportunities are passing by or even worse, implemented by your competitors.",{"type":22,"tag":31,"props":1668,"children":1669},{},[1670],{"type":28,"value":1671},"This blog post has several ways to start on a new project despite the limiting factors allowing you to achieve the next step in your business and in your professional career.",{"type":22,"tag":23,"props":1673,"children":1675},{"id":1674},"how-to-bring-new-engineering-resources-quickly",[1676],{"type":28,"value":1677},"How to bring new engineering resources quickly",{"type":22,"tag":31,"props":1679,"children":1680},{},[1681],{"type":28,"value":1682},"There are several ways to add new resources to your team. Each way is different and has to be done right. Here they are:",{"type":22,"tag":419,"props":1684,"children":1686},{"id":1685},"build-vs-buy",[1687],{"type":28,"value":1688},"Build vs Buy",{"type":22,"tag":31,"props":1690,"children":1691},{},[1692,1694,1701],{"type":28,"value":1693},"If there is already a reliable solution for your current problem out there, it's a great option to consider. There is no need to reinvent the wheel. While developing a custom solution will fit your exact needs, software development is an involved and complicated process. What seems super simple on the outside is usually just the tip of the iceberg. There are more things to think about like solution reliability, cost, integration timeline, etc. Researching existing services or products that do parts or the whole solution is worthwhile doing before making a ",{"type":22,"tag":221,"props":1695,"children":1698},{"href":1696,":target":317,"rel":1697},"https://www.forbes.com/sites/chuckcohn/2014/09/15/build-vs-buy-how-to-know-when-you-should-build-custom-software-over-canned-solutions/#5bd14fec371e",[225],[1699],{"type":28,"value":1700},"Build vs Buy decision",{"type":28,"value":273},{"type":22,"tag":419,"props":1703,"children":1705},{"id":1704},"outsource",[1706],{"type":28,"value":1707},"Outsource",{"type":22,"tag":31,"props":1709,"children":1710},{},[1711,1713,1719],{"type":28,"value":1712},"Because growing your business is hard work, it's important to choose your battles. Focusing on your core competencies and outsourcing everything else will help to accelerate your business growth. For example, if your core business is centered around Data Analysis, you may want to hire a reputable firm to create a beautiful Front End plugged into your Data Analysis API. This option allows you to avoid wasting precious time on building a new Front End practice in-house and to double down on what you do best. While completely outsourcing the non-core parts of your product saves you time, you want to make sure you still own what you outsourced. Make sure you have some technical documentation of the solution as well as the source code and the instructions on how to get it up and running (which is a standard procedure at ",{"type":22,"tag":221,"props":1714,"children":1716},{"href":1715},"/",[1717],{"type":28,"value":1718},"Right Balance",{"type":28,"value":1720},").",{"type":22,"tag":419,"props":1722,"children":1724},{"id":1723},"staff-augmentation",[1725],{"type":28,"value":1726},"Staff Augmentation",{"type":22,"tag":31,"props":1728,"children":1729},{},[1730,1732,1738,1740,1746],{"type":28,"value":1731},"If you would like to have more horsepower to start a new project immediately, and it's within the area of your core competency, then ",{"type":22,"tag":221,"props":1733,"children":1735},{"href":1734,"title":1726},"/learn/staff-augmentation-how-to-get-some-extra-help-when-you-need-it",[1736],{"type":28,"value":1737},"staff augmentation",{"type":28,"value":1739}," is your best option. The new team members plug into your existing team and work together in lockstep allowing for some rapid innovation and quick feature iteration. Staff Augmentation allows you to keep the momentum going every day, solve blockers promptly, and deliver things on time. It also allows you to learn from external team members about the new ways of building the ",{"type":22,"tag":221,"props":1741,"children":1743},{"href":831,"title":1742},"10 steps to build the best product",[1744],{"type":28,"value":1745},"best product",{"type":28,"value":1747},". New team members can bring a fresh perspective to the company.",{"type":22,"tag":23,"props":1749,"children":1750},{"id":465},[1751],{"type":28,"value":468},{"type":22,"tag":31,"props":1753,"children":1754},{},[1755,1757,1761],{"type":28,"value":1756},"Even though there is a set number of engineers available at your company, there are proven ways to start a new project at any time. Here at ",{"type":22,"tag":221,"props":1758,"children":1759},{"href":1715},[1760],{"type":28,"value":1718},{"type":28,"value":1762},", we love working with entrepreneurial people sharing the passion for building the best product helping millions of people.",{"title":7,"searchDepth":232,"depth":232,"links":1764},[1765,1766,1771],{"id":1658,"depth":232,"text":1661},{"id":1674,"depth":232,"text":1677,"children":1767},[1768,1769,1770],{"id":1685,"depth":494,"text":1688},{"id":1704,"depth":494,"text":1707},{"id":1723,"depth":494,"text":1726},{"id":465,"depth":232,"text":468},"content:learn:how-to-start-a-new-project-when-all-your-developers-are-busy.md","learn/how-to-start-a-new-project-when-all-your-developers-are-busy.md",{"_path":1734,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1775,"description":7,"tags":1776,"related_content":1777,"short_title":1726,"header_one":1778,"header_two":1779,"icon":1780,"cta_header":1781,"body":1782,"_type":241,"_id":1953,"_source":243,"_file":1954,"_extension":245},"Staff Augmentation: How To Get Some Extra Help When You Need It",[10,11],[],"Staff","Augmentation","account-multiple-plus-outline","Need to add some extra people to your team quickly?",{"type":19,"children":1783,"toc":1938},[1784,1790,1795,1801,1807,1812,1818,1823,1829,1834,1840,1845,1851,1856,1862,1867,1874,1879,1885,1896,1902,1907,1913,1918,1924,1929,1933],{"type":22,"tag":23,"props":1785,"children":1787},{"id":1786},"what-is-staff-augmentation",[1788],{"type":28,"value":1789},"What is Staff Augmentation",{"type":22,"tag":31,"props":1791,"children":1792},{},[1793],{"type":28,"value":1794},"Staff Augmentation is when some external staff is seamlessly added to your existing team.\nIt's ideal for the times when you need some extra help.",{"type":22,"tag":23,"props":1796,"children":1798},{"id":1797},"advantages-of-staff-augmentation",[1799],{"type":28,"value":1800},"Advantages of Staff Augmentation",{"type":22,"tag":419,"props":1802,"children":1804},{"id":1803},"maintain-control",[1805],{"type":28,"value":1806},"Maintain control",{"type":22,"tag":31,"props":1808,"children":1809},{},[1810],{"type":28,"value":1811},"One of the biggest advantages of staff augmentation is that you remain in control of your software development process.\nNew developers just follow the process you already have. They get invited to all your ceremonies and existing meetings\nlike standups, sprint plannings, retrospectives, etc. It allows you to continue taking advantage of the processes you\nalready have by rinse repeating what works for your team.",{"type":22,"tag":419,"props":1813,"children":1815},{"id":1814},"flexibility",[1816],{"type":28,"value":1817},"Flexibility",{"type":22,"tag":31,"props":1819,"children":1820},{},[1821],{"type":28,"value":1822},"Additional resources can be added as you need it. The goal of staff augmentation is to provide extra resources quickly\ninstead of having positions open for a while. Staff augmentation arrangements usually come in the form of a contract as\nopposed to an employment relationship that has multiple advantages. In case if the candidate doesn't work out, granted\nthe candidate was hired using a solid contracting firm, the firm can arrange a replacement. Worth noting that doing so\nwith full time employees is more complicated because of the local employment laws.",{"type":22,"tag":419,"props":1824,"children":1826},{"id":1825},"hit-the-ground-running",[1827],{"type":28,"value":1828},"Hit the ground running",{"type":22,"tag":31,"props":1830,"children":1831},{},[1832],{"type":28,"value":1833},"Software developers who work in staff augmentation are usually very skilled. They are professionally trained to be\nproductive and make an impact from day one. They've been on multiple projects and they can bring their expertise to\nyour project. Needless to say, to be successful at staff augmentation you need to be a top-level player.\nIt takes some skills to be productive in any environment quickly.",{"type":22,"tag":419,"props":1835,"children":1837},{"id":1836},"additional-skills",[1838],{"type":28,"value":1839},"Additional Skills",{"type":22,"tag":31,"props":1841,"children":1842},{},[1843],{"type":28,"value":1844},"Adding new team members on the team can bring some additional skills that you may not yet have.\nFor instance, if you add someone skilled at Front End development when your internal expertise is on the Back End\nallows you to establish some best practices with the new technology in house. It's also a great opportunity to have\nyour existing team learn from the experience of some new team members who delivered several production grade projects\nwith new technology.",{"type":22,"tag":23,"props":1846,"children":1848},{"id":1847},"disadvantages-of-staff-augmentation-and-how-to-address-them",[1849],{"type":28,"value":1850},"Disadvantages of Staff Augmentation and How To Address Them",{"type":22,"tag":31,"props":1852,"children":1853},{},[1854],{"type":28,"value":1855},"Nothing is perfect, staff augmentation also has some disadvantages. That said, most of the disadvantages can be\naddressed by following some engineering best practices.",{"type":22,"tag":419,"props":1857,"children":1859},{"id":1858},"retaining-the-knowledge",[1860],{"type":28,"value":1861},"Retaining The Knowledge",{"type":22,"tag":31,"props":1863,"children":1864},{},[1865],{"type":28,"value":1866},"Making sure that your institutional knowledge stays withing the core in-house team is key.\nThe work performed by contractors needs to follow the regular process. Several industry-proven strategies help to\nretain your knowledge:",{"type":22,"tag":1868,"props":1869,"children":1871},"h4",{"id":1870},"code-reviews",[1872],{"type":28,"value":1873},"Code Reviews",{"type":22,"tag":31,"props":1875,"children":1876},{},[1877],{"type":28,"value":1878},"Making sure that your team members review each other's code has several advantages. It increases the collaboration\nbetween the team members and sparks conversations about some new ideas. Best of all, it helps the team to maintain\nand improve the code quality.",{"type":22,"tag":1868,"props":1880,"children":1882},{"id":1881},"automated-tests",[1883],{"type":28,"value":1884},"Automated Tests",{"type":22,"tag":31,"props":1886,"children":1887},{},[1888,1890,1894],{"type":28,"value":1889},"In addition to being able to run your ",{"type":22,"tag":221,"props":1891,"children":1892},{"href":706},[1893],{"type":28,"value":1535},{"type":28,"value":1895},"\nto make sure the system works, tests are also your documentation. When written properly,\nit can tell you exactly how your system works. And better yet, green tests are the proof of it working as expected.",{"type":22,"tag":1868,"props":1897,"children":1899},{"id":1898},"documentation",[1900],{"type":28,"value":1901},"Documentation",{"type":22,"tag":31,"props":1903,"children":1904},{},[1905],{"type":28,"value":1906},"Last but not least, it's the documentation itself. Each modification to the existing architecture needs to be\ndocumented in the form of design documents and architectural diagrams.",{"type":22,"tag":419,"props":1908,"children":1910},{"id":1909},"alignment-in-core-values",[1911],{"type":28,"value":1912},"Alignment in Core Values",{"type":22,"tag":31,"props":1914,"children":1915},{},[1916],{"type":28,"value":1917},"When choosing your software development partner, it's important to make sure that your core values align with the\npartner's core values. If there is a misalignment, it can create some extra tension on the team.\nAnd when the values are aligned, it amplifies the advantages of both sides.",{"type":22,"tag":419,"props":1919,"children":1921},{"id":1920},"something-new",[1922],{"type":28,"value":1923},"Something New",{"type":22,"tag":31,"props":1925,"children":1926},{},[1927],{"type":28,"value":1928},"If you haven't hired any contractors in the past, it can be something new for you. Bringing new people on the project\ncan seem like a challenging task at first. In practice, it's usually very straightforward. Firms specializing in staff\naugmentation have the process streamlined with an easy-to-understand contract and some highly skilled staff ready to\nmake progress right away. At the end of the day, working together is a win-win situation for both parties.\nA great company will help you get through the process each step of the way.",{"type":22,"tag":23,"props":1930,"children":1931},{"id":465},[1932],{"type":28,"value":468},{"type":22,"tag":31,"props":1934,"children":1935},{},[1936],{"type":28,"value":1937},"Staff augmentation is a great way to add some extra horsepower to your team. New team members are professionally\ntrained to hit the ground running quickly by working on your terms and following the existing processes. By following\nthe best industry practices like automated testing, code reviews, and comprehensive documentation you're able to retain\nthe knowledge within your in-house team. The arrangement is flexible where you can add people quickly and replace\nthem in case someone doesn't work out.",{"title":7,"searchDepth":232,"depth":232,"links":1939},[1940,1941,1947,1952],{"id":1786,"depth":232,"text":1789},{"id":1797,"depth":232,"text":1800,"children":1942},[1943,1944,1945,1946],{"id":1803,"depth":494,"text":1806},{"id":1814,"depth":494,"text":1817},{"id":1825,"depth":494,"text":1828},{"id":1836,"depth":494,"text":1839},{"id":1847,"depth":232,"text":1850,"children":1948},[1949,1950,1951],{"id":1858,"depth":494,"text":1861},{"id":1909,"depth":494,"text":1912},{"id":1920,"depth":494,"text":1923},{"id":465,"depth":232,"text":468},"content:learn:staff-augmentation-how-to-get-some-extra-help-when-you-need-it.md","learn/staff-augmentation-how-to-get-some-extra-help-when-you-need-it.md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"tags":1956,"related_content":1957,"short_title":8,"header_two":14,"header_three":15,"icon":16,"cta_header":17,"body":1958,"_type":241,"_id":242,"_source":243,"_file":244,"_extension":245},[10,11,12],[],{"type":19,"children":1959,"toc":2116},[1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012,2016,2020,2024,2028,2032,2036,2040,2044,2048,2052,2056,2060,2064,2087,2091,2095,2099,2107],{"type":22,"tag":23,"props":1961,"children":1962},{"id":25},[1963],{"type":28,"value":29},{"type":22,"tag":31,"props":1965,"children":1966},{},[1967],{"type":28,"value":35},{"type":22,"tag":23,"props":1969,"children":1970},{"id":38},[1971],{"type":28,"value":41},{"type":22,"tag":31,"props":1973,"children":1974},{},[1975],{"type":28,"value":46},{"type":22,"tag":31,"props":1977,"children":1978},{},[1979],{"type":28,"value":51},{"type":22,"tag":31,"props":1981,"children":1982},{},[1983],{"type":28,"value":56},{"type":22,"tag":31,"props":1985,"children":1986},{},[1987],{"type":28,"value":61},{"type":22,"tag":31,"props":1989,"children":1990},{},[1991],{"type":28,"value":66},{"type":22,"tag":23,"props":1993,"children":1994},{"id":69},[1995],{"type":28,"value":72},{"type":22,"tag":31,"props":1997,"children":1998},{},[1999],{"type":28,"value":77},{"type":22,"tag":31,"props":2001,"children":2002},{},[2003],{"type":28,"value":82},{"type":22,"tag":31,"props":2005,"children":2006},{},[2007],{"type":28,"value":87},{"type":22,"tag":31,"props":2009,"children":2010},{},[2011],{"type":28,"value":92},{"type":22,"tag":31,"props":2013,"children":2014},{},[2015],{"type":28,"value":97},{"type":22,"tag":31,"props":2017,"children":2018},{},[2019],{"type":28,"value":102},{"type":22,"tag":23,"props":2021,"children":2022},{"id":105},[2023],{"type":28,"value":108},{"type":22,"tag":31,"props":2025,"children":2026},{},[2027],{"type":28,"value":113},{"type":22,"tag":31,"props":2029,"children":2030},{},[2031],{"type":28,"value":118},{"type":22,"tag":31,"props":2033,"children":2034},{},[2035],{"type":28,"value":123},{"type":22,"tag":31,"props":2037,"children":2038},{},[2039],{"type":28,"value":128},{"type":22,"tag":23,"props":2041,"children":2042},{"id":131},[2043],{"type":28,"value":134},{"type":22,"tag":31,"props":2045,"children":2046},{},[2047],{"type":28,"value":139},{"type":22,"tag":31,"props":2049,"children":2050},{},[2051],{"type":28,"value":144},{"type":22,"tag":31,"props":2053,"children":2054},{},[2055],{"type":28,"value":149},{"type":22,"tag":23,"props":2057,"children":2058},{"id":152},[2059],{"type":28,"value":155},{"type":22,"tag":31,"props":2061,"children":2062},{},[2063],{"type":28,"value":160},{"type":22,"tag":162,"props":2065,"children":2066},{},[2067,2071,2075,2079,2083],{"type":22,"tag":166,"props":2068,"children":2069},{},[2070],{"type":28,"value":170},{"type":22,"tag":166,"props":2072,"children":2073},{},[2074],{"type":28,"value":175},{"type":22,"tag":166,"props":2076,"children":2077},{},[2078],{"type":28,"value":180},{"type":22,"tag":166,"props":2080,"children":2081},{},[2082],{"type":28,"value":185},{"type":22,"tag":166,"props":2084,"children":2085},{},[2086],{"type":28,"value":190},{"type":22,"tag":31,"props":2088,"children":2089},{},[2090],{"type":28,"value":195},{"type":22,"tag":31,"props":2092,"children":2093},{},[2094],{"type":28,"value":200},{"type":22,"tag":23,"props":2096,"children":2097},{"id":203},[2098],{"type":28,"value":206},{"type":22,"tag":31,"props":2100,"children":2101},{},[2102,2106],{"type":22,"tag":211,"props":2103,"children":2104},{},[2105],{"type":28,"value":8},{"type":28,"value":216},{"type":22,"tag":31,"props":2108,"children":2109},{},[2110,2115],{"type":22,"tag":221,"props":2111,"children":2113},{"href":223,"rel":2112},[225],[2114],{"type":28,"value":228},{"type":28,"value":230},{"title":7,"searchDepth":232,"depth":232,"links":2117},[2118,2119,2120,2121,2122,2123,2124],{"id":25,"depth":232,"text":29},{"id":38,"depth":232,"text":41},{"id":69,"depth":232,"text":72},{"id":105,"depth":232,"text":108},{"id":131,"depth":232,"text":134},{"id":152,"depth":232,"text":155},{"id":203,"depth":232,"text":206},{"_path":2126,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2127,"description":7,"draft":6,"tags":2128,"related_content":2129,"short_title":2130,"header_one":7,"header_two":2131,"header_three":2132,"cta_header":2133,"cta_button":7,"cta_href":7,"icon":2134,"icons":2135,"image_url":7,"body":2136,"_type":241,"_id":2624,"_source":243,"_file":2625,"_extension":245},"/learn/unlock-the-power-of-the-global-remote-workforce-for-your-business","Unlock the power of the Global Remote Workforce for Your Team",[10,11],[],"Global Remote Workforce","Unlock the power of","Remote","Want to add some remote engineers to your team?","web",[],{"type":19,"children":2137,"toc":2605},[2138,2144,2149,2155,2161,2217,2232,2238,2252,2258,2263,2268,2273,2278,2284,2289,2303,2318,2324,2330,2335,2341,2371,2377,2406,2412,2450,2456,2486,2492,2549,2555,2585,2589,2594],{"type":22,"tag":23,"props":2139,"children":2141},{"id":2140},"what-is-remote-workforce",[2142],{"type":28,"value":2143},"What is Remote Workforce",{"type":22,"tag":31,"props":2145,"children":2146},{},[2147],{"type":28,"value":2148},"A traditional way to do business is to come to an office to do the work. In some industries like factory manufacturing, it’s the only option. That said, with the current state of technology and especially for thought workers like software engineers, it’s no longer a requirement. With a high-performance laptop and an Internet connection, you can work from anywhere in the world, including your home office. Remote workforce unlocks limitless possibilities for your business like getting access to a larger and more cost-efficient pool of talent internationally. Especially in the pandemic, when going into an office is complicated, there is no reason for not taking the advantage of global remote work opportunities.",{"type":22,"tag":23,"props":2150,"children":2152},{"id":2151},"why-remote-is-great",[2153],{"type":28,"value":2154},"Why Remote is Great",{"type":22,"tag":419,"props":2156,"children":2158},{"id":2157},"big-companies-go-remote",[2159],{"type":28,"value":2160},"Big Companies Go Remote",{"type":22,"tag":31,"props":2162,"children":2163},{},[2164,2166,2173,2175,2182,2183,2190,2192,2199,2201,2208,2210,2216],{"type":28,"value":2165},"Large companies like ",{"type":22,"tag":221,"props":2167,"children":2170},{":target":317,"href":2168,"rel":2169},"https://www.pluralsight.com/blog/teams/collaborating-at-github-with-a-60--remote-workforce",[225],[2171],{"type":28,"value":2172},"Github",{"type":28,"value":2174}," (bought by Microsoft), ",{"type":22,"tag":221,"props":2176,"children":2179},{":target":317,"href":2177,"rel":2178},"https://www.glassdoor.com/Overview/Working-at-InVision-EI_IE912781.11,19.htm",[225],[2180],{"type":28,"value":2181},"InVision",{"type":28,"value":1034},{"type":22,"tag":221,"props":2184,"children":2187},{":target":317,"href":2185,"rel":2186},"https://37signals.com/",[225],[2188],{"type":28,"value":2189},"37signals",{"type":28,"value":2191}," (makers of ",{"type":22,"tag":221,"props":2193,"children":2196},{":target":317,"href":2194,"rel":2195},"https://basecamp.com/",[225],[2197],{"type":28,"value":2198},"Basecamp",{"type":28,"value":2200}," and creators of ",{"type":22,"tag":221,"props":2202,"children":2205},{":target":317,"href":2203,"rel":2204},"https://rubyonrails.org/",[225],[2206],{"type":28,"value":2207},"Ruby on Rails",{"type":28,"value":2209},") were already operating remotely even before the pandemic. There are books written on a subject like ",{"type":22,"tag":221,"props":2211,"children":2214},{":target":317,"href":2212,"rel":2213},"https://www.amazon.com/gp/product/0804137501/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0804137501&linkCode=as2&tag=howtoprogramb-20&linkId=7975a9b05dc299f15f7e104f0228bebc",[225],[2215],{"type":28,"value":2132},{"type":28,"value":273},{"type":22,"tag":31,"props":2218,"children":2219},{},[2220,2228],{"type":22,"tag":221,"props":2221,"children":2223},{"target":359,"href":2222},"https://www.amazon.com/gp/product/0804137501/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0804137501&linkCode=as2&tag=howtoprogramb-20&linkId=611578c3e043dbf86bd8a76ef379fdab",[2224],{"type":22,"tag":348,"props":2225,"children":2227},{"border":1200,"src":2226},"//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=0804137501&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=howtoprogramb-20",[],{"type":22,"tag":348,"props":2229,"children":2231},{"src":2230,"width":1206,"height":1206,"border":1200,"alt":7,"style":1207},"//ir-na.amazon-adsystem.com/e/ir?t=howtoprogramb-20&l=am2&o=1&a=0804137501",[],{"type":22,"tag":419,"props":2233,"children":2235},{"id":2234},"remote-is-here-to-stay",[2236],{"type":28,"value":2237},"Remote is here to stay",{"type":22,"tag":31,"props":2239,"children":2240},{},[2241,2243,2250],{"type":28,"value":2242},"Especially in the pandemic, remote work is the new norm. Per ",{"type":22,"tag":221,"props":2244,"children":2247},{":target":317,"href":2245,"rel":2246},"https://techcrunch.com/2021/06/11/tech-companies-are-looking-at-more-flexible-work-models-when-offices-reopen/",[225],[2248],{"type":28,"value":2249},"TechCrunch",{"type":28,"value":2251},": even when the offices reopen, companies are looking at flexible work models.",{"type":22,"tag":419,"props":2253,"children":2255},{"id":2254},"larger-pool-of-more-cost-effective-talent",[2256],{"type":28,"value":2257},"Larger pool of more cost-effective talent",{"type":22,"tag":31,"props":2259,"children":2260},{},[2261],{"type":28,"value":2262},"The remote workforce unlocks the possibility of hiring people outside of your city and even your country. You can have a truly international team of professionals working in lockstep with you.",{"type":22,"tag":31,"props":2264,"children":2265},{},[2266],{"type":28,"value":2267},"Needless to say, due to the cost of living difference between the United States and the rest of the world, you’ll get some amazingly skilled and motivated professionals at the fraction of the cost of a local US employee. No need to worry about immigration either. Remote workers can be hired as individual contractors through a contracting company reducing the complexity of your payroll.",{"type":22,"tag":31,"props":2269,"children":2270},{},[2271],{"type":28,"value":2272},"With remote, you’re tapping into a larger pool of talent than in your local city. It’s especially helpful if you’re looking to fulfill multiple roles at your company and the local job market is very competitive.",{"type":22,"tag":31,"props":2274,"children":2275},{},[2276],{"type":28,"value":2277},"Worth noting that in some countries, higher education is more accessible and less costly than in the US. So yes, you can hire a remote worker who actually knows how software algorithms and data structures work ;-)",{"type":22,"tag":419,"props":2279,"children":2281},{"id":2280},"more-productivity-and-focus",[2282],{"type":28,"value":2283},"More Productivity and Focus",{"type":22,"tag":31,"props":2285,"children":2286},{},[2287],{"type":28,"value":2288},"Working at the office, especially with an open floor plan, can be distracting. It’s very easy to spend your entire day between meetings, random conversations with your peers, especially with the hard work requiring a high amount of mental energy and concentration like software engineering.",{"type":22,"tag":31,"props":2290,"children":2291},{},[2292,2294,2301],{"type":28,"value":2293},"Working remotely solves this problem. With a properly set up personal office, there are fewer distractions, leaving more time for individual contributions. A book on a subject is my all-time favorite: ",{"type":22,"tag":221,"props":2295,"children":2298},{":target":317,"href":2296,"rel":2297},"https://www.amazon.com/gp/product/1455586692/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1455586692&linkCode=as2&tag=howtoprogramb-20&linkId=46b086be5569689988b467402a54c7ce",[225],[2299],{"type":28,"value":2300},"Deep Work",{"type":28,"value":2302},": Rules for Focused Success In a Distracted World.",{"type":22,"tag":31,"props":2304,"children":2305},{},[2306,2314],{"type":22,"tag":221,"props":2307,"children":2309},{"target":359,"href":2308},"https://www.amazon.com/gp/product/1455586692/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1455586692&linkCode=as2&tag=howtoprogramb-20&linkId=06538a88eefeffef43601d0cf77295db",[2310],{"type":22,"tag":348,"props":2311,"children":2313},{"border":1200,"src":2312},"//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=1455586692&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=howtoprogramb-20",[],{"type":22,"tag":348,"props":2315,"children":2317},{"src":2316,"width":1206,"height":1206,"border":1200,"alt":7,"style":1207},"//ir-na.amazon-adsystem.com/e/ir?t=howtoprogramb-20&l=am2&o=1&a=1455586692",[],{"type":22,"tag":23,"props":2319,"children":2321},{"id":2320},"how-to-work-with-a-remote-team",[2322],{"type":28,"value":2323},"How To Work With a Remote Team",{"type":22,"tag":419,"props":2325,"children":2327},{"id":2326},"timezone",[2328],{"type":28,"value":2329},"Timezone",{"type":22,"tag":31,"props":2331,"children":2332},{},[2333],{"type":28,"value":2334},"The key to managing distributed teams is maintaining the concept of Core Hours. Core hours is when everyone, regardless of the local time zone are available for cross-team communication and meetings. For example, if you’re in the US and you have people in multiple geographic regions like Latin America, Eastern Europe, and Asia, then all of them should be available during your core hours, usually between your morning and noon. People located in the timezone with more proximity (for example US and Latin America) will have more overlap with your team.",{"type":22,"tag":419,"props":2336,"children":2338},{"id":2337},"video-calls",[2339],{"type":28,"value":2340},"Video Calls",{"type":22,"tag":31,"props":2342,"children":2343},{},[2344,2346,2353,2354,2361,2362,2369],{"type":28,"value":2345},"Regular meetings like standups, sprint plannings, retrospectives, debugging sessions can happen over video calls. The most popular options are ",{"type":22,"tag":221,"props":2347,"children":2350},{":target":317,"href":2348,"rel":2349},"https://zoom.us/",[225],[2351],{"type":28,"value":2352},"Zoom",{"type":28,"value":1034},{"type":22,"tag":221,"props":2355,"children":2358},{":target":317,"href":2356,"rel":2357},"https://www.gotomeeting.com/",[225],[2359],{"type":28,"value":2360},"GoToMeeting",{"type":28,"value":1034},{"type":22,"tag":221,"props":2363,"children":2366},{":target":317,"href":2364,"rel":2365},"https://gsuite.google.com/products/meet/",[225],[2367],{"type":28,"value":2368},"Google Meet",{"type":28,"value":2370},". Most of the video conferencing software allows you to add multiple attendees, share your camera and your screen. It’s especially useful if you would like to walk your team through a presentation. If you have an issue you need some help with, you can have a video call with your remote co-worker to troubleshoot it over a screen sharing session.",{"type":22,"tag":419,"props":2372,"children":2374},{"id":2373},"messaging-chat",[2375],{"type":28,"value":2376},"Messaging / Chat",{"type":22,"tag":31,"props":2378,"children":2379},{},[2380,2382,2389,2390,2397,2398,2405],{"type":28,"value":2381},"With the evolution of messaging software, it’s now more efficient to communicate over messaging than talking to a large group. The advantages of using messaging for your communication are that it’s searchable, can be referred to later on, and it works for communicating with your entire team regardless of the physical location of your team members. Most notable options are ",{"type":22,"tag":221,"props":2383,"children":2386},{":target":317,"href":2384,"rel":2385},"https://slack.com/",[225],[2387],{"type":28,"value":2388},"Slack",{"type":28,"value":1034},{"type":22,"tag":221,"props":2391,"children":2394},{":target":317,"href":2392,"rel":2393},"https://products.office.com/en-us/microsoft-teams/group-chat-software",[225],[2395],{"type":28,"value":2396},"Microsoft Teams",{"type":28,"value":1034},{"type":22,"tag":221,"props":2399,"children":2402},{":target":317,"href":2400,"rel":2401},"https://www.atlassian.com/software/hipchat/downloads",[225],[2403],{"type":28,"value":2404},"HipChat",{"type":28,"value":273},{"type":22,"tag":419,"props":2407,"children":2409},{"id":2408},"tracking-progress",[2410],{"type":28,"value":2411},"Tracking Progress",{"type":22,"tag":31,"props":2413,"children":2414},{},[2415,2417,2424,2425,2432,2433,2440,2441,2448],{"type":28,"value":2416},"You most likely already use these tools to track your projects. ",{"type":22,"tag":221,"props":2418,"children":2421},{":target":317,"href":2419,"rel":2420},"https://www.atlassian.com/software/jira",[225],[2422],{"type":28,"value":2423},"Jira",{"type":28,"value":1034},{"type":22,"tag":221,"props":2426,"children":2429},{":target":317,"href":2427,"rel":2428},"https://trello.com/",[225],[2430],{"type":28,"value":2431},"Trello",{"type":28,"value":1034},{"type":22,"tag":221,"props":2434,"children":2437},{":target":317,"href":2435,"rel":2436},"http://asana.com",[225],[2438],{"type":28,"value":2439},"Asana",{"type":28,"value":1034},{"type":22,"tag":221,"props":2442,"children":2445},{":target":317,"href":2443,"rel":2444},"https://monday.com/",[225],[2446],{"type":28,"value":2447},"Monday",{"type":28,"value":2449}," or a good old school spreadsheet (yes, people still do it, and it works great!) are available to track your team’s progress. Remote team members are assigned some tickets to work on. Once the work is started, the ticket is moved to in progress, then in QA, and to done. All steps along the way you’ll know exactly who works on what and when the work is ready to be reviewed.",{"type":22,"tag":419,"props":2451,"children":2453},{"id":2452},"pushing-code",[2454],{"type":28,"value":2455},"Pushing Code",{"type":22,"tag":31,"props":2457,"children":2458},{},[2459,2461,2467,2468,2475,2477,2484],{"type":28,"value":2460},"Chances are that you’re already using these tools too. There is no need to host a private git repository on your secret server in a closet. Services like ",{"type":22,"tag":221,"props":2462,"children":2465},{":target":317,"href":2463,"rel":2464},"https://github.com/",[225],[2466],{"type":28,"value":2172},{"type":28,"value":1034},{"type":22,"tag":221,"props":2469,"children":2472},{":target":317,"href":2470,"rel":2471},"https://about.gitlab.com/",[225],[2473],{"type":28,"value":2474},"GitLab",{"type":28,"value":2476},", and ",{"type":22,"tag":221,"props":2478,"children":2481},{":target":317,"href":2479,"rel":2480},"https://bitbucket.org/",[225],[2482],{"type":28,"value":2483},"BitBucket",{"type":28,"value":2485}," are available for your team. You can set the individual permissions for each code repository and assign different permissions to your engineers as you see fit. All code gets pushed to the same repository. Remote workers will follow your standard code review procedure using the same code standards that you already have.",{"type":22,"tag":419,"props":2487,"children":2489},{"id":2488},"testing",[2490],{"type":28,"value":2491},"Testing",{"type":22,"tag":31,"props":2493,"children":2494},{},[2495,2497,2504,2506,2513,2515,2522,2523,2530,2532,2539,2541,2548],{"type":28,"value":2496},"Stopping by at your developer’s desk to see the progress is inefficient and distractive. So you should be already using services like ",{"type":22,"tag":221,"props":2498,"children":2501},{":target":317,"href":2499,"rel":2500},"https://developer.apple.com/testflight/",[225],[2502],{"type":28,"value":2503},"TestFlight",{"type":28,"value":2505}," and ",{"type":22,"tag":221,"props":2507,"children":2510},{":target":317,"href":2508,"rel":2509},"https://firebase.google.com/products/app-distribution",[225],[2511],{"type":28,"value":2512},"Firebase",{"type":28,"value":2514}," to distribute your test builds for your mobile app. The websites are deployed to your QA or staging environment for testing which you can access from your web browser. You can check the database with your database client like ",{"type":22,"tag":221,"props":2516,"children":2519},{":target":317,"href":2517,"rel":2518},"https://www.sequelpro.com/",[225],[2520],{"type":28,"value":2521},"Sequel Pro",{"type":28,"value":996},{"type":22,"tag":221,"props":2524,"children":2527},{":target":317,"href":2525,"rel":2526},"https://www.navicat.com/",[225],[2528],{"type":28,"value":2529},"Navicat",{"type":28,"value":2531},". Your API can be tested with ",{"type":22,"tag":221,"props":2533,"children":2536},{":target":317,"href":2534,"rel":2535},"https://www.postman.com/",[225],[2537],{"type":28,"value":2538},"Postman",{"type":28,"value":2540},". And your cloud is easy to manage using ",{"type":22,"tag":221,"props":2542,"children":2545},{":target":317,"href":2543,"rel":2544},"https://getcommandeer.com/",[225],[2546],{"type":28,"value":2547},"Commandeer",{"type":28,"value":273},{"type":22,"tag":419,"props":2550,"children":2552},{"id":2551},"security",[2553],{"type":28,"value":2554},"Security",{"type":22,"tag":31,"props":2556,"children":2557},{},[2558,2560,2566,2568,2575,2576,2583],{"type":28,"value":2559},"Security is the top priority for remote workers. At ",{"type":22,"tag":221,"props":2561,"children":2564},{":target":317,"href":2562,"rel":2563},"https://rightbalance.io/",[225],[2565],{"type":28,"value":1718},{"type":28,"value":2567},", we follow the best security practices like using ",{"type":22,"tag":221,"props":2569,"children":2572},{":target":317,"href":2570,"rel":2571},"https://en.wikipedia.org/wiki/Virtual_private_network",[225],[2573],{"type":28,"value":2574},"VPN",{"type":28,"value":1034},{"type":22,"tag":221,"props":2577,"children":2580},{":target":317,"href":2578,"rel":2579},"https://en.wikipedia.org/wiki/Secure_Shell",[225],[2581],{"type":28,"value":2582},"SSH",{"type":28,"value":2584}," keys, hard disk encryption, being able to erase a laptop remotely, and more.",{"type":22,"tag":23,"props":2586,"children":2587},{"id":465},[2588],{"type":28,"value":468},{"type":22,"tag":31,"props":2590,"children":2591},{},[2592],{"type":28,"value":2593},"With the current state of technology, remote workers enable your business to achieve greater heights. And as you can see, it’s not that different from your current way of working anyway. There is no reason for not taking advantage of a larger pool of high-quality talent in timezone-friendly regions like Latin America and Eastern Europe. In addition to it, due to a lower cost of living, remote workers are more cost-efficient, as well as more motivated to work with an international team.",{"type":22,"tag":31,"props":2595,"children":2596},{},[2597,2599],{"type":28,"value":2598},"Originally posted at ",{"type":22,"tag":221,"props":2600,"children":2603},{":target":317,"href":2601,"rel":2602},"https://alextamoykin.com/unlock-the-power-of-remote-workforce-for-your-business",[225],[2604],{"type":28,"value":486},{"title":7,"searchDepth":232,"depth":232,"links":2606},[2607,2608,2614,2623],{"id":2140,"depth":232,"text":2143},{"id":2151,"depth":232,"text":2154,"children":2609},[2610,2611,2612,2613],{"id":2157,"depth":494,"text":2160},{"id":2234,"depth":494,"text":2237},{"id":2254,"depth":494,"text":2257},{"id":2280,"depth":494,"text":2283},{"id":2320,"depth":232,"text":2323,"children":2615},[2616,2617,2618,2619,2620,2621,2622],{"id":2326,"depth":494,"text":2329},{"id":2337,"depth":494,"text":2340},{"id":2373,"depth":494,"text":2376},{"id":2408,"depth":494,"text":2411},{"id":2452,"depth":494,"text":2455},{"id":2488,"depth":494,"text":2491},{"id":2551,"depth":494,"text":2554},{"id":465,"depth":232,"text":468},"content:learn:unlock-the-power-of-the-global-remote-workforce-for-your-business.md","learn/unlock-the-power-of-the-global-remote-workforce-for-your-business.md",{"_path":2627,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2628,"description":7,"tags":2629,"related_content":2630,"short_title":2631,"header_two":2632,"header_three":2633,"icon":2634,"cta_header":2635,"body":2636,"_type":241,"_id":2744,"_source":243,"_file":2745,"_extension":245},"/learn/why-hiring-senior-engineers-is-hard-and-how-to-solve-it","Why Hiring Senior Engineers is Hard And How to Solve It",[10,11],[],"Why hiring engineers is hard","Why Hiring Senior Engineers","is Hard","star","Need help hiring senior engineers?",{"type":19,"children":2637,"toc":2733},[2638,2642,2647,2653,2658,2664,2669,2675,2680,2686,2691,2695,2706,2712,2717,2721],{"type":22,"tag":23,"props":2639,"children":2640},{"id":25},[2641],{"type":28,"value":29},{"type":22,"tag":31,"props":2643,"children":2644},{},[2645],{"type":28,"value":2646},"If you're in an engineering leadership position like Engineering Manager, Director, VP, CTO, one of your main\nresponsibilities is to grow your engineering team. Senior Software Engineers are a precious resource for your company.\nThat being said, the minute you have several positions open, you realize that hiring is an involved, slow, and expensive process.\nThis post has several solutions to increase your headcount.",{"type":22,"tag":23,"props":2648,"children":2650},{"id":2649},"why-hiring-is-hard",[2651],{"type":28,"value":2652},"Why Hiring Is Hard",{"type":22,"tag":31,"props":2654,"children":2655},{},[2656],{"type":28,"value":2657},"Hiring a full-time employee is very hard. Especially in the technology field. The reason behind it is that there are\nmany more jobs than quality candidates available in the industry. Despite the companies offering jobs, the reality is\nwe’re at the mercy of the decision of a great candidate due to the law of supply and demand. Scarcity gets higher,\nthe higher you aim for the level of your hires. Great senior engineers are either not looking for a new job or have\nmultiple job offers quickly when they start looking. This in turn leads to higher competition between companies.\nThe company offering the best perks, the highest salary, and the most interesting projects to work on wins the best\ncandidates. In addition to it, there are companies like Google and Amazon who just pay more than anybody else which is\nhard to compete against.",{"type":22,"tag":23,"props":2659,"children":2661},{"id":2660},"how-to-solve-engineering-deficit",[2662],{"type":28,"value":2663},"How To Solve Engineering Deficit",{"type":22,"tag":31,"props":2665,"children":2666},{},[2667],{"type":28,"value":2668},"There are several solutions to this problem. Each has its pros and cons. Let's go over it.",{"type":22,"tag":419,"props":2670,"children":2672},{"id":2671},"growing-existing-talent",[2673],{"type":28,"value":2674},"Growing Existing Talent",{"type":22,"tag":31,"props":2676,"children":2677},{},[2678],{"type":28,"value":2679},"A great full-time employee is a company asset. With some effective management, you should always see some opportunities\nfor leveling up your full-time employees. During your one on ones, ask some questions about what goals your engineers\nwant to achieve. Everyone has some opportunities for improvement. Going to conferences, learning new technologies,\ngiving a technical talk at a local meetup, or improving leadership skills are just some examples. Keeping your\nemployees engaged and growing them professionally will go a long way. On another hand, growing employees takes time.\nThere is also a risk of your employees leaving your company taking the fruits of your labor with them.",{"type":22,"tag":419,"props":2681,"children":2683},{"id":2682},"hiring-junior-engineers-or-interns",[2684],{"type":28,"value":2685},"Hiring Junior Engineers or Interns",{"type":22,"tag":31,"props":2687,"children":2688},{},[2689],{"type":28,"value":2690},"Junior engineers can offer a fresh perspective to an existing team of seasoned engineers. With the right mix of senior\nand junior engineers, it creates great team dynamics. Senior engineers are excited to share their knowledge and the\njunior engineers can keep the senior engineers accountable for producing a lot of business value despite their senior level.\nNeedless to say, there are a lot more Junior engineers available on the job market than seniors. On the downside,\ngrowing junior engineers also takes time. In addition to it, you can only take it so far, hiring too many juniors hurts\nyour team. Once your team becomes Junior heavy you start spinning the wheels where your senior staff spends most of the\ntime handholding, unblocking, and mentoring juniors instead of improving your system architecture and processes.",{"type":22,"tag":419,"props":2692,"children":2693},{"id":1384},[2694],{"type":28,"value":1387},{"type":22,"tag":31,"props":2696,"children":2697},{},[2698,2700,2704],{"type":28,"value":2699},"Contractors come to your team already equipped with the latest software, hardware, and the knowledge of building similar\nproducts in the industry. Due to working on multiple projects in the past, contractors can identify and address some\npotential scalability concerns before they become real issues. A reputable contracting firm comes with a pool of\nengineers allowing them to take on larger projects than individual contractors. In addition to it, a firm has\nspecialists with complementary skills like designers, product managers, QA engineers, etc, which helps them to execute\nquickly and efficiently on a broad range of tasks. On the downside, contractors are not your full-time employees,\nand you need to make sure they work with you the way you prefer. If you would like to enhance your existing team with\nsome additional resources, then ",{"type":22,"tag":221,"props":2701,"children":2702},{"href":1734},[2703],{"type":28,"value":1726},{"type":28,"value":2705},"\nis a great option. This way your team enhanced with some contractors moving in lockstep.\nIf you prefer more of a hands-off approach where you give your contractors a project\nand the work is performed outside of your development cycle, you want to make sure you still own the end product.\nIt's easy to hand off a project and discover that what was built is not something you wanted.",{"type":22,"tag":419,"props":2707,"children":2709},{"id":2708},"contract-to-hire",[2710],{"type":28,"value":2711},"Contract to hire",{"type":22,"tag":31,"props":2713,"children":2714},{},[2715],{"type":28,"value":2716},"If you would like to convert a contractor into a full-time employee, a contract to hire arrangement is for you.\nSuch an arrangement come in different shape and form. If you're looking for a full-time employee and you would like to\nget a feel of how it is to work together with a candidate, you can hire a candidate for several months with an option\nto transition to an FTE. Converting an existing contractor to an FTE is also a possibility. That being said, you want\nto make sure that the contractor or the firm the contractor represents is onboard with such transition and of course,\nthe contractor wants to do it too.",{"type":22,"tag":23,"props":2718,"children":2719},{"id":1432},[2720],{"type":28,"value":1435},{"type":22,"tag":31,"props":2722,"children":2723},{},[2724,2726,2731],{"type":28,"value":2725},"As you can see, there are many ways to hire new talent starting from hiring FTEs, growing the existing talent to hiring\ncontractors. All of which are just different tools allowing you to attract and retain the ",{"type":22,"tag":221,"props":2727,"children":2728},{"href":1299},[2729],{"type":28,"value":2730},"best talent",{"type":28,"value":2732},".\nFinding the right engineering takes time. In addition to filling the potions available,\nyou should also grow your professional network long term. Also, having a reliable contracting firm as your partner goes\na long way. It helps you start on new projects and continue scaling your team.",{"title":7,"searchDepth":232,"depth":232,"links":2734},[2735,2736,2737,2743],{"id":25,"depth":232,"text":29},{"id":2649,"depth":232,"text":2652},{"id":2660,"depth":232,"text":2663,"children":2738},[2739,2740,2741,2742],{"id":2671,"depth":494,"text":2674},{"id":2682,"depth":494,"text":2685},{"id":1384,"depth":494,"text":1387},{"id":2708,"depth":494,"text":2711},{"id":1432,"depth":232,"text":1435},"content:learn:why-hiring-senior-engineers-is-hard-and-how-to-solve-it.md","learn/why-hiring-senior-engineers-is-hard-and-how-to-solve-it.md",1784608334775]