<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Cristina Ruth's RSS Feed]]></title><description><![CDATA[Software Engineering Leadership Thoughts by Cristina Ruth]]></description><link>https://www.cristinaruth.com</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 27 Dec 2021 21:01:19 GMT</lastBuildDate><item><title><![CDATA[5-Minute Guide to Organizing Your Own Tech Meetup]]></title><description><![CDATA[If you've been wanting to organize your own tech meetup, here is a step-by-step guide on how I got started a year or so ago, combined with…]]></description><link>https://www.cristinaruth.com/posts/5-minute-guide-to-organize-your-own-tech-meetup/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/5-minute-guide-to-organize-your-own-tech-meetup/</guid><pubDate>Mon, 13 Jan 2020 12:49:59 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;ve been wanting to organize your own tech meetup, here is a step-by-step guide on how I got started a year or so ago, combined with lessons learned I&apos;ve had along the way.&lt;/p&gt;
&lt;p&gt;The steps are as follows, and we&apos;ll go through each one in detail.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Does the meetup already exist?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What is your goal? Who is your target audience? What are your potential topics?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Who are the organizers of the already-existing tech meetups in your area?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Determine your event cadence.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Determine your event formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Determine your venues and food sources.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build the &quot;interested&quot; contact list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create your meetup group and your first event!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rinse and repeat and keep up interest.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Step 1. Does the meetup already exist?&lt;/h1&gt;
&lt;p&gt;It seems like an obvious question, but we just get so excited at concepts and ideas, that we don&apos;t do our research first. &lt;/p&gt;
&lt;p&gt;Search through meetup.com for tech groups in your area and ensure that none already exist similar to the one you want to create. Sometimes, too, the tech meetups are harder to find and the names are not descriptive enough to know what they are about. As you find tech meetup groups that have a large member base, take note of them and their corresponding organizers as we&apos;ll need them in &lt;strong&gt;step 3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Once we&apos;re sure that the meetup we want to create is unique in your area, we move on to step 2.&lt;/p&gt;
&lt;h1&gt;Step 2. What is your goal? Who is your target audience? What are your potential topics?&lt;/h1&gt;
&lt;p&gt;Each meetup group is different. What do you want to achieve with this meetup? Do you want to connect professional people who work in IT together in a social setting? Do you want to share knowledge with each other?&lt;/p&gt;
&lt;p&gt;The more specific you can be in defining your goal and what to achieve, the better since this will help you define who your &lt;strong&gt;target audience&lt;/strong&gt; would be. Who is the typical person who would attend your meetup events? What do they do? Where do they spend their time? What motivates them to attend your events?&lt;/p&gt;
&lt;p&gt;As you answer these questions around your goal and target audience, it will help you define your potential topics because now, you have an idea of the ideal person who would be attending your event. What topics would they be interested in? Is it new technology, best practices, or other things?&lt;/p&gt;
&lt;p&gt;Note all these down somewhere -- you&apos;ll need to reference them later as you plan and schedule your events.&lt;/p&gt;
&lt;h1&gt;Step 3. Who are the organizers of the already-existing tech meetups in your area?&lt;/h1&gt;
&lt;p&gt;Look through your notes of popular tech meetups and their corresponding organizers from &lt;strong&gt;step 1&lt;/strong&gt;. Reach out to each organizer introducing yourself, stating you want to start your own (maybe include your goal and other details you&apos;ve determined from &lt;strong&gt;step 2&lt;/strong&gt;) and are looking for some tips -- maybe offer to buy them coffee and meet that way. &lt;/p&gt;
&lt;p&gt;You may not get responses from all of them, but the more organizers you meet, the more tips you&apos;ll be able to get.&lt;/p&gt;
&lt;p&gt;Some questions you can ask them that will help you with the next steps are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;What local companies offer venues and/or food for the tech meetups?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What other venue places do they use for their events? What is the associated cost for each one?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What are their event formats? Which are the most popular ones?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What other tips / lessons learned do they have to share?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Step 4. Determine your event cadence.&lt;/h1&gt;
&lt;p&gt;Organizing a meetup takes time. It requires coordinating with venues, local companies, and brainstorming various event formats. Take these into consideration when determining a regular event cadence for your meetup. Will it be monthly, weekly, bi-weekly, etc? If monthly, would be on the 1st, 2nd, 3rd, or 4th Monday, Tuesday, Wednesday, etc? What time would you generally have your events? Think through your schedule and how the meetup events organizing schedule would look like.&lt;/p&gt;
&lt;p&gt;Having a regular cadence will help your members know ahead of time when your events are held and hold a spot on their calendar for your events.&lt;/p&gt;
&lt;h1&gt;Step 5. Determine your event formats.&lt;/h1&gt;
&lt;p&gt;Now that you know your desired event cadence, it&apos;s time to brainstorm some event formats you want for your meetup that are appropriate to your target audience. Hopefully, you&apos;ve gotten some tips from the other tech organizers around this as well.&lt;/p&gt;
&lt;p&gt;Some common formats are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Talks&lt;/strong&gt;. A speaker comes and talks about a particular topic, and then the audience can ask questions afterwards.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lightning Talks&lt;/strong&gt;. Multiple speakers come and speak 5-10 minutes around a common topic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Workshops&lt;/strong&gt;. Hands-on learnings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Social&lt;/strong&gt;. People gather around food and drinks and hang out.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Having a good mix would ensure your meetup doesn&apos;t stay too static and can keep up the interest of your members.&lt;/p&gt;
&lt;h1&gt;Step 6. Determine your venues and food sources.&lt;/h1&gt;
&lt;p&gt;Since meetup is all about meeting people &lt;em&gt;in person&lt;/em&gt;, you would need a space to hold your events in with adequate space for the amount of people you&apos;ll have.&lt;/p&gt;
&lt;p&gt;Hopefully, you&apos;ll have gotten a good list from the other tech organizers in the area, but if not, then you have some research work to do. Local libraries usually have meeting rooms you can use as long as your events are free. Reach out on social media/Slack communities for local companies who may be interested in providing you space for your events.&lt;/p&gt;
&lt;p&gt;People &lt;em&gt;like&lt;/em&gt; food, so bonus points if you can secure some food sponsors for your events. Make sure you set your members&apos; expectations on whether there will be food or not at the events. From personal experience, it&apos;s harder to get companies to pay for food for your meetup, especially if you&apos;re just starting out.&lt;/p&gt;
&lt;h1&gt;Step 7. Build the &quot;interested&quot; contact list.&lt;/h1&gt;
&lt;p&gt;Now that you&apos;ve got a plan, nobody knows your meetup exists. So we now have to do some advertising. I have no marketing background, so this was the hardest part I had to do when I was just starting my own meetup. &lt;/p&gt;
&lt;p&gt;Create a Google form where you can collect emails of people who would be interested in your meetup. Share on social media something around, &quot;Hey, I&apos;m starting this group about X and Z. If you&apos;re interested, I can let you know when we have our first event if you fill out this form.&quot; &lt;/p&gt;
&lt;p&gt;Bonus if you already have existing contacts in your area&apos;s tech community, because then you&apos;d just ask them to spread the word. The other tech organizers may also agree to help you spread the word.&lt;/p&gt;
&lt;h1&gt;Step 8. Create your meetup group and your first event!&lt;/h1&gt;
&lt;p&gt;Once you have an adequate number of interested people signed up and you have an event venue secured, it&apos;s time to create your meetup group and your first event!&lt;/p&gt;
&lt;p&gt;After you&apos;ve scheduled your first event, send the link to the people who signed up from &lt;strong&gt;step 7&lt;/strong&gt;, and spread the word on social media and other tech organizers and other meetup groups. A lot of meetup groups have the discussion board on the front page open to any comments, so you can also comment on there.&lt;/p&gt;
&lt;h1&gt;Step 9. Rinse and repeat and keep up interest.&lt;/h1&gt;
&lt;p&gt;There &lt;em&gt;will&lt;/em&gt; be mistakes -- expect them! And learn from them, and apply any learnings to future events.&lt;/p&gt;
&lt;p&gt;As I mentioned earlier, mix up the events every now and then to keep up interest of your members. If you&apos;re out of ideas, you could ask your members for topics they would be interested in.&lt;/p&gt;
&lt;h1&gt;Wrap Up&lt;/h1&gt;
&lt;p&gt;Creating your own tech meetup requires a lot of initial planning ranging from ensuring that it doesn&apos;t already exist to reaching out to other local tech meetup organizers on lessons learned and securing event venues and food. It also includes defining a goal and your target audience as well as an event cadence and event formats.&lt;/p&gt;
&lt;p&gt;At the start, there will need to be a lot of marketing to help others be aware of your group, but once you start having your events, word-of-mouth advertising will help. Meetup also is a good platform that will drive new members to your group through their defined interests.&lt;/p&gt;
&lt;p&gt;I hope this guide has helped you and I wish you all the best in making your new meetup group! 🙂&lt;/p&gt;
&lt;h1&gt;Other Resources&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sloboda-studio.com/blog/how-to-organize-a-tech-meetup/&quot;&gt;https://sloboda-studio.com/blog/how-to-organize-a-tech-meetup/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pragtob.wordpress.com/2016/03/31/before-you-start-to-organize-a-meetup/&quot;&gt;https://pragtob.wordpress.com/2016/03/31/before-you-start-to-organize-a-meetup/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[5 Ways Writing Documentation Helps YOU]]></title><description><![CDATA[When I first started my professional dev career, I  hated  writing documentation. I didn't think it was as fun as coding and so, I never…]]></description><link>https://www.cristinaruth.com/posts/5-ways-writing-documentation-helps-YOU/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/5-ways-writing-documentation-helps-YOU/</guid><pubDate>Thu, 02 Jan 2020 13:25:46 GMT</pubDate><content:encoded>&lt;p&gt;When I first started my professional dev career, I &lt;strong&gt;hated&lt;/strong&gt; writing documentation. I didn&apos;t think it was as fun as coding and so, I never took the time to write them.&lt;/p&gt;
&lt;p&gt;Over the years, as my job responsibilities progressed, I realized how valuable writing documentation is and that, ultimately, doing so helps &lt;strong&gt;me&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;What is Documentation?&lt;/h2&gt;
&lt;p&gt;Before we go any further, let&apos;s first clarify what documentation is.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Documentation is written &quot;articles&quot; or descriptions around a specific topic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Documentation can be written for many things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Explaining the description of classes, functions and variables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining the &quot;why&quot; behind business logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining how things in a system connect together. (i.e. diagrams of database connections and APIs and servers, etc)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining how to get something set up. (i.e. getting a developer machine setup to enable development work for a given repository)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining guidelines. (i.e. a standards documentation around variable naming and patterns to be used)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining troubleshooting steps for common problems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explaining the high-level logic flow of a specific feature. (i.e. diagram flowchart)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And more.&lt;/p&gt;
&lt;p&gt;As developers, we read documentation when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Trying to install a &quot;plugin&quot; into our project. We then read through their &quot;get started&quot; documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Trying to troubleshoot a bug, and we find our way into a &quot;plugin&quot;. We then read through their &quot;troubleshooting&quot; documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When we&apos;re looking into contributing to an open source project, we read through their &quot;Contributing.md&quot; documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When we&apos;re setting up our machines to have a local working environment for an open source project, we read through their &quot;Setup.md&quot; documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And more.&lt;/p&gt;
&lt;h2&gt;How Documentation Helps YOU&lt;/h2&gt;
&lt;p&gt;In this article, we&apos;ll walk through 5 ways writing documentation helps &lt;strong&gt;you&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Improve your writing skills.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Help yourself in the future.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Help your teammates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Free your time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Help yourself stand out.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;1. Improve Your Writing Skills&lt;/h2&gt;
&lt;p&gt;Writing skills are applicable to &lt;strong&gt;all&lt;/strong&gt; aspects of your life. You need writing skills to be able to efficiently communicate  the message you want to deliver. This applies in everything -- from your personal life to school to your career, &lt;em&gt;any&lt;/em&gt; career.&lt;/p&gt;
&lt;p&gt;The more documentation you write, the more you hone and improve your writing skills.&lt;/p&gt;
&lt;h2&gt;2. Help Yourself in the future&lt;/h2&gt;
&lt;p&gt;That code you write and how it all works together, as well as all the business logic around it and how everything is connected -- that &lt;em&gt;context&lt;/em&gt; &lt;strong&gt;WILL&lt;/strong&gt; be gone in just a few weeks of not working on it.&lt;/p&gt;
&lt;p&gt;When you have multiple codebases to touch or large codebases with multiple various complex functionalities, each piece will have &lt;em&gt;pick-up time&lt;/em&gt; which will take a &lt;strong&gt;lot longer&lt;/strong&gt; without documentation. (Pick up time is the amount of time it takes to be able to understand a given task and start making progress to finishing it.)&lt;/p&gt;
&lt;p&gt;I&apos;ve personally found that writing the supporting documentation on what I&apos;ve done helps &lt;strong&gt;me&lt;/strong&gt; a couple months in the future when I have to touch the project again.&lt;/p&gt;
&lt;p&gt;If it&apos;s code you know you will not touch for a while but will need to come back to, it may be worth the time investment to write the supporting documentation for it.&lt;/p&gt;
&lt;h2&gt;3. Help Your Teammates&lt;/h2&gt;
&lt;p&gt;As we discussed above, code is complex and pick-up time takes a lot longer without written documentation.&lt;/p&gt;
&lt;p&gt;If you work in a team environment where your code &lt;strong&gt;will&lt;/strong&gt; be worked on by some other developer, then it would be even harder for them to pick up the context without written documentation.&lt;/p&gt;
&lt;p&gt;By writing supporting documentation on the what you&apos;ve written, you&apos;re &lt;strong&gt;enabling&lt;/strong&gt; your teammates to be more productive.&lt;/p&gt;
&lt;h2&gt;4. Free Your time&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Have you ever gotten a meeting invite asking how things work? 🙋‍♀️&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have you ever gotten emails asking how to do a particular task? 🙋‍♀️&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have you ever gotten emails asking why something works a particular way and it&apos;s the same answer every time? 🙋‍♀️&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ever since I&apos;ve started writing supporting documentation, I have had less meetings and emails around how things work/how to do things.&lt;/p&gt;
&lt;p&gt;If I encounter a meeting invite around a topic that isn&apos;t captured in the documentation, I create the documentation before the meeting if I have time, send it to the meeting requestor, and ask them to meet with me if the documentation is not suffice. If I don&apos;t have enough time before the meeting, I write the documentation afterwards because I &lt;strong&gt;know&lt;/strong&gt; it will save me meeting time in the future.&lt;/p&gt;
&lt;p&gt;I start a FAQ documentation on how to do specific tasks and around questions that have the same answers. I then point people to these when answering emails. Now they know in the future where to go to get their answers. If they do forget, it takes me much less time to give them a link to the FAQ documentation.&lt;/p&gt;
&lt;h2&gt;5. Help Yourself Stand Out&lt;/h2&gt;
&lt;p&gt;If you help &lt;strong&gt;others&lt;/strong&gt; be productive by writing documentation, you will set yourself apart and stand out. &lt;/p&gt;
&lt;p&gt;I&apos;ve worked with a lot of developers, and few take the time to write documentation. So I am very appreciative when I encounter the ones that enable me to be productive because they took the time to write up supporting documentation, and it also saves me a meeting request.&lt;/p&gt;
&lt;p&gt;By writing supporting documentation, you set yourself apart and &lt;strong&gt;enable&lt;/strong&gt; others to be more productive. In my experience, developers who help others be more productive are the ones who get &lt;strong&gt;promoted&lt;/strong&gt;. &lt;/p&gt;
&lt;h2&gt;Documentation Caveat&lt;/h2&gt;
&lt;p&gt;As with all things related to software development, documentation takes time and effort. Therefore, it requires some time management. &lt;/p&gt;
&lt;p&gt;There would be situations where there would be no time to write documentation due to critical project timelines.&lt;/p&gt;
&lt;p&gt;We, therefore, need to be cognizant of &lt;strong&gt;when&lt;/strong&gt; it&apos;s appropriate to &lt;strong&gt;invest&lt;/strong&gt; in writing documentation, and when it&apos;s not.&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;Writing documentation helps &lt;strong&gt;you&lt;/strong&gt; enhance your writing skills while enabling yourself and your teammates to be more productive. It also saves you time from meetings and emails in the future. By enabling others and having good written communication skills, you &lt;strong&gt;highly increase&lt;/strong&gt; your chances of getting &lt;strong&gt;promoted&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But we also need to realize that it takes effort and time, and we just have to also be aware when it makes sense to write it, and when it doesn&apos;t.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[11 Things to Consider for More Accurate Developer Estimates]]></title><description><![CDATA[If you've been asked to do an estimate before, you'd agree it's easier said than done. The bigger the scope (how much to be done), the…]]></description><link>https://www.cristinaruth.com/posts/11-things-to-consider-for-more-accurate-developer-estimates/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/11-things-to-consider-for-more-accurate-developer-estimates/</guid><pubDate>Mon, 23 Dec 2019 15:10:57 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;ve been asked to do an estimate before, you&apos;d agree it&apos;s easier said than done.&lt;/p&gt;
&lt;p&gt;The bigger the scope (how much to be done), the harder it is to estimate because the complexity increases and therefore, the ambiguity and unknowns increase, and the more room there are for bugs, mistakes and miscommunication.&lt;/p&gt;
&lt;h2&gt;Types of Estimates&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;High-Level&lt;/strong&gt;. At this point, our business partners/clients just want to understand the total effort required for something they are &lt;em&gt;considering&lt;/em&gt; doing. They want a &lt;em&gt;gut&lt;/em&gt; estimate, something that takes a &lt;em&gt;few seconds&lt;/em&gt; to estimate. They don&apos;t want much time spent on even just estimating because they are not sure yet if it&apos;s worth the investment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Detailed&lt;/strong&gt;. Detailed estimates are when the project has already been &lt;em&gt;vetted&lt;/em&gt; and our business partners/clients want a &lt;em&gt;more accurate&lt;/em&gt; estimate on what it would take. We can then take the time to analyze it a bit more so we can come back with more defined tasks and a more defined timeline.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In my experience, &lt;strong&gt;high-level&lt;/strong&gt; estimates are used a lot more because they apply to a lot of things, and not just to estimate a project effort. They are also used to quick estimate &lt;strong&gt;features&lt;/strong&gt; and &lt;strong&gt;bugs&lt;/strong&gt; for easier prioritization on which ones are to be focused on.&lt;/p&gt;
&lt;p&gt;I&apos;ve also found that I only do &lt;strong&gt;detailed&lt;/strong&gt; estimates at the start of a &lt;em&gt;just vetted&lt;/em&gt; project to help identify the various pieces and estimated timeline and effort of the project as a whole.&lt;/p&gt;
&lt;p&gt;Since &lt;strong&gt;high-level&lt;/strong&gt; estimates are done a lot more times than &lt;strong&gt;detailed&lt;/strong&gt; ones, this post will then focus on the things I usually consider when doing &lt;strong&gt;high-level&lt;/strong&gt; estimates.&lt;/p&gt;
&lt;h2&gt;Overview of Things to Consider&lt;/h2&gt;
&lt;p&gt;When providing a high-level estimate, here are all the things I consider in my head before giving an answer. We&apos;ll go through each one in detail below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Identify the various pieces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;My and my team of developers&apos; familiarity with all the pieces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Impact on existing functionalities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to communicate and organize daily task progress and coordinating with my team of developers as well as our business partners/clients.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to write unit tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to write integration tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to manually test.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to log bugs, triage them, prioritize them, and retesting them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to document what we have done, especially if it&apos;s a &lt;em&gt;major&lt;/em&gt; effort.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to log bugs, triage them, prioritize them, and retesting them &lt;strong&gt;AFTER&lt;/strong&gt; going live.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time to train support operations staff to support the new functionality.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Depending on the thing we&apos;re estimating (project, feature or bug), not all of the above may apply, but I do go through this list in my head no matter what I&apos;m estimating.&lt;/p&gt;
&lt;h2&gt;1 - Identifying the Various Pieces&lt;/h2&gt;
&lt;p&gt;Even in high-level estimates, a &lt;em&gt;gut&lt;/em&gt; design on how the pieces work together will form in our heads of what it would take. Taking that design and breaking it down into multiple pieces then helps us identify the complexity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;What are all the various pieces involved in the work that is to be done?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How many systems and codebases are we touching?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How many APIs are we going to call?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Which databases do we connect to, if any?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What are the frameworks/plugins/architecture/packages/patterns that we need to use and/or apply?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since this is a high-level design, we can only use what we &lt;strong&gt;know&lt;/strong&gt; of the systems. So familiarity helps provide more accurate estimates. Which brings me to my next point.&lt;/p&gt;
&lt;h2&gt;2 - Familiarity with all the Pieces&lt;/h2&gt;
&lt;p&gt;With all the pieces we were able to identify, what is our familiarity with all the pieces?&lt;/p&gt;
&lt;p&gt;I usually work with a team of developers, so for a safer estimate, I usually &lt;strong&gt;assume&lt;/strong&gt; that majority of them, including myself, will not be familiar with everything. &lt;/p&gt;
&lt;p&gt;I usually consider familiarity around:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Codebases and structure&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Database schemas&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Architectural patterns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;APIs (is it a new API we&apos;re going to be using)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vendor solutions &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I then account for &lt;strong&gt;time to learn&lt;/strong&gt; -- reading the documentation, researching and even coordinating with a knowledgeable resource. A lot of times, there are multiple knowledgeable resources, one for each &lt;em&gt;piece&lt;/em&gt; we are not familiar with.&lt;/p&gt;
&lt;h2&gt;3 - Identifying Functionality Impact&lt;/h2&gt;
&lt;p&gt;This thing that we are estimating -- is it a new functionality? Or is it updating an existing functionality? If so, then is it a &lt;strong&gt;core&lt;/strong&gt; one that would impact &lt;em&gt;multiple&lt;/em&gt; other functionalities when updated?&lt;/p&gt;
&lt;p&gt;Knowing this answer will help us gauge our overall testing effort. The more existing functionalities are impacted, the more testing we will have to be doing (i.e. regression testing).&lt;/p&gt;
&lt;p&gt;If your impacted functionalities have already existing unit tests and integration tests, then we&apos;ll also need to consider the effort to &lt;em&gt;update&lt;/em&gt; existing unit tests and integration tests as needed. Having existing unit tests and integration tests will definitely help &lt;strong&gt;reduce&lt;/strong&gt; the overall testing effort, because these will cover part of your regression testing.&lt;/p&gt;
&lt;h2&gt;4 - Communication and Organization Overhead&lt;/h2&gt;
&lt;p&gt;We&apos;ll also need to consider communication time and organization time to sort and execute through our daily tasks.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How much time would it take to organize through the tasks that we need to get done?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How much time would it take to provide updates to the team of what we got done, what is in progress, and what we&apos;re going to work on next?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How much time would it take to coordinate with the knowledge resources to get the information we need to complete our tasks?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How much time would it take to coordinate with my team of developers and answer their clarification questions?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How much time would it take to coordinate with our business partners/clients to clarify requirements and prioritize features/bugs?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Executing through a project requires a lot of communication between me, my team of developers, our business partners/clients, and our stakeholders. Communicating is part of the work if we want to ensure building that &lt;strong&gt;trust&lt;/strong&gt; relationship with the people we work with.&lt;/p&gt;
&lt;h2&gt;5 - Writing Unit tests&lt;/h2&gt;
&lt;p&gt;If we&apos;re writing new functionality, and we&apos;ve established that they are worth writing unit tests for, then we need to accommodate for the time to write them. &lt;/p&gt;
&lt;p&gt;Similarly, if you develop using TDD (test driven development), then your work effort will include this as well as the solution is developed.&lt;/p&gt;
&lt;h2&gt;6 - Writing Integration Tests&lt;/h2&gt;
&lt;p&gt;If your team invests in integration tests, then these may need to be written as well.&lt;/p&gt;
&lt;h2&gt;7 - Manual Testing&lt;/h2&gt;
&lt;p&gt;Despite unit tests and integration tests being present, there is still manual testing that needs to be done.&lt;/p&gt;
&lt;p&gt;The less unit tests and integration tests you have, the more manual testing that will need to be done.&lt;/p&gt;
&lt;p&gt;This includes the initial manual testing done when development is complete. But, I also include the manual testing required &lt;strong&gt;each and every time&lt;/strong&gt; a bug is fixed, or a code change has been introduced due to shifted requirements.&lt;/p&gt;
&lt;h2&gt;8 - Bugs and More Bugs&lt;/h2&gt;
&lt;p&gt;So we&apos;ve written our automated tests and have done our manual testing. During our initial manual testing phase, it is highly likely that we will find bugs.&lt;/p&gt;
&lt;p&gt;Depending on how many bugs are found, there is effort to sort through them, triage them, prioritize them, fix them, test them and coordinate with the team on their status. &lt;/p&gt;
&lt;p&gt;Worse, bug fixes can introduce &lt;em&gt;more&lt;/em&gt; bugs so typically, bug fixes also include regression testing to ensure nothing else got broken.&lt;/p&gt;
&lt;h2&gt;9 - Updating Documentation&lt;/h2&gt;
&lt;p&gt;If your team is invested in creating/maintaining documentation, this is also additional effort.&lt;/p&gt;
&lt;p&gt;Consider the size and complexity of the solution and how much the documentation needs to be updated/created.&lt;/p&gt;
&lt;h2&gt;10 - Stabilization after Going Live&lt;/h2&gt;
&lt;p&gt;Despite all our testing efforts, we can only test so much scenarios ourselves. Our real users and real data puts our solution to the test.&lt;/p&gt;
&lt;p&gt;During this time, we are in &lt;em&gt;bugs and more bugs&lt;/em&gt; stage again, but uncontrolled and in the hands of our users.&lt;/p&gt;
&lt;h2&gt;11 - Handing Off to Operational Support&lt;/h2&gt;
&lt;p&gt;For some teams, operational support (incidents when things are down/not working right, fixing production bugs, upgrading dependencies like servers, databases, plugins, etc) is handled by a different team.&lt;/p&gt;
&lt;p&gt;If this applies, then there is also additional effort in handing this off to the operational support team, and likely a duality will be present wherein there will be a time period where you and/or your development team will provide some support to the operational support team as they learn the solution until they can handle majority, if not all, of the problems/support questions that come through.&lt;/p&gt;
&lt;h2&gt;Wrapping Up&lt;/h2&gt;
&lt;p&gt;Developing solutions not only includes development time, but analysis, communication, testing and stabilization. &lt;/p&gt;
&lt;p&gt;The larger the change size, the higher the complexity and the more difficult it is to estimate. Ambiguity and unknowns also increase the estimate because they also increase the complexity.&lt;/p&gt;
&lt;p&gt;The more detailed we can be when doing our estimates, the better our estimates will become.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[4 Steps To Grow Your People Skills]]></title><description><![CDATA[Talking with people is not easy. 6 years ago, I was immensely shy and found it hard to talk with people. Today, I give talks at conferences…]]></description><link>https://www.cristinaruth.com/posts/4-steps-to-grow-your-people-skills/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/4-steps-to-grow-your-people-skills/</guid><pubDate>Wed, 11 Dec 2019 11:01:46 GMT</pubDate><content:encoded>&lt;p&gt;Talking with people is not easy. 6 years ago, I was immensely shy and found it hard to talk with people. Today, I give talks at conferences. &lt;/p&gt;
&lt;p&gt;In this post, I share my history, my journey, my learnings, and outlined them to 4 steps where &lt;strong&gt;YOU&lt;/strong&gt; can do it too.&lt;/p&gt;
&lt;h2&gt;Then and Now&lt;/h2&gt;
&lt;h3&gt;6 years ago&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I would rather code all day than to talk with people.&lt;/li&gt;
&lt;li&gt;I focused on myself and only worked people if I had to.&lt;/li&gt;
&lt;li&gt;I pretended I was busy with my phone or something else when I found myself in an elevator with a stranger.&lt;/li&gt;
&lt;li&gt;I clammed up when speaking in front of a lot of people.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Today&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I actually &lt;strong&gt;like&lt;/strong&gt; talking to people. In fact, I start feeling sad if I spend too many days coding by myself.&lt;/li&gt;
&lt;li&gt;I focus on others and continually seek out new people even if I don&apos;t have to work with them.&lt;/li&gt;
&lt;li&gt;I say hi and chat about the weather, or what&apos;s currently happening, with a stranger in an elevator. I also smile and say hi to people I &quot;meet&quot; in the hallways.&lt;/li&gt;
&lt;li&gt;I can talk comfortably in front of a lot of people. I still get nervous, but it&apos;s way easier now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What Happened?&lt;/h2&gt;
&lt;p&gt;The first couple of years, I think it was mainly due to increased job responsibilities -- becoming more of a lead/senior dev. As part of that, I had to interact and talk with people a &lt;em&gt;lot&lt;/em&gt; more. I had to clarify requirements, ask questions, set expectations, coordinate with testers, etc. &lt;/p&gt;
&lt;p&gt;Over the years, I learned to &quot;banter&quot; and &quot;small talk&quot; through trials and errors and practice -- &lt;em&gt;lots&lt;/em&gt; of practice.&lt;/p&gt;
&lt;p&gt;Then, a few years ago, I read a couple of books (mentioned below) that radically changed my view from &lt;em&gt;me&lt;/em&gt; to &lt;em&gt;you&lt;/em&gt; -- and &lt;strong&gt;genuinely&lt;/strong&gt; caring for others, their needs and listening.&lt;/p&gt;
&lt;p&gt;It was hard but after reading those books, I actively &lt;strong&gt;tried&lt;/strong&gt; doing things that I was super uncomfortable about -- like...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Saying hi to complete strangers&lt;/li&gt;
&lt;li&gt;Speaking in front of people&lt;/li&gt;
&lt;li&gt;Making small talk&lt;/li&gt;
&lt;li&gt;Finding topics to talk about, and&lt;/li&gt;
&lt;li&gt;Keeping conversations going&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There were a LOT of cringy and mortifying moments like...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OMG. That did NOT go well. So embarrassing!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But despite those, I still kept on trying. And trying. And trying. And telling myself:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OK. That was not good, but let&apos;s focus on what YOU can learn from this and learn what NOT to do next so we can improve!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And somehow, suddenly, I realized that I can talk with people better and I can talk in front of people better. It&apos;s &lt;em&gt;easier&lt;/em&gt;! Note the &lt;em&gt;er&lt;/em&gt;. It&apos;s still hard, but it&apos;s not as gut-wrenching as I found it before.&lt;/p&gt;
&lt;h2&gt;How You Can Do It Too&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Note: This section does not contain affiliate links.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;1. Read the Book &quot;How to Win Friends and Influence People&quot;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/How-Win-Friends-Influence-People/dp/B0006IU7JK/ref=sr_1_3?crid=3FNDAJEFL6755&amp;keywords=how+to+win+friends+and+influence+people&amp;qid=1578239535&amp;sprefix=how+to+win+frien%2Caps%2C197&amp;sr=8-3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;external-link&quot;&gt;How to Win Friends and Influence People&lt;/a&gt; by Dale Carnegie&lt;/p&gt;
&lt;p&gt;This book helped me focus on others instead of myself, and oddly enough, by focusing on others, I have actually benefitted &lt;strong&gt;more&lt;/strong&gt; by forming more genuine connections and had a huge part in earning me a &lt;strong&gt;promotion&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you find yourself struggling to talk with people like I described above, give this book a shot and see what kind of learnings you can take from it. Check your local library if they have a copy. Take notes as you read. Make a cheat sheet for your reference for your daily life.&lt;/p&gt;
&lt;h3&gt;2. Read the Book &quot;The 7 Habits of Highly Effective People&quot;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Habits-Highly-Effective-People-Powerful/dp/1451639619/ref=sxts_sxwds-bia?crid=2FGADSH971NBN&amp;keywords=7+habits+of+highly+effective+people&amp;pd_rd_i=1451639619&amp;pd_rd_r=1cdf1a12-a168-4738-9af7-6bf40a34d593&amp;pd_rd_w=kJbF4&amp;pd_rd_wg=xnM4X&amp;pf_rd_p=1cb3f32a-ccfd-479b-8a13-b22f56c942c6&amp;pf_rd_r=R08GTY3FAHEMG7VQQP36&amp;psc=1&amp;qid=1576021033&amp;sprefix=7+habits+o%2Caps%2C212&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;external-link&quot;&gt;The 7 Habits of Highly Effective People&lt;/a&gt; by Stephen R. Covey&lt;/p&gt;
&lt;p&gt;I honestly thought this was a productivity book. Little did I know that it contained lots and lots of life lessons within. One of the biggest lessons I took from this book was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Seek first to understand, than to be understood.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is huge when talking with people, especially conflicts, which is inevitable in any relationship, personal or professional.&lt;/p&gt;
&lt;p&gt;This book &lt;strong&gt;enhanced&lt;/strong&gt; the learnings I got from &lt;code&gt;How to Win Friends and Influence People&lt;/code&gt;, and taught me more about relationships, both personal and professional, as well as teaching me how to determine what I really want and then take actions on those wants/goals. &lt;/p&gt;
&lt;p&gt;If you&apos;d like to further improve your relationships, as well as learn how to set your goals and take action, check your local library and see if they have a copy. Take notes. Make a cheat sheet!&lt;/p&gt;
&lt;h3&gt;3. Apply Your Learnings&lt;/h3&gt;
&lt;p&gt;Keep them small -- &lt;strong&gt;one thing&lt;/strong&gt; you can do for that day. And then &lt;strong&gt;make sure&lt;/strong&gt; to celebrate that you tried! No matter the result -- whether you succeeded or not. Be kind to yourself, and help yourself through this. Change is hard. But it only will happen through persistence despite hard times. Learn from your mistakes and you &lt;strong&gt;will&lt;/strong&gt; eventually succeed!&lt;/p&gt;
&lt;p&gt;Some small things I tried that you can try too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Say hi to a stranger.&lt;/li&gt;
&lt;li&gt;Remembering to ask a person who asked how I was - &lt;code&gt;how are YOU?&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Remembering to &lt;strong&gt;listen&lt;/strong&gt; to the other person I&apos;m talking to. Instead of thinking and thinking on what &lt;em&gt;I&lt;/em&gt; am going to say next.&lt;/li&gt;
&lt;li&gt;Strike up a conversation with a random stranger.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A tip I read somewhere I found really helpful when talking with random strangers is to comment on something you &lt;strong&gt;both&lt;/strong&gt; are experiencing OR having experienced. This is why the weather is such a common small talk topic! We all are experiencing the same weather when we&apos;re in the same physical space.  A similar conversation starter is asking how their conference experience is so far (if you&apos;re attending a conference)&lt;/p&gt;
&lt;h3&gt;4. Go Bigger&lt;/h3&gt;
&lt;p&gt;When you&apos;ve done the small things above consistently to the point that you got better, you&apos;ll just randomly realize that you are better at interacting with people. It&apos;s just a &lt;em&gt;bit&lt;/em&gt; easier than it was before.&lt;/p&gt;
&lt;p&gt;Keep challenging yourself at this point. Keep practicing. Go &lt;em&gt;bigger&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Some big things I tried that you can try too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Submitted and presented talks for conferences.&lt;/li&gt;
&lt;li&gt;At conferences, sat at tables where complete strangers were sitting AND talked with them.&lt;/li&gt;
&lt;li&gt;Joined in in-progress conversations where people were already talking.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is definitely scarier. I did my first &lt;em&gt;big conference&lt;/em&gt; talk in September this year, and I was &lt;em&gt;nervous&lt;/em&gt;! It&apos;s very different being up in front of a bunch of people rather than just talking in-person with 1 or a few people. My instinct was to just quit and stop because it would be easier to do that. &lt;/p&gt;
&lt;p&gt;But if I had done that, I would not have been able to give my talk. I would&apos;ve not been able to grow.&lt;/p&gt;
&lt;p&gt;My talk went fine -- I felt &lt;em&gt;really&lt;/em&gt; awkward -- but I had chosen a topic I &lt;strong&gt;knew&lt;/strong&gt; by heart and so, talking about it, the words just came flowing out of my mouth. It was easy to talk about it because I knew the topic so well.&lt;/p&gt;
&lt;p&gt;And I &lt;strong&gt;celebrated&lt;/strong&gt; that I did it. That I tried it.&lt;/p&gt;
&lt;p&gt;It is so important to celebrate our small wins, and celebrate the fact that we just &lt;em&gt;tried&lt;/em&gt; it. &lt;strong&gt;You&lt;/strong&gt; can do it too!&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I&apos;m still not perfect in talking with people and I will &lt;strong&gt;never be&lt;/strong&gt; and that is &lt;strong&gt;perfectly okay&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt; will never be either and that is also perfectly okay! Just keep learning, trying, practicing and celebrate your small wins. What matters is that you are &lt;strong&gt;better&lt;/strong&gt; than how you were before.&lt;/p&gt;
&lt;h2&gt;Other Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Crucial-Conversations-Talking-Stakes-Second/dp/0071771328/ref=sr_1_2?keywords=crucial+conversations&amp;qid=1578240111&amp;s=books&amp;sr=1-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;external-link&quot;&gt;Crucial Conversations Tools for Talking When Stakes Are High&lt;/a&gt; by Kerry Patterson, Joseph Grenny, Ron McMillan and Al Switzler - I found this book helpful on dealing with conflicts with people and being able to navigate those conversations especially with emotions run high. After you&apos;ve read the other books above and want more, this is another book that can help you hone those people skills.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[14 Soft Skills You Need To Be A Successful Developer Consultant]]></title><description><![CDATA[As developer consultants, we generally work with clients, majority of whom are not technical, to help deliver a software solution to their…]]></description><link>https://www.cristinaruth.com/posts/14-skills-you-need-to-be-a-successful-developer-consultant/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/14-skills-you-need-to-be-a-successful-developer-consultant/</guid><pubDate>Tue, 03 Dec 2019 19:18:59 GMT</pubDate><content:encoded>&lt;p&gt;As developer consultants, we generally work with clients, majority of whom are not technical, to help deliver a software solution to their problems.&lt;/p&gt;
&lt;p&gt;It&apos;s not always easy because technical skills alone would not result in a happy client, and I was curious what key skills you need to have to be a successful one. So I chatted with a couple of other local Madison devs and we discussed what we think these key skills are.&lt;/p&gt;
&lt;p&gt;Below is a summary of our key points and our chat log behind each one.&lt;/p&gt;
&lt;h2&gt;1. Learning&lt;/h2&gt;
&lt;p&gt;Having the &lt;strong&gt;ability to learn &lt;em&gt;and&lt;/em&gt; how fast you learn&lt;/strong&gt; will impact your consulting relationship with your client. There are many things to learn like the client&apos;s business, their needs/problems, who knows which, even their codebase and tech stack. It&apos;s similar to &lt;strong&gt;adaptability&lt;/strong&gt;, and certainly having a &lt;strong&gt;positive attitude&lt;/strong&gt; and &lt;strong&gt;I can do it attitude&lt;/strong&gt; will help you tackle all of the things that need to be learned and adapted to.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; An employee is expected to have some ramp-up time to absorb the stack, the company, the culture, etc, but a consultant is expected to be productive as quickly as possible. That means the entire engagement depends on the consultant learning as much as possible as fast as possible -- understanding the client&apos;s business, their needs, their problems, how to get results from other people in the company, who to talk to for what, etc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Ah so can this also mean &lt;strong&gt;adaptability&lt;/strong&gt;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I think there&apos;s a lot of overlap there&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Yeah, I think a positive attitude is also key here&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; There&apos;s a lot of things to tackle&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Having an &quot;I can do it&quot; attitude will keep you resilient in all the things that need to be done.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Definitely. It&apos;s also a great way to build exposure to a wide breadth of things. The &quot;sure, I&apos;ll take that on&quot; attitude keeps you relevant as technology and the business keep moving forward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2. Ability to Listen&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Listen&lt;/strong&gt; to your client, ask further &lt;strong&gt;questions&lt;/strong&gt; and &lt;strong&gt;read between the lines&lt;/strong&gt; to determine if what they&apos;re asking for really would meet their needs. A lof ot clients come with assumed solutions already in mind and part of the consultant&apos;s work is to ensure that the client gets the appropriate solution that fits &lt;em&gt;their&lt;/em&gt; needs.&lt;/p&gt;
&lt;p&gt;But it&apos;s tricky. While doing this, you have to be careful on ensuring the &lt;strong&gt;client still feels heard&lt;/strong&gt; and does not feel arrogance coming from your end.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; You have to be able to listen very carefully hear to what your client is really asking for versus what he/she may be asking for at face value. &quot;Listening&quot; encompasses asking good questions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Oh, yeah, reading between the lines!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; That&apos;s a good point. Clients usually assume you know all about their business and general things about their problem. Sometimes getting results means putting on the deerstalker hat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; Example: we&apos;ve learned the hard way that clients don&apos;t always really know what platform (!) they should really be targeting. We&apos;ve built web apps that the client later decided should be mobile, and vice versa. More careful inquiry, poking and prodding at the early stages, versus, simply taking the ask at face value would have saved both of us time &amp;#x26; $.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; And also, the client needs to feel that they&apos;re actually heard right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; It&apos;s a careful line to listen between the lines and making the customer not feel like they&apos;re heard and just sensing arrogance from the consultant.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; def&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;3. Expectation Management&lt;/h2&gt;
&lt;p&gt;Setting expectations applies not only to customers/clients, but also team members, bosses and executives. It can also apply to your personal life, like with a significant other, a friend, a child, a parent, a relative or an acquaintance.&lt;/p&gt;
&lt;p&gt;Ensure &lt;em&gt;they&lt;/em&gt; know what to expect from you so that you can manage and build their &lt;strong&gt;trust&lt;/strong&gt; in the relationship. This means a lot of &lt;strong&gt;proactive&lt;/strong&gt; communication, and asking clarifying questions if you are not sure about something.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; So by Expectation Management, I mean that developers should be able to set expectations with customers and teammates, if applicable.
This means, letting them know what&apos;s coming next, what to expect, what are the good things, what are the bad things.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Wrong expectations would result in people getting upset because expectations weren&apos;t managed well enough.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; For example, I am working with a customer and they asked me to develop something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; If I didn&apos;t manage expectations well, I would say I&apos;ll get this done within a week.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; If I did, I could say that I need more information, and some time to research, and I don&apos;t know the exact timeline yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I&apos;ve found this to be crucial for building trust with the client&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; Managing client expectations is hugely important, and not always easy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; so — yeah, good one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;4. Negotiation&lt;/h2&gt;
&lt;p&gt;As mentioned, clients/customers can have specific solutions already in mind, and sometimes, that means asking for &lt;em&gt;impossible&lt;/em&gt; things. This &lt;a href=&quot;https://www.youtube-nocookie.com/embed/BKorP55Aqvg&quot; target=&quot;_blank&quot; class=&quot;external-link&quot; rel=&quot;noopener noreferrer&quot;&gt;short youtube comedy sketch&lt;/a&gt; demonstrates how difficult that can be. Being able to counter and negotiate their asks while keeping that &lt;strong&gt;trust&lt;/strong&gt; in the relationship will ensure the client gets what they really need.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Customers can tend to ask for impossible things. Having the ability to counter their asks and explain things in a way that they can see the benefit to them, can mean $$$ saved for the customers and more efficient solutions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; good one also&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; This is a good one but also difficult to master. I have not 😟 but my go-to tactic is to find a win-win-win by understanding what&apos;s driving the client.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; I don&apos;t think anybody would ever master this. It&apos;s so hard!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kendell:&lt;/strong&gt; I&apos;ve found while consulting for Horticulture, before switching to tech that self worth is a big part of negotiation. That way you don&apos;t feel guilty asking for a deal that respects your time &amp;#x26; financial expectations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Somewhere I read that negotiation should always be approached from a position of power - even if the only &quot;power&quot; is that you can walk away.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Hmm.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Doesn&apos;t sound quite right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; In a consultant role, you don&apos;t have that position of power&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I think it depends on the individual. I was sent to a client recently and found the manager to be an absolutely terrible person, and it was very bad for their dev team. I informed my boss I wouldn&apos;t be returning and felt the moral situation strong enough to say my employer could either keep me and not send me back or lose me. A couple of weeks later the manager was let go.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Wow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; I&apos;m glad to hear you have your employer support on this one&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Everything&apos;s shades of intensity, but if the worst case happens, there&apos;s always another job&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; I think that&apos;s easier for people with years of experience on their belt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; It&apos;s hard for someone who&apos;s just starting out. their bargaining power is pretty low&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I think there&apos;s a bell curve. Having no experience definitely lessens that power. 3-6 years of experience is where the power maximizes because that&apos;s where the highest number of positions are. 7+ reduces in power again because the number of options becomes more limited.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Wait. interesting. Why do you think 7+ reduces the power?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; But in the end I see it as being about self-respect. Gotta eat Ramen for a few months to get out of a toxic job? Do it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Harder for people wtih families though. Especially if you don&apos;t have the backup savings to not really care about keeping your job&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Still curious why would 7 years of experience reduce the number of options&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; IMO it&apos;s a function of specialty and salary. 7+ years usually means you&apos;re in a niche or deep in a specific industry or set of technologies. Shifting to a job in a different area would require taking a pay cut because you&apos;re basically the equivalent of someone with 2-3 years of experience in that area. Not many people are willing to take that drastic of a measure (though we have seen several recently at my company).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Oh, good point.  didn&apos;t realize that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Family/savings as a limiter is definitely true, but there are always other jobs. TekSystems will take anyone who hasn&apos;t been a zombie for more than four or five months.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; True, but the quality of the position would be questionable right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Oh, undoubtedly, but if it&apos;s just a temp position while searching for a &quot;real&quot; job, it&apos;s a way to pay the bills/support the family until something better is available&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; True enough, good point&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;5. Explain Technical Concepts&lt;/h2&gt;
&lt;p&gt;When going to the doctor and they bring up a medical term about what you have and does not explain what it is, do you find yourself getting frustrated? &lt;/p&gt;
&lt;p&gt;In our technical software world, a lot of terms are &lt;strong&gt;jargon&lt;/strong&gt;. We get so used using them every day that we forget which words are jargon. When working with clients, we need to be &lt;strong&gt;more aware&lt;/strong&gt; of the terms we use, watch for confused facial expressions, and be able to explain them in a non-condescending way to ensure and keep that &lt;strong&gt;trust&lt;/strong&gt; in the relationship.&lt;/p&gt;
&lt;p&gt;Recently, our cat had to have a lot of tests because they felt her kidneys were larger than normal during her last physical exam. Throughout the process, the vet explained &lt;em&gt;everything&lt;/em&gt; in layman&apos;s terms that I could understand and I was &lt;em&gt;very&lt;/em&gt; appreciative of that. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Having the ability to be able to explain technical concepts to people who don&apos;t understand them will set a consultant apart.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Think explaining CORS to a customer, and being able to explain it more with relatable common objects where non-technical people can relate. Or explaining technical debt.
Being able to do so will help convince customers of concepts you want them to do.
🙂&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; We see this often as many of our clients have a vague idea for their business but know nothing about tech, electronics, materials, or design. They get frustrated if we can&apos;t explain why building their thing has a line item for user account management or whatever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; Yep, doing so in a way that client doesn’t feel stupid . I have a hard time keeping up with concepts and esp their acronyms in parallel techs all the time. And things change so fast..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Yeah, very key! If you explain it in a condescending way, then you&apos;re destroying that client relationship trust&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Ooh, I&apos;m going to run with that one&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;6. Agnosticism&lt;/h2&gt;
&lt;p&gt;As consultants, our role is to solve our client&apos;s problems in the best way that we can. We should then be careful to pick the technologies for our solution that best fit our clients, and try to avoid using the technologies just because we really like them or would like to play with them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; It’s easy to get married to a favorite tech or toolchain, but it may not always be the best fit for your client. One size doesn’t always fit all..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; OOOOH!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; I love this one&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Choose the tech that&apos;s best for the business/client/users rather than your favorite ones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Nice one! Some clients already have their stack embedded in stone, and being unwilling to conform can lose the business or make the project a lot harder.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;7. Organization&lt;/h2&gt;
&lt;p&gt;Software is &lt;strong&gt;complicated&lt;/strong&gt;. There are a lot of tasks, requirement clarifications, bugs, steps to implement, etc. The better your organization skills are, the better you&apos;ll be able to keep track of outstanding tasks, which ones need follow up, map out the big picture, and prioritize which tasks are &lt;em&gt;critical&lt;/em&gt; to be done &lt;em&gt;now&lt;/em&gt;. Being able to do these would result in efficiency and therefore cost less $$$ as the project progresses.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Organization skills can help you keep track of all the things that need to be done  TODAY vs LATER.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; It can help you keep notes of what was discussed with clients, past decisions and paths forward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Knowing what can be done TODAY vs LATER will also help keep you focused and know when to set expectations and communicate with your client;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Being focused would mean efficiency in spending $$$ therefore reducing cost.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; +1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Nice. It also contributes to building an organized project - setting appropriate priorities (e.g. critical path items) and focusing on what the client requires sooner rather than later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;8. Realism&lt;/h2&gt;
&lt;p&gt;We all would like things to go as best they could, but this is not always the case, especially in our software world where there is a lot of ambiguity. So being able to have a realistic lens on can help with expectation management and also help build that trust relationship with your client.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; This maybe overlaps with several of the other ideas, inc. Expectation Management — but this also might be one of the areas I’m personally worst at. For instance, building out realistic timelines — I find I’m almost always way too optimistic, even after doing this kind of thing for a long time…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Hmmm Yeah, it&apos;s related but different also. I think we all want to be optimistic but reality doesn&apos;t quite let us achieve that desired timeline&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Communicating the reality also to clients can be tough&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; yep &amp;#x26; yep&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; re estimating, I triple my worst-case estimate and they&apos;re dead-on. Not joking - at the end the estimate is always within a relative handful of hours of the actual work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Estimating is hard. It also depends on how well you know the system if the system exists already.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; If it&apos;s a new system, then there&apos;s even more unknowns in terms of integrations with new/existing  technologies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; It&apos;s definitely more art than science!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;9. Empathy&lt;/h2&gt;
&lt;p&gt;Being able to understand your client and be able to see things from their perspective will help you better solve their problems and also help build trust. Empathy not only plays a role in your client relationship but in all aspects of your career like building trust with coworkers, or building trust/keeping morale with your team of developers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Really just a facet of client relations - understanding the client&apos;s motivations, situation, desires, limitations, etc from their perspective provides not only an alignment of purpose but also builds trust&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; oh yeah. And in larger projects, if you&apos;re a lead of other devs, empathy also plays a role in your team being efficient because your team&apos;s morale would be higher.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; I think this also goes for your clients’ users too — kind of an extension of what I was trying to say about Listening&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Very nice point about the users. Too often, we end up forgetting about the end users&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Agreed, part of satisfying the client is making them look good to their clients&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Feed the Elephant theory extended a level&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;10. Business Understanding&lt;/h2&gt;
&lt;p&gt;We developers can get really technical and love to solve problems with code. But we have to remember that ultimately we are developing solutions for &lt;strong&gt;business reasons&lt;/strong&gt;. Along with empathy, the more we understand the business, their priorities, their goals, their needs, the better we are able to solve their problems.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; We develop software for businesses!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; The more we understand that business, their processes, their customers, and their needs, the better the solution we will end up creating for them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; This one is high on my list. There are lots of projects that are just clean-up jobs because someone wanted to try some new technology or do something they hadn&apos;t done before. At the end of the day devs are responsible for making money for the business, not satisfying an itch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Too many a times I&apos;ve seen devs develop solutions because it&apos;s a shiny new tech. The business $$$ should be the end goal, not to play with new tech.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Can always play with new tech as part of a hackathon or something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Or just because it&apos;s a Saturday! I ported my ping-pong scoring system to a Pi 1 the other day because my laptop died. Learned about changing expectations (the Pi 1 was amazing in its day, but no longer &quot;fast&quot;)!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;11. Out-of-the-Box Thinking&lt;/h2&gt;
&lt;p&gt;Sometimes, we get too stuck in our way of thinking because we&apos;re just &lt;em&gt;too close&lt;/em&gt; to the problem. There is value in &lt;em&gt;seeking perspective&lt;/em&gt; from outsiders outside of the box, &lt;em&gt;listen&lt;/em&gt; and &lt;em&gt;consider&lt;/em&gt; their points of view.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; sometimes the inspiration for an innovative approach to a problem comes from a completely different discipline or field&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Good one! It&apos;s so easy to get into this. This is why I often seek out non-team devs on opinions because it&apos;s so easy to get too in the box.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;12. Documentation&lt;/h2&gt;
&lt;p&gt;Documentation is not fun, but it does &lt;em&gt;really&lt;/em&gt; help because we&apos;re building a &lt;em&gt;product&lt;/em&gt; and documentation is the piece of booklet that we get when we buy something from the store that needs to tell us users how to operate it. &lt;/p&gt;
&lt;p&gt;Similarly, the software we&apos;re building &lt;strong&gt;is&lt;/strong&gt; a product, and we need to build a manual to tell other users how to &lt;strong&gt;support&lt;/strong&gt; it. For software, &lt;code&gt;other users&lt;/code&gt; = the client/business owner and other developers who have to either add to it, or fix some bugs. &lt;/p&gt;
&lt;p&gt;No documentation also usually means &lt;strong&gt;bottlenecks&lt;/strong&gt; because only 1 resource knows how it works, and bottlenecks significantly slows agility.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; a no-brainer, but often a place where freelancer’s esp cut corners — after all, the client usually doesn’t care (at first!) if the code is well documented and organized&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Also, selling this as a key need to the customer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Of course, need documentation to operationally support the software you&apos;ve built&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; How will YOU know how it works in the future, or even worse, some other dev who did not build it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; This bites me every time I revisit old personal projects&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Ha. Me too. Biting me already on a personal project of mine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I...may have lost the source code for an executable I want to make updates to. That might ok because there weren&apos;t any comments in the code to start with.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Organizationally, we have bottlenecks because of the lack of documentation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; only some specific people know how X works&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; so, then, only those people can work on X&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Ahh, yeah. We just dealt with a client who was all .Net except that one critical microservice that someone decided to try out Python on (and document nothing)...and then he left. So they keep hiring people to figure out how it works, saddling them with the microservice for a while, and repeating it when they quit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Whoa lol&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;13. Stewardship&lt;/h2&gt;
&lt;p&gt;As consultants, we need to keep the client&apos;s best interest. Steve says it best in the chat log below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; 👍 good one&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Consultants are responsible for spending the client&apos;s money wisely. There are lots of ways that can manifest, but it comes down to acting in the best interest of the client at all times - even if your employer wants you to do otherwise. A trust relationship is paramount in consulting, especially in a small town like Madison.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;14. Flexibility&lt;/h2&gt;
&lt;p&gt;As consultants, we also need to be flexible on what can or cannot be done. We can negotiate as much as we want, but too much negotiation can turn our client relationships sour. We need to choose our battles wisely, and to know which ones to let go.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; While it&apos;s important to negotiate with clients on what&apos;s right, it&apos;s still important to be flexible if the negotiation doesn&apos;t work out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; Don&apos;t get too stuck on your opinions because ultimately, the customer being happy is what matters and if we remain stubborn, then customers will just get frustrated and we will NOT get anything done.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; def&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Wait, where are technical skills?&lt;/h2&gt;
&lt;p&gt;As consultants, we definitely need technical skills to be able to build technical solutions for our clients. We all agree they&apos;re required.&lt;/p&gt;
&lt;p&gt;However, Steve brings up an interesting point on how some employers actually didn&apos;t care if the candidates could code, they just wanted someone &lt;strong&gt;they could train to code&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; I mean, I&apos;m not surprised, but none of our list involves technical skills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cristina:&lt;/strong&gt; It&apos;s of course a given that you need technical skills to be able to consult successfully.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; Technical skills can be acquired through on-the-job training, but interpersonal/business skills are more artsy and nuanced&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt; I&apos;ve had employers who didn&apos;t care if candidates could code,  they just wanted someone they could train to code&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bo:&lt;/strong&gt; Right, maybe a discussion for another day — the skills / disciplines that one needs to code etc don’t completely overlap those that are needed to consult&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Steve:&lt;/strong&gt;
I think a lot of valuable consulting skills are also valuable manager-ing skills&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;To be a successful developer consultant requires not only technical skills, but a myriad of soft skills (interpesronal/business), which are harder to master. But as long as we&apos;re aware of them and continuously try to improve, then we&apos;re already doing better than how we were before.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Comic: The Lost Kitty]]></title><description><![CDATA[Randomly wrote this comic and wanted to share in case anybody would like it. 😄]]></description><link>https://www.cristinaruth.com/posts/the-lost-kitty/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/the-lost-kitty/</guid><pubDate>Fri, 29 Nov 2019 23:54:07 GMT</pubDate><content:encoded>&lt;p&gt;Randomly wrote this comic and wanted to share in case anybody would like it. 😄&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/img_5168.png&quot; alt=&quot;The Lost Kitty&quot; title=&quot;The Lost Kitty Comics&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Staying Sane and Organizing Family Life Craziness]]></title><description><![CDATA[Family life. Craziness! All. The. Time. Chores. Doctor appointments. Menu plans. Food management. School events. Errands. I recently…]]></description><link>https://www.cristinaruth.com/posts/staying-sane-and-organizing-family-life-craziness/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/staying-sane-and-organizing-family-life-craziness/</guid><pubDate>Fri, 29 Nov 2019 03:55:30 GMT</pubDate><content:encoded>&lt;p&gt;Family life. Craziness! All. The. Time.&lt;/p&gt;
&lt;p&gt;Chores. Doctor appointments. Menu plans. Food management. School events. Errands.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/l4JyJZf0Ia4DAnFba/giphy.gif&quot; alt=&quot;AHHH!&quot;&gt;&lt;/p&gt;
&lt;p&gt;I recently stumbled onto bullet journaling and took the idea to handle all our family craziness. &lt;/p&gt;
&lt;p&gt;I&apos;ve been struggling for the past years on handling all what needs to be done and have tried multiple apps from calendars to TODO apps. It works at first, but then it starts getting &lt;strong&gt;TOO busy&lt;/strong&gt; and we start getting overwhelmed.&lt;/p&gt;
&lt;p&gt;As a software engineer, I LOVE tech but I&apos;m realizing more and more that it really is difficult to completely replace pure pen and paper. Code is complicated and updates therefore take time. But with pen and paper, updates to your process are so easy to make -- all you need is a new sheet of paper and you&apos;ve got your new process just like that.&lt;/p&gt;
&lt;p&gt;I draw up a 8.5&quot;x11&quot; weekly spread for our family. Our needs were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Keep track of the morning chores/reminders/TODOs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep track of our spending. $$$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep track of our evening chores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep track of our regular daily/weekly chores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have a separate TODO for the kid coz she&apos;s pretty independent and she&apos;s , quote, &quot;starting to get tired of being told what to do.&quot; I understand and would love to not to anymore, so this is a new thing we&apos;re trying for December 😀&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have a &lt;strong&gt;FOCUSED&lt;/strong&gt; area for each day for any day-specific appointments, events, reminders, and tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep track of what&apos;s in our fridge to prioritize older food and save $$$ and reduce food waste.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So below is what we&apos;ve come up with for December.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/inkedfamily-weekly-spread-template_li.jpg&quot; alt=&quot;Weekly Spread&quot; title=&quot;Our Family Weekly Spread&quot;&gt;&lt;/p&gt;
&lt;p&gt;So then, here is how we use it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;We print out 4-5 copies, 1 for each week.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the weekend, we cross-reference the digital family calendar and start filling out each day accordingly, with the bullet journal &lt;em&gt;key&lt;/em&gt; system of square for tasks, triangles for appointments, circles for events, and stars for important items.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We cross-reference our family bullet journal future log, where we have noted other tasks/events, and note them down also.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We then put the sheet up on the fridge with magnets, where &lt;strong&gt;all family members&lt;/strong&gt; can see it!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each day, we then just reference things on the right side for our daily chores/tasks, with the appropriate column for the day that we are on. And we also reference the current day accordingly. We then fill in the squares with our specific color (black for me, blue for my spouse, and pink for our daughter) as we complete each task to indicate who completed them. For tasks that do not need to be done, an X is marked inside the square.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When we come across things that need to be done during the week, we just note it down on the paper. If it&apos;s for a date past the current week, we note it down in our family bullet journal&apos;s future log.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&apos;ve used this system since late October and it has worked really well! We&apos;ve got a lot more visibility across me and my spouse on things that need to be done, what craziness is going on that day and/or that week, and who&apos;s done which.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/pa37AAGzKXoek/giphy.gif&quot; alt=&quot;Yay!&quot;&gt;&lt;/p&gt;
&lt;p&gt;Would you like to try the same thing to handle &lt;em&gt;your&lt;/em&gt; family life craziness? I hope I&apos;ve inspired you to try and do the same thing for your family. 🙂&lt;/p&gt;</content:encoded></item><item><title><![CDATA[How to Use Your Custom Domain with Your Site on Netlify]]></title><description><![CDATA[Purchase Your Domain If you don't already own your domain, purchase one. Personally, I prefer  Google Domains . Manage DNS CNAME Record…]]></description><link>https://www.cristinaruth.com/posts/how-to-use-your-custom-domain-with-your-site-on-netlify/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/how-to-use-your-custom-domain-with-your-site-on-netlify/</guid><pubDate>Wed, 27 Nov 2019 02:47:46 GMT</pubDate><content:encoded>&lt;h1&gt;Purchase Your Domain&lt;/h1&gt;
&lt;p&gt;If you don&apos;t already own your domain, purchase one. Personally, I prefer &lt;a href=&quot;https://domains.google.com&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Google Domains&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Manage DNS CNAME Record&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Within Netlify, go to the site you want to add a custom domain to.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;code&gt;Domain Settings&lt;/code&gt; button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Under the &lt;code&gt;Custom Domains&lt;/code&gt; section, click on &lt;code&gt;Add domain alias&lt;/code&gt; button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Type in your domain as &lt;code&gt;www.yourdomain.com&lt;/code&gt; and click the &lt;code&gt;Save&lt;/code&gt; button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Your new domain should now be listed in the &lt;code&gt;Custom Domains&lt;/code&gt; section, but you will see that next to it is a warning sign with the text &lt;code&gt;Check DNS Configuration&lt;/code&gt;. Click on that text.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A &lt;code&gt;DNS Configuration&lt;/code&gt; window pops up telling you to point the &lt;code&gt;www CNAME&lt;/code&gt; record to Netlify. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to where you purchased your domain and find a way to manage the &lt;code&gt;DNS&lt;/code&gt; settings. If it&apos;s in Google Domains, then go to domains.google.com and go to their &lt;code&gt;DNS&lt;/code&gt; settings via the menu on the left.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Near the bottom of the page, under the &lt;code&gt;Custom resource records&lt;/code&gt;, scan it to see if there is any existing &lt;code&gt;CNAME&lt;/code&gt; entries. If so, either update that or delete it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add a new &lt;code&gt;CNAME&lt;/code&gt; entry with the following values:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Name: &lt;code&gt;www&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Type: &lt;code&gt;CNAME&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;TTL: &lt;code&gt;1H&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Value: &lt;code&gt;the-value-netlify-gave-you.netlify.com&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DNS records can take up to 48 hours to propagate. So check again in about a day in the same &lt;code&gt;Custom Domains&lt;/code&gt; section and see if the text next to your custom domain has changed to something around &lt;code&gt;Check nameservers&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;Update Name Servers&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Click the text and Netlify will show you domains to use as nameservers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go back to where you purchased your domain and again, go to the &lt;code&gt;DNS&lt;/code&gt; management settings. Within domains.google.com, we go to &lt;code&gt;DNS&lt;/code&gt; settings and then the &lt;code&gt;Name servers&lt;/code&gt; section.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For domains.google.com, we click on &lt;code&gt;Use custom name servers&lt;/code&gt;, add each domain that Netlify gave us (example is ns2.netlify.com), and click the Save button.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since this is a DNS change, it can take up to 48 hours to propagate. So we play the waiting game again. Check again in about a day or so. When everything is working right, the &lt;code&gt;Netlify DNS&lt;/code&gt; text will show up next to your custom domain.&lt;/p&gt;
&lt;h1&gt;SSL&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;BONUS:&lt;/strong&gt; Netlify automatically gives you a free SSL certificate even with a custom domain. This allows users to access your site via &lt;code&gt;https&lt;/code&gt; and keeps browsers from throwing users a warning around your site not being secure. &lt;/p&gt;
&lt;p&gt;You can check this by going to the &lt;code&gt;SSL/TLS certificate&lt;/code&gt; section. It may take about a day again for this after you complete the name servers setup.&lt;/p&gt;
&lt;h1&gt;And You&apos;re Done!&lt;/h1&gt;
&lt;p&gt;Now, you&apos;ve got your custom domain on your site. Yay!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/11sBLVxNs7v6WA/giphy.gif&quot; alt=&quot;Yay&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Old Tech to Shiny New Tech: Strategies on Upgrading Your Code Without a Big Bang]]></title><description><![CDATA[Over the years, old code gets harder to maintain, and we start missing out on new capabilities and features from new technology. But…]]></description><link>https://www.cristinaruth.com/posts/old-tech-to-shiny-new-tech-strategies-on-upgrading-your-code-without-a-big-bang/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/old-tech-to-shiny-new-tech-strategies-on-upgrading-your-code-without-a-big-bang/</guid><pubDate>Sun, 24 Nov 2019 22:58:59 GMT</pubDate><content:encoded>&lt;p&gt;Over the years, old code gets harder to maintain, and we start missing out on new capabilities and features from new technology. But, resources are usually limited, and we don&apos;t usually get around to doing these upgrades. How do we convert an app, like WebForms, to an MVC app on a limited budget and shippable increments without major issues?&lt;/p&gt;
&lt;p&gt;In my &lt;a href=&quot;https://thatconference.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;external-link&quot;&gt;THATConference&lt;/a&gt; session held back in August 2019, I talked through some strategies on how to accomplish this and release something every sprint, and slowly – but surely – get our apps fully converted to that new tech.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://www.slideshare.net/CristinaRuth/old-tech-to-shiny-new-tech-strategies-on-upgrading-your-code-without-a-big-bang-162736734&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;external-link&quot;&gt;slides&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Password Struggle]]></title><description><![CDATA[Today's digital world has accounts everywhere. That means logins and passwords. But systems get hacked, hackers get our login info and our…]]></description><link>https://www.cristinaruth.com/posts/the-password-struggle/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/the-password-struggle/</guid><pubDate>Thu, 21 Nov 2019 22:17:10 GMT</pubDate><content:encoded>&lt;p&gt;Today&apos;s digital world has accounts everywhere. That means logins and passwords.&lt;/p&gt;
&lt;p&gt;But systems get hacked, hackers get our login info and our accounts get compromised. And now, we got a problem.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/ZajGATIGCQFCE/giphy.gif&quot; alt=&quot;Problem&quot;&gt;&lt;/p&gt;
&lt;p&gt;So some solutions then pop up. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/31lPv5L3aIvTi/giphy.gif&quot; alt=&quot;Yay&quot;&gt;&lt;/p&gt;
&lt;p&gt;Like Multi-Factor Authentication. So then, if someone gets a hold of your password, if you have this setup, you can stay &lt;em&gt;safe&lt;/em&gt;. Er. Safe-&lt;em&gt;er&lt;/em&gt;. If someone gets ahold of your &quot;factor&quot; (which is less likely), then you&apos;re in trouble again.&lt;/p&gt;
&lt;p&gt;Or, the bajillion ways multiple websites require you to have various different letter, symbol, capitalized and lower-case letters to ensure a more secure password.&lt;/p&gt;
&lt;p&gt;Or, the bajillion systems who require you to change your password every x days.&lt;/p&gt;
&lt;p&gt;Or, the push for you to use different passwords for every single thing.&lt;/p&gt;
&lt;p&gt;Which causes yet another issue because then, we have &lt;strong&gt;so many&lt;/strong&gt; passwords, and we can&apos;t fit it all in our brain, so then we forget and we reset our passwords, and we have yet to &lt;strong&gt;remember another one&lt;/strong&gt;. Which we will likely forget &lt;strong&gt;again&lt;/strong&gt; anyway.&lt;/p&gt;
&lt;p&gt;So now, we got the problem of too many passwords, so we get password management solutions to remember our passwords for us.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/KmTnUKop0AfFm/giphy.gif&quot; alt=&quot;AHHHHHH&quot;&gt;&lt;/p&gt;
&lt;p&gt;I mean, &lt;code&gt;login with x platform&lt;/code&gt; makes things better and easier, but not all systems support it, and it usually also means my data is shared.&lt;/p&gt;
&lt;p&gt;All of these solutions and problems seem to go back to &lt;strong&gt;one thing&lt;/strong&gt;: passwords.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/3ohs7Ps45sznsObPMc/giphy.gif&quot; alt=&quot;Aha&quot;&gt;&lt;/p&gt;
&lt;p&gt;So. Is there any password-alternative out there to be able to have access to an account? There &lt;em&gt;has&lt;/em&gt; to be some other thing? I tried a quick google and couldn&apos;t find &lt;em&gt;anything&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Do &lt;strong&gt;you&lt;/strong&gt; know of any alternative solutions? Please save us from this password struggle that has overrun our digital experience today! :sob:&lt;/p&gt;
&lt;p&gt;Join us on &lt;a href=&quot;https://dev.to/cristinaruth/the-password-struggle-4g1i&quot;&gt;DEV&lt;/a&gt; to discuss further.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[What is a Team Lead? What is a Tech Lead? Are they the same or different?]]></title><description><![CDATA[To you, what defines a Team Lead? A Tech Lead? If different, is there a term that describes both roles combined? I always get confused which…]]></description><link>https://www.cristinaruth.com/posts/what-is-a-team-lead-what-is-a-tech-lead-are-they-the-same-or-different/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/what-is-a-team-lead-what-is-a-tech-lead-are-they-the-same-or-different/</guid><pubDate>Tue, 19 Nov 2019 22:03:09 GMT</pubDate><content:encoded>&lt;p&gt;To you, what defines a Team Lead? A Tech Lead? If different, is there a term that describes both roles combined?&lt;/p&gt;
&lt;p&gt;I always get confused which is which. 🤔&lt;/p&gt;
&lt;p&gt;Join us on &lt;a href=&quot;https://dev.to/cristinaruth/discuss-what-is-a-team-lead-what-is-a-tech-lead-are-they-the-same-or-different-139i&quot;&gt;DEV&lt;/a&gt; to discuss further.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[3 Valuable Concepts Learned Early in My Dev Career]]></title><description><![CDATA[1 - Source Control Source control is a way to capture and track changes  (control)  to your code  (source) . Source control is  essential…]]></description><link>https://www.cristinaruth.com/posts/3-valuable-concepts-learned-early-in-my-dev-career/</link><guid isPermaLink="false">https://www.cristinaruth.com/posts/3-valuable-concepts-learned-early-in-my-dev-career/</guid><pubDate>Sat, 12 Oct 2019 21:11:57 GMT</pubDate><content:encoded>&lt;h3&gt;1 - Source Control&lt;/h3&gt;
&lt;p&gt;Source control is a way to capture and track changes &lt;em&gt;(control)&lt;/em&gt; to your code &lt;em&gt;(source)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Source control is &lt;strong&gt;essential&lt;/strong&gt; in a professional environment. It allows developers to work with each other and ensure their changes do not conflict with each other. It also keeps track of each code change as a &lt;em&gt;version&lt;/em&gt; and it is a must have to keep the developers&apos; sanity with multiple environments (point #2 below).&lt;/p&gt;
&lt;p&gt;Git is a source control system, and GitHub is an online platform that uses Git for source control. &lt;/p&gt;
&lt;p&gt;Source control also enables branching, wherein you make a copy of your stable code (typically termed &lt;em&gt;master&lt;/em&gt; branch) and make updates to that copy without impacting your stable code. This is an important concept because developers can then work on their own copies of the code without impacting each other&apos;s work. &lt;/p&gt;
&lt;h3&gt;2 - Environments&lt;/h3&gt;
&lt;p&gt;In addition to source control, we had multiple environments we would deploy code to. Environments are a set of servers and/or apps to which you deploy code to and run your app in.&lt;/p&gt;
&lt;p&gt;What are the environments for? &lt;strong&gt;Stability.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In a professional work environment, there is usually ongoing development effort most of the time. And code changes = instability. You can&apos;t know for sure that a code change didn&apos;t break anything. &lt;em&gt;(Tests are ways to increase the confidence level that nothing&apos;s broken, but that&apos;s a more advanced and larger topic and to keep things simple, I&apos;m intentionally not expanding on that in this post.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So in my team&apos;s case, we had 3 environments:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Development&lt;/strong&gt;. This environment, we could always deploy to, no problems. If things get broken from our code changes, it&apos;s not a huge deal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;. This environment we like to keep stable. This is where we do our testing to ensure that our code changes are ready and stable to go to production. To keep this environment stable, we only deploy changes that are already working and tested on development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Production&lt;/strong&gt;. This environment is what the end users of our system use. Any deployments to production would be made available to our end users. &lt;em&gt;(Some exceptions apply, if feature flags are used, for example. But that&apos;s a more advanced topic and will not be covered in this post for simplicity.)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Environments work best if you have a source control system in place, because you could deploy a specific &lt;em&gt;version&lt;/em&gt; to an environment.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt; has &lt;em&gt;version c&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demo&lt;/strong&gt; has &lt;em&gt;version b&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Production&lt;/strong&gt; has &lt;em&gt;version a&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, when we know for sure that &lt;em&gt;version b&lt;/em&gt; is ready and stable, we then deploy that version to &lt;strong&gt;Production&lt;/strong&gt;, making the environments have the versions as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt; has &lt;em&gt;version c&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demo&lt;/strong&gt; has &lt;em&gt;version b&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Production&lt;/strong&gt; has &lt;em&gt;version b&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So far, the environments I&apos;ve listed are all &lt;strong&gt;remote servers.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;But there is also your &lt;strong&gt;&lt;em&gt;local&lt;/em&gt;&lt;/strong&gt; environment. This environment is unique, because it is isolated to only your computer. You change the code, and &quot;deploy&quot; it to your local file system. &lt;/p&gt;
&lt;p&gt;It won&apos;t be isolated any more though once you push your code changes to the remote repo (i.e. GitHub), and then get those changes merged to &lt;code&gt;master&lt;/code&gt;. The changes in &lt;code&gt;master&lt;/code&gt; are then deployed to &lt;strong&gt;Development&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So now, the environments would have the following versions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt; has &lt;em&gt;version d&lt;/em&gt; (your changes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demo&lt;/strong&gt; has &lt;em&gt;version b&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Production&lt;/strong&gt; has &lt;em&gt;version b&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We could then move &lt;em&gt;version d&lt;/em&gt; over to &lt;strong&gt;Demo&lt;/strong&gt; as soon as we are sure that its quality is acceptable.&lt;/p&gt;
&lt;p&gt;As mentioned above, the main purpose for having multiple environments is for stability. This is done by &lt;em&gt;segregating&lt;/em&gt; each environment from the other. Doing this ensures stability, but it also comes with a &lt;strong&gt;cost&lt;/strong&gt; - extra overhead, additional costs, and environment management.&lt;/p&gt;
&lt;h3&gt;3 - Collaboration&lt;/h3&gt;
&lt;p&gt;In a professional environment, work is &lt;em&gt;larger&lt;/em&gt; in scale compared to when you&apos;re working on personal projects, wherein you are the only developer. This means that there are at least 2 developers working to complete the work.&lt;/p&gt;
&lt;p&gt;The code you work on in a professional environment is also usually &lt;em&gt;larger&lt;/em&gt; than a personal project. This then requires &lt;strong&gt;domain knowledge&lt;/strong&gt; to know the ins and outs of how that system works and all its various functionalities.&lt;/p&gt;
&lt;p&gt;Collaboration, then, becomes really important because in order to make changes to  the project, you&apos;d:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Have to work with another developer to make sure the changes you&apos;re making does not impact his/her changes, and vice versa. This would require consistent communication lines between both of you, and can even require testing your changes together should you touch the same piece of functionality.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have to work with the developer with the &lt;strong&gt;domain knowledge&lt;/strong&gt; to understand the ins and outs of the system related to the changes you need to make.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have to work with a &lt;em&gt;senior&lt;/em&gt; developer, if available, to understand &lt;em&gt;how&lt;/em&gt; to implement the changes you need to make. Sometimes, the work is too complex for a less experienced dev, that it requires a senior developer to design the solution, and provide simple and easy to understand chunks to less experienced developers.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ability to be able to work with people well is a &lt;strong&gt;crucial&lt;/strong&gt; skill to have in any career, no matter what level you are at, experienced or not. We all have to work with people, and if you are able to do so exceptionally well, you&apos;ll find yourself getting promoted &lt;em&gt;way&lt;/em&gt; faster than if you didn&apos;t.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Developer 1&lt;/em&gt; with medium technical skills but great communication and collaboration skills will get work accomplished faster because communication flow is &lt;em&gt;easy&lt;/em&gt; between him/her and other team members. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Developer 2&lt;/em&gt; with high technical skills but low communication and collaboration skills will, on the other hand, could result in slower time to get work accomplished because misunderstandings can happen. Worse, team morale and team trust can also be impacted, and thus, impacting the &lt;em&gt;entire team&lt;/em&gt;&apos;s productivity.&lt;/p&gt;
&lt;h3&gt;Learn These Concepts&lt;/h3&gt;
&lt;p&gt;If you&apos;re just starting out, you can learn and practice these concepts &lt;em&gt;before&lt;/em&gt; you get your first dev job! Learning these now would improve your marketability to employers because it would take a shorter time to get you working on their codebase.&lt;/p&gt;
&lt;h4&gt;1. Source Control&lt;/h4&gt;
&lt;p&gt;There are lots of resources out there, but &lt;a href=&quot;https://github.com/CristinaRuth/dev-together-madison/tree/master/Learn/Workshops/Basics/GitHub&quot;&gt;this free workshop&lt;/a&gt; covers the basics - source control basics, git basic terms, github basics, branching, and forking. &lt;/p&gt;
&lt;h4&gt;2. Environments&lt;/h4&gt;
&lt;p&gt;One way can get familiar with and practice code and version management on multiple environments is with &lt;a href=&quot;https://zeit.co&quot;&gt;zeit.co&lt;/a&gt;. Once you link up a github repo, the &lt;code&gt;master&lt;/code&gt; branch will be setup as &lt;strong&gt;production&lt;/strong&gt; while branches will be labeled as &lt;code&gt;latest&lt;/code&gt; or &lt;code&gt;staging&lt;/code&gt;. &lt;strong&gt;Staging&lt;/strong&gt; is another term for an environment similar to &lt;strong&gt;demo&lt;/strong&gt; as described above.&lt;/p&gt;
&lt;h4&gt;3. Collaboration&lt;/h4&gt;
&lt;p&gt;To improve your collaboration skills, find another dev to work with on a repo/project. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Online/virtual&lt;/strong&gt; collaboration would give you experience on handling the defined scenarios above. Working on/contributing to an open source project could be one way you could get this done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-person&lt;/strong&gt; collaboration would give you experience in reading &lt;em&gt;non-verbal&lt;/em&gt; communication (tone and body language). See if you can find another local dev to work with through meetup groups/school. If you&apos;re in school and you have to do group work, embrace those! They are &lt;em&gt;hard&lt;/em&gt; but they give you invaluable experience on working with various kinds of people.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Wrapping It Up&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Knowing &lt;strong&gt;source control&lt;/strong&gt; and &lt;strong&gt;environments&lt;/strong&gt; will set you apart from other new developers. &lt;/li&gt;
&lt;li&gt;Having &lt;strong&gt;collaboration skills&lt;/strong&gt; will make you desirable in &lt;em&gt;any&lt;/em&gt; industry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this article has helped you and I wish you all the best if you&apos;re aiming for that first dev job!&lt;/p&gt;
&lt;p&gt;And please remember:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn, practice, and make mistakes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&apos;t be afraid to fail. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Failures are your steps to success.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item></channel></rss>