<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Roman Mikhailov</title>
    <description>The latest articles on Forem by Roman Mikhailov (@rommik).</description>
    <link>https://forem.com/rommik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F31446%2Feec5bf09-aa46-405e-ae4e-d16c399a3a64.jpeg</url>
      <title>Forem: Roman Mikhailov</title>
      <link>https://forem.com/rommik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rommik"/>
    <language>en</language>
    <item>
      <title>Four Courses that helped me to get into Gen AI</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Tue, 25 Jun 2024 14:20:24 +0000</pubDate>
      <link>https://forem.com/rommik/four-courses-that-helped-me-to-get-into-gen-ai-5688</link>
      <guid>https://forem.com/rommik/four-courses-that-helped-me-to-get-into-gen-ai-5688</guid>
      <description>&lt;h3&gt;
  
  
  Getting Started with Generative AI: A Beginner’s Guide
&lt;/h3&gt;

&lt;p&gt;As a software engineer with 20 years of mostly backend and cloud development background, I come from a generation of folks who barely had any AI experience. Back then colleges concentrated on teaching arcane programming languages like Cobolt or Pascal because of the fear that the &lt;a href="https://en.wikipedia.org/wiki/Year_2000_problem"&gt;Y2K bug&lt;/a&gt; would cause an apocalypse. That never happened and instead, we spent the early years of the new millennia building CRM and ERP applications :)&lt;/p&gt;

&lt;p&gt;A year ago I had to quickly pivot into the AI space, and specifically Gen AI. This was an interesting journey and not without its challenges. If you're like me thinking about taking the plunge into this, I hope this post will help you.&lt;/p&gt;

&lt;p&gt;Generative AI (GenAI) is a fascinating field that has made waves in technology and innovation. From creating art and music to writing code and generating realistic human-like text, GenAI is transforming industries and opening up new possibilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  What is Generative AI?
&lt;/h4&gt;

&lt;p&gt;Generative AI refers to a subset of artificial intelligence that focuses on generating new content, such as images, music, text, and more. Unlike traditional AI, which often focuses on analyzing data and making predictions, GenAI creates new data that mimics the patterns and structures found in its training data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Get Into Generative AI?
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Innovation&lt;/strong&gt;: GenAI is at the forefront of innovation, with applications in creative arts, entertainment, healthcare, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Career Opportunities&lt;/strong&gt;: As businesses adopt AI technologies, the demand for skilled GenAI professionals is on the rise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creative Potential&lt;/strong&gt;: GenAI allows you to explore and expand your creative capabilities by automating and enhancing various creative processes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Getting Started: Key Resources
&lt;/h4&gt;

&lt;p&gt;Here are some top-quality courses and resources that helped me get started in the GenAI space:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI for Everyone&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duration&lt;/strong&gt;: 6-10 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This course by DeepLearning.AI provides a comprehensive introduction to AI, making complex concepts accessible to beginners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://www.deeplearning.ai/courses/ai-for-everyone/"&gt;AI for Everyone&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Generative AI for Everyone&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duration&lt;/strong&gt;: 3-5 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A focused course that dives into the specifics of Generative AI, covering its applications and fundamental techniques.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://www.deeplearning.ai/courses/generative-ai-for-everyone/"&gt;Generative AI for Everyone&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT Prompt Engineering&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duration&lt;/strong&gt;: 1-2 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This course offers practical skills for developing effective AI interactions, specifically with ChatGPT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/"&gt;ChatGPT Prompt Engineering&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Python 3&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duration&lt;/strong&gt;: 15+ hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A comprehensive list of courses that teach you Python, from foundation to advanced. Although JS/TS is the second most popular language in the AI space. Python is the King.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="http://pluralsight.pxf.io/da6AYQ"&gt;Python 3&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Subscription Information &amp;amp; Affiliation
&lt;/h4&gt;

&lt;p&gt;While some of these resources require a subscription, they are invaluable investments for anyone serious about learning new things. The knowledge and skills I gained from these courses have provided a strong foundation and opened up plenty of opportunities in the GenAI space.&lt;/p&gt;

&lt;p&gt;Deeplearning.ai and Pluralsight are the two resources I use anytime I need to quickly learn a new skill.&lt;/p&gt;

&lt;p&gt;Pluralsight's link is an affiliate link that buys me a coffee each time somebody subscribes :)&lt;/p&gt;

&lt;p&gt;Starting your journey in Generative AI can be both exciting and rewarding. With the right resources and a passion for learning, you can delve into this cutting-edge field and unlock new creative and professional opportunities. The courses mentioned above have been instrumental in my GenAI journey, and I highly recommend them to anyone looking to get started. Happy learning!&lt;/p&gt;

</description>
      <category>genai</category>
      <category>ai</category>
      <category>learning</category>
      <category>courses</category>
    </item>
    <item>
      <title>WebDiary.io - an entry to Digital Ocean Hackathon</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Mon, 14 Dec 2020 14:39:26 +0000</pubDate>
      <link>https://forem.com/rommik/webdiary-io-4an1</link>
      <guid>https://forem.com/rommik/webdiary-io-4an1</guid>
      <description>&lt;p&gt;For a while, I've been going over this idea in my head, wouldn't be nice to replace my paper notebooks with a digital solution? Of course, a notepad++, MS Word, Evernote, RocketBook already exist, but they don't do what I need -- a continuous timeline of day to day activities that I can order by project, client, activity type, and any other categories that will come up. I'd like to able generate reports for my daily stand ups, or just get an idea how the time was spent.&lt;/p&gt;

&lt;p&gt;A recently announced &lt;a href="https://dev.to/devteam/announcing-the-digitalocean-app-platform-hackathon-on-dev-2i1k"&gt;Digital Ocean + Dev.to Hackathon&lt;/a&gt; is a kick in the butt that I'd needed to start working on this project. At the same time, I can shoot a few proverbial birds too. I want to learn Next.js, improve ReactJs skills, checkout the new Digital Ocean services and try out MongoDb Atlas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://webdiary.io"&gt;https://webdiary.io&lt;/a&gt; was born. First, I followed the get started &lt;a href="https://nextjs.org"&gt;tutorial&lt;/a&gt; from Nextjs.org. Then, created an App on Digital Ocean and connected it to my code on &lt;a href="https://github.com/webdiary-io/web"&gt;https://github.com/webdiary-io/web&lt;/a&gt;. I registered a domain name with &lt;a href="https://www.namecheap.com"&gt;https://www.namecheap.com&lt;/a&gt;. It doesn't get easier than a search/pay/done. Finally, wrote a blog post so that the site does not look too "Hello World". It got Auto deployed on push. Easy!&lt;/p&gt;

&lt;p&gt;Next, the plan of attack will be as simple as possible. After all, I only have 4 weeks in this hackathon. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add authentication &amp;amp; authorization - I think I'll go with Auth0,&lt;/li&gt;
&lt;li&gt;Create a form to add notes and timestamp them and #tag them,&lt;/li&gt;
&lt;li&gt;Add ability to search notes by keyword and tags&lt;/li&gt;
&lt;li&gt;Add ability to generate a report that will be useful for stand-ups (Yesterday, I did...)&lt;/li&gt;
&lt;li&gt;Add a pie-chart that shows how much time is spent per tag.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This looks like a decent MVP, and I'll be able to accomplish all the items on my wish list.&lt;/p&gt;

</description>
      <category>dohackathon</category>
      <category>startup</category>
    </item>
    <item>
      <title>Blast Off! (with Zeit Now Platform)</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Wed, 03 Jul 2019 18:45:50 +0000</pubDate>
      <link>https://forem.com/rommik/blast-off-with-zeit-now-platform-3f0a</link>
      <guid>https://forem.com/rommik/blast-off-with-zeit-now-platform-3f0a</guid>
      <description>&lt;p&gt;We all have great ideas. Yet, only a few of us manage to take them to realization. There're many reasons why it happens. Personally, I would get discouraged by the amount of preparation that is necessary to be done in order to start working on that next billion dollar idea. There're the learning curves of the technologies that I need to know first. Then I need to get my environment setup to start coding. At the same time, I need monitoring to put in place to collect statistics and benchmarks. The unit tests, integration tests, QA, CI/CD Pipelines, hosting... bah! what's on Netflix?&lt;/p&gt;

&lt;p&gt;Some things cannot be avoided and you just need to go through them, others can be simplified. In this article, I'd like to concentrate on one part and get it out of the way to productivity. It's taking your code from the repo and deploying it. After working in DevOps for the past three years, I've been convinced that the manual work of a coder should end after the Git Push/Merge. &lt;/p&gt;

&lt;p&gt;Therefore, I needed a solution that deploys the code from Git to a cloud environment without any intervention on my part. I wanted to avoid tinkering with Azure, Google, or AWS. Even Digital Ocean, that is as simple as one click and ssh was still too time-consuming.&lt;/p&gt;

&lt;p&gt;Yesterday, I discovered &lt;a href="https://zeit.co/now"&gt;Zeit Now&lt;/a&gt; and instantly fell in love. Zeit's other products are &lt;a href="https://nextjs.org/"&gt;Next.Js&lt;/a&gt; and &lt;a href="https://hyper.is/"&gt;Hyper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what is Now? In words of Zeit "Now is a global deployment network built on top of all existing cloud providers. It makes teams productive by removing servers and configuration, giving you a seamless developer experience to build modern scalable web apps." &lt;/p&gt;

&lt;p&gt;How easy is it to use?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login/Register with GitHub at &lt;a href="https://zeit.co/login"&gt;Zeit Login&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;New Project&lt;/li&gt;
&lt;li&gt;From Template select React*&lt;/li&gt;
&lt;li&gt;Give a name to the Repo and submit.&lt;/li&gt;
&lt;li&gt;A few seconds later, you got it online. Here's mine (&lt;a href="https://dev-to-react-now.rommik.now.sh"&gt;https://dev-to-react-now.rommik.now.sh&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You're online!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*Because it's so hot (apparently). Feel free to use another template :)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Oh, did I mention it is free? Yup!&lt;/p&gt;

&lt;p&gt;There's a ton of other things you can do with Now Platform. I'll let you discover it yourself. Their documentation is detailed, consistent and clear. They are working on integration with other tools like Slack, CloudAMQP, and MongoDB Atlas. You can suggest integrations as well.&lt;/p&gt;

&lt;p&gt;Searching "Zeit Now" (&lt;a href="https://dev.to/search?q=Zeit%20Now"&gt;https://dev.to/search?q=Zeit%20Now&lt;/a&gt;) on dev.to brings back a few tutorials, and the web has more.&lt;/p&gt;

&lt;p&gt;Overall, I was pleased with my experience on this Platform. It is easy to use, quick to set up, it's free to start, and the prices are affordable and scale with the resource demand. Give it a try.&lt;/p&gt;

&lt;p&gt;P.S. Zeit doesn't know me and I get nothing in return for this article.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>deployment</category>
      <category>agile</category>
    </item>
    <item>
      <title>MongoDb migration frameworks</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Mon, 27 May 2019 19:04:31 +0000</pubDate>
      <link>https://forem.com/rommik/mongodb-migration-frameworks-2574</link>
      <guid>https://forem.com/rommik/mongodb-migration-frameworks-2574</guid>
      <description>&lt;p&gt;What do you do when you need to upgrade/downgrade schema and seed on first install your MongoDB?&lt;/p&gt;

&lt;p&gt;I'm looking for opinions, examples, tutorials, and suggestions from the community.&lt;/p&gt;

&lt;p&gt;Here's an example of one using node-migrate&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-automate-database-migrations-in-mongodb-d6b68efe084e/"&gt;https://www.freecodecamp.org/news/how-to-automate-database-migrations-in-mongodb-d6b68efe084e/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Background:&lt;/p&gt;

&lt;p&gt;I have a Micro Services (5) application that uses MongoDd. I'd like to allow my services to upgrade their schema in an automated way. In other words, I'd like to avoid running scripts or queries manually. If I have to downgrade a version of a service, it should be able to downgrade the schema as well. It's also possible that a service is scaled horizontally, more than one clone is running. Therefore, this solution must avoid  collusion or duplication. Two or more clones should not attempt to apply a migration at the same time.&lt;/p&gt;

&lt;p&gt;I'm leaning towards using node-migrate to implement the migration steps. &lt;del&gt;What to do about the control of race conditions is not clear yet for me. I'm thinking about putting the database in read-only mode for the duration of the upgrade.&lt;/del&gt; I realized that this last statement does not make sense. I would never roll out all instances at once. It would always be one at a time. Therefore, the first one to get a new version will take care of the upgrade.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Learning to think like a programmer.</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Sat, 21 Jul 2018 16:03:12 +0000</pubDate>
      <link>https://forem.com/rommik/learning-to-think-like-a-programmer-13pk</link>
      <guid>https://forem.com/rommik/learning-to-think-like-a-programmer-13pk</guid>
      <description>&lt;p&gt;I’m looking for a book (video, blog, or online course) for Somebody who just learned their  first language. They know the “words”, but what will help them to write “poetry” - solve problems using computer programming? Ideally, this book will teach them the art of thinking like a programmer. It will teach them techniques to approach a problem, analyze it, come up with a solution, validate and troubleshoot it. Think whiteboard sessions at an interview.&lt;/p&gt;

&lt;p&gt;I’m not looking for a book that concentrates  on teaching a specific language like python or c++. Preferably such book assumes minimum computer science knowledge and should heavily use pseudo code, flow charts, diagrams or other ways to generalize concepts, but if it chooses a language to show implementation, that’s OK too. As long as the language is not the main topic.&lt;/p&gt;

&lt;p&gt;What was your favorite book, video or lesson to learn thinking in code?&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Do you keep a journal?</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Mon, 19 Mar 2018 14:41:38 +0000</pubDate>
      <link>https://forem.com/rommik/do-you-keep-a-journal-28ln</link>
      <guid>https://forem.com/rommik/do-you-keep-a-journal-28ln</guid>
      <description>&lt;p&gt;Do you keep a journal or diary of your day to day professional activities?&lt;br&gt;
how do you do it? Pen and pad? word documents? dedicated software or tools?&lt;/p&gt;

&lt;p&gt;I've been writing down a summary of my day since I started working as a developer.. for 13 years now. Ouch! Yet, I've never kept or archived any of them. I actually either surrendered them to my employers or destroyed them. Now, I regret it. They would have been good reads for self-reflection and just to measure the progress.&lt;/p&gt;

&lt;p&gt;One of the reasons not to keep them around is the space, they take up a lot of it.&lt;br&gt;
I'm wondering if there's a better way. Pen and notepad are a must for me, I like to draw and doodle. Doing it on a tablet or laptop is not the same thing.&lt;/p&gt;

&lt;p&gt;When I heard about the reMarkable tablet, I got excited. It was the closest to pen and paper you can get, but the price tag and the battery are just unreasonable. $800 CAD for a tablet that is just another Kindle with a pen and runs for 2-3 hours on a charge, no thanks! Maybe if the price drops to $200-$300 I'll consider it again.&lt;/p&gt;

&lt;p&gt;While at college, I've used Livescribe pen. It is a digital pen that records what you write and you can view it in a digital form (PDF or image). This was really great, but you had to have special notepads for it. That was a downer!&lt;/p&gt;

&lt;p&gt;Now with smartphones and image recognition, I don't mind taking a photo of my notes and have them digitized.However, when it comes to journal notes, they are only good if you can search them. So, I'm not sure if this is the way to go.&lt;/p&gt;

&lt;p&gt;What are your thoughts and experience?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>recordkeeping</category>
    </item>
    <item>
      <title>Looking for a Cloud service or product to import data from REST APIs</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Sat, 10 Mar 2018 03:19:39 +0000</pubDate>
      <link>https://forem.com/rommik/looking-for-a-cloud-service-or-product-to-import-data-from-rest-apis--gf8</link>
      <guid>https://forem.com/rommik/looking-for-a-cloud-service-or-product-to-import-data-from-rest-apis--gf8</guid>
      <description>&lt;p&gt;What service or product (preferably in the cloud) that you would recommend for importing data from REST APIs and sending it into a storage? If possible, this service or product should be user-friendly and configurable with minimum coding?&lt;/p&gt;

&lt;p&gt;In a perfect world, I image an admin console where you can provide API's URL, authentication credentials, data schema, destination information (i.e MS SQL, MongoDB, or another REST API). You would be able to schedule the data import or set an event to trigger the import.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Where do you learn?</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Fri, 23 Feb 2018 05:54:06 +0000</pubDate>
      <link>https://forem.com/rommik/where-do-you-learn--2342</link>
      <guid>https://forem.com/rommik/where-do-you-learn--2342</guid>
      <description>&lt;p&gt;In no particular order, here's the list of my favorite places to study new things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.devu.com" rel="noopener noreferrer"&gt;DevU&lt;/a&gt; - used to be LearnVisualStudio.net - courses that covered everything .Net, VisualStudio, C#, Microsoft Tools. I got a lifetime membership. One of the best purchases I made in my junior years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://bit.ly/2FpkGvB" rel="noopener noreferrer"&gt;Pluralsight&lt;/a&gt; - Love it! Excellent IT, DevOps, Management, and other topics! &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.edx.org/" rel="noopener noreferrer"&gt;EDX&lt;/a&gt; - Free Online University. I love their Micro Masters and Certifications. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There're others, of course, but the above three are my favorite ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://highscalability.com/" rel="noopener noreferrer"&gt;Highscalability.com&lt;/a&gt; is not a site where you find courses, but I love it for its "Stuff that Internet says on Scalability..." that are posted every Friday. If you're into high traffic, big data, fast and edge technologies, I strongly recommend this site. Even if you aren't it's still going to be useful to you :)&lt;/p&gt;

&lt;p&gt;What are your favorites sites to learn and sharpen your skills? &lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>It is possible to commit no mistakes and still lose. That is not a weakness, that is life.</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Wed, 21 Feb 2018 06:24:47 +0000</pubDate>
      <link>https://forem.com/rommik/it-is-possible-to-commit-no-mistakes-and-still-lose-that-is-not-a-weakness-that-is-life--16db</link>
      <guid>https://forem.com/rommik/it-is-possible-to-commit-no-mistakes-and-still-lose-that-is-not-a-weakness-that-is-life--16db</guid>
      <description>&lt;p&gt;A year ago, I was searching for a new job and doing an interview per week. I wasn't in a hurry to change employment, therefore I wanted to find that perfect company where I could be challenged and develop new skills while being paid with great benefits. Even in a large IT market like Montreal, this is not an easy combination.&lt;/p&gt;

&lt;p&gt;One company got interested in my CV and invited me for a Senior Web Developer position. They were in a great location! Downtown Montreal, with the subway (we call it metro here) exit right in their building. The preliminary interview was with the human resources and we covered the culture, the product, the org. structure,  the benefits, and the salary. There was a mutual and professional spark. I was invited to a first interview with the team.&lt;/p&gt;

&lt;p&gt;I met two senior developers and we had a pleasant conversation for an hour. We talked about my past experiences, the company, and their products, the technology stack they use, the importance of unit testing, and a question about the design patterns, of course. It was going great! At the end, we shook hands, exchanged pleasantries, and I was on my way home.&lt;/p&gt;

&lt;p&gt;I am not new to interviews. I actually enjoy them and have done a lot of in the past years! This helps me to keep my skills sharp, gives me a good idea of where the market is at the moment, what opportunities are out there, and what's being asked by potential employers. Of course, there's an easier way to do all of that... Stack Overflow annual surveys, market statistics and books or tutorials on how to pass an interview. Still, the only way to get good at interviews and most importantly the dreaded salary negotiations is practice, practice, and practice!&lt;/p&gt;

&lt;p&gt;On my way home, I was mentally playing back the last an hour and a half, and analyzing what had or hadn't been said, if I had forgotten to mention something or overshared, I had been able to present myself different and how. Overall I felt very confident about the meeting. As soon as I got home, I emailed the HR a thank-you note to be passed to the interviewers, I even included a link to some article about microservice architecture that we had talked about. The next day, I got an invitation to a follow-up and this time with the manager of the department.&lt;/p&gt;

&lt;p&gt;Oh, what luck! It turned out the manager is the guy whose position I was presently holding at my current company. I even sat in his old chair (when he was a developer). I had a ton of stories to tell him, and he was happy to share some few inside jokes too. We laughed and nodded to each other. Anything that helps to establish a rapport with the person who's interviewing can be in your favor. As many interview gurus will claim. Although, I decided to keep to myself the ones about the frustration of having to deal with the code base and a disastrous architecture that was left to my team after this guy had left the company. It was not his fault entirely, yet he was the senior developer... but I digress.&lt;/p&gt;

&lt;p&gt;So, I was in the second interview. This was going to be technical one,  I would write code and three interviewers would watch and we would discuss it. The exercise was to read a file of words on each line and find the ones that are a palindrome, the word can be spelled the same forwards or backward, as in madam or kayak. This needed to be done using Test Driver Development- write a test, make it fail, write code, and make the test pass. Easy and on top of that I just had done a palindrome tutorial a day before and it was still fresh in my mind.&lt;br&gt;
I told them about my accidental over-preparedness and offered to change the exercise to something else. They refused. The coding part was extremely easy. We chatted as I wrote and passed the tests. The easiest coding session I've done. A few follow up questions, hands got shaken and I was going home with a very confident feeling. This was the best interview I've ever done. It went perfectly in my mind. Another thank you note through the HR, and I was waiting for the offer...&lt;/p&gt;

&lt;p&gt;Two days later, I received a reply that reads "...unfortunately you haven’t passed the test for our senior solution developer position. You did good but not great and they are looking for a developer with strong coding competencies. Thank you again for your time. " Wow! Really? I was shocked! Did they email the right candidate? I double checked the email, yup! Indeed, it was addressed to me! There's no mistake... I was being rejected. Ouch! &lt;/p&gt;

&lt;p&gt;I have been rejected before, and as much as it hurt, the rejections are the greatest lessons, I truly believe that. I would always follow up with a polite and probing question "Why?". Most recruiters are kind to constructively criticize others would just ignore and not reply. However, this time I made an exception. I did not even acknowledge the receipt of the email with a "thanks". This was BS! Good but not Great? They picked a palindrome problem! That is something they teach in programming 101! I fumed for a few days. It wasn't the rejections that upset me, it was the "good but not great" comment. How can you grow from that? Olympians are good but not great (those that don't get gold). They I understand, but programmers? &lt;/p&gt;

&lt;p&gt;A year later, I think about this company and laugh at myself. Whatever the reason was for their rejection is not important! Perhaps my coding was actually bad or maybe they found a better candidate. My reaction was wrong and silly. There're few lessons I want to draw from this experience.&lt;/p&gt;

&lt;p&gt;1) Don't let emotions and pride get in the way.&lt;/p&gt;

&lt;p&gt;2) You're not hired until you sign the offer. No matter how great the interview was. I've seen people resign with fanfare before actually getting the next job offer on paper!&lt;/p&gt;

&lt;p&gt;3) Your perception of a person/situation could be wrong and you are missing something. If you realize it, make the inquiry to understand why you were wrong about your initial impression. I should have followed up with my standard "why?" especially in this case.&lt;/p&gt;

&lt;p&gt;4) Failed interviews are opportunities to learn something new about yourself. They've defined my professional career and helped me to find the companies that I truly enjoyed working for.&lt;/p&gt;

&lt;p&gt;5) It is possible to make no mistake and still fail. In this situation, you pick yourself up and you keep going and trying your luck elsewhere. It is OK!&lt;/p&gt;

&lt;p&gt;Happy Job Hunting!&lt;/p&gt;

</description>
      <category>professional</category>
      <category>interview</category>
      <category>career</category>
    </item>
    <item>
      <title>The 10 books that every developer must read</title>
      <dc:creator>Roman Mikhailov</dc:creator>
      <pubDate>Wed, 14 Feb 2018 05:28:38 +0000</pubDate>
      <link>https://forem.com/rommik/10-books-that-every-developer-must-read--28ia</link>
      <guid>https://forem.com/rommik/10-books-that-every-developer-must-read--28ia</guid>
      <description>&lt;p&gt;Hate it or love it, but reading is an integral part of our professional life. What makes a great software developer is the amount and quality of their readings. You can argue that you can substitute reading with video tutorials and workshops, but I will not be convinced. Good books contain thoughts and ideas that have been played in their authors' minds over and over, refined and adjusted before committed to paper. This subtlety is lost in all other means of knowledge exchange. &lt;/p&gt;

&lt;p&gt;A definition of a good book will be different from reader to reader. Therefore, this post is opinionated. I wasn't sure if I should write it. There're more than 10 books that should be on your bookshelf! You might agree or disagree with my choices, then please post your books in the comments. I'd love to read them too. &lt;/p&gt;

&lt;p&gt;Here's a list of books that defined my career as a software developer. I've read dozens if not hundreds of books. Yet, these 10 are the ones that seem not to age and I find myself coming back to them for reference or just reading again for fun.&lt;br&gt;
You will notice I did not include any of technology books. No learn C#, JavaScript in 24 hours or mastering Node.Js. Rather my list concentrates on coding, design, style and best practices. &lt;/p&gt;

&lt;p&gt;This list is not in any particular order, and one book is not better than another.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Book&lt;/th&gt;
&lt;th&gt;Author&lt;/th&gt;
&lt;th&gt;Why I love it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0137081073/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0137081073&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=87b0265c80b88a37ede4a9a8d14a896a"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0137081073&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0137081073" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin &lt;a href="http://amzn.to/2EqFxlb"&gt;http://amzn.to/2EqFxlb&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Compared to Law, Medicine, Engineering, Accounting, Programming is a relatevely easy field to enter. There're countless success stories of self-thought programmers. This book introduces to what a Professional Programmer is. The author shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0132350882/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0132350882&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=a05cba3d16ef77e066677054c680409a"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0132350882&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0132350882" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin &lt;a href="http://amzn.to/2ssThWJ"&gt;http://amzn.to/2ssThWJ&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way. " Another book by Uncle Bob, it is an opinionated book, but full of wonderful resources and advice on how to improve your code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0134494164/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0134494164&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=059f44beb65a2c4df56b7510417cf712"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0134494164&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0134494164" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Clean Architecture: A Craftsman's Guide to Software Structure and Design by Robert C. Martin &lt;a href="http://amzn.to/2Bsq7dd"&gt;http://amzn.to/2Bsq7dd&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Yet another book by Uncle Bob. This is an anticipated guide to Software Architecture. Soon to be a best seller like the other Clean Series. I believe the best way to improve your skill is learning from the best in the industry. Martin's half a century of experience is imprinted for us to study and apply in our trade.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0596007124/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596007124&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=6007dab80f2279cee127a816759452c3"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0596007124&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0596007124" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Head First Design Patterns: A Brain-Friendly Guide &lt;a href="http://amzn.to/2Hd6x57"&gt;http://amzn.to/2Hd6x57&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;This is a great book for mastering The Design Patterns. Clear explanation, good examples and just practical.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0321934113/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321934113&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=40e09977688a5f61f97d1a068fb7a7f2"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0321934113&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0321934113" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Peopleware: Productive Projects and Teams &lt;a href="http://amzn.to/2sxPBDs"&gt;http://amzn.to/2sxPBDs&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;IT management is your ultimate goal? Read this book! Written in the 80s,it outlines the major issues with current management practices in software development field. It's amazing that most companies still make the same mistakes. If you won't move into management, at least this book will help you ask the right questions and look for red flags next time you're looking for a new job. Personally, I cannot chuckle inside when I hear "Open space office"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/1849967202/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1849967202&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=eda3d817df4b3c02d1127ec9100f4ea5"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=1849967202&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=1849967202" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;The Algorithm Design Manual by Steven S Skiena  &lt;a href="http://amzn.to/2BszJ7S"&gt;http://amzn.to/2BszJ7S&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Read this book if you want to work for Google, Microsoft, Amazon or any company that loves to drill their candidates about Algorithms. Seriously, this is a must read for any programmer. The foundation for any efficient code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0131857258/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131857258&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=42416d264c7006f4d92ab01a7e8377fa"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0131857258&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0131857258" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin &lt;a href="http://amzn.to/2CiZGDT"&gt;http://amzn.to/2CiZGDT&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;The book covers Design Paterns just like the Head First Design Patterns, but this book goes deeper in the world of OOP, software architecture and Agile Methodology.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0131177052/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131177052&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=58f062c1ddd6af5427b856627c88bddd"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0131177052&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0131177052" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Working Effectively with Legacy Code by Michael Feathers &lt;a href="http://amzn.to/2HaEKlY"&gt;http://amzn.to/2HaEKlY&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Legacy Code - You can hate it, but you cannot kill it. All code will be legacy at the end ;) Unless you're a hobby programmer, you will end up working with it. You will pull your hair out because of it. This book is sanity shield that we all need. Good Read!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/0596008678/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596008678&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=5526a20c894469999860c4fc3638cb4f"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=0596008678&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=0596008678" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;Head First Object-Oriented Analysis and Design &lt;a href="http://amzn.to/2CiYsZe"&gt;http://amzn.to/2CiYsZe&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Ability to analyze and design solid OOP systems is science and art. The programmer who can take upon a role of an architect is worth its weight in gold. This is a good introduction book to OOP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.com/gp/product/020161622X/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=020161622X&amp;amp;linkCode=as2&amp;amp;tag=rmv03-20&amp;amp;linkId=a389d202853a7380ccc511244af15ca5"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=US&amp;amp;ASIN=020161622X&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;tag=rmv03-20"&gt;&lt;/a&gt;&lt;img src="//ir-na.amazon-adsystem.com/e/ir?t=rmv03-20&amp;amp;l=am2&amp;amp;o=1&amp;amp;a=020161622X" width="1" height="1" alt=""&gt;
&lt;/td&gt;
&lt;td&gt;The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas &lt;a href="http://amzn.to/2EHdOfk"&gt;http://amzn.to/2EHdOfk&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;This book is a great read to fill the gaps that have been missed by all other books on this list. The authors will show you what it takes to master our trade, and hopefully they will equipe you with skill and idea to avoid the common pitfalls.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>books</category>
      <category>top10</category>
      <category>programming</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
