Miloš P. business analyst | dev enthusiast http://petkovicm.github.io Quick Update on &quot;Resources&quot; Section <p>So, I decided to completely abandon <em>About Me</em> section of the website, because it was most of all a mixture of <em>Resume</em> and <em>Contact me</em> page. So instead of that, I introduced <a href="https://www.petkovicm.com/resources/">Resources</a> section, where I will be updating websites and blogs that I follow, books I am reading, and courses I take.</p> <!--more--> Sun, 01 Oct 2017 00:00:00 +0000 http://petkovicm.github.io//Quick-update/ http://petkovicm.github.io//Quick-update/ How to fix &quot;No GitHub API Authentication&quot; error in Jekyll <p>Hi there. I recently switched jobs, so I was busy making a transition, and also got myself a new gear (MB Pro yummy). I was <em>Windows</em> user for about 15 years, and actually, remember running Aladin game from <em>MS-DOS</em> prompt window. Now, the time has come to step on the dark side and explore possibilities of a new environment for work and personal projects.</p> <p>I started setting up <em>Jekyll</em> again (which is really easy when you are on Mac, so one point there). However, when I ran my local server I got an error in my terminal:</p> <div class="highlighter-rouge"><pre class="highlight"><code>GitHub Metadata: No GitHub API authentication could be found. Some fields may be missing or have incorrect data. </code></pre> </div> <!--more--> <p>So, as I was googling the solution, I came to realize that this was more of a warning than an error. However, it bothered my OCD, and I started jumping back and forth to find a solution. I am actually writing this instruction for personal reference as well if I switch to another environment in the future or something like that.</p> <p><strong>Step 1:</strong></p> <p>Create a personal access token for the command line. You can find instructions on GitHub <a href="https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/" title="GitHub">help page</a>.</p> <p><strong>Step 2:</strong></p> <p>Open the bash_profile file. If you are on Mac OS, run the <em>terminal</em> and enter:</p> <div class="highlighter-rouge"><pre class="highlight"><code>touch ~/.bash_profile; open ~/.bash_profile </code></pre> </div> <p>It will open up the file with TextEdit. You can also use other editors:</p> <div class="highlighter-rouge"><pre class="highlight"><code>nano ~/.bash_profile mate ~/.bash_profile vim ~/.bash_profile </code></pre> </div> <p><strong>Step 3:</strong></p> <p>Now, inside the <code class="highlighter-rouge">bash_profile</code> define new environment variable with variable name <code class="highlighter-rouge">JEKYLL_GITHUB_TOKEN</code> and GitHub access token as variable value (you generated it in Step 1). You can do this by addiing the following line :</p> <div class="highlighter-rouge"><pre class="highlight"><code>export JEKYLL_GITHUB_TOKEN ='your_token_here' </code></pre> </div> <p><strong>Step 4:</strong></p> <p>Reload the terminal, and to make sure you did everything right, enter this into your command line:</p> <div class="highlighter-rouge"><pre class="highlight"><code>echo $JEKYLL_GITHUB_TOKEN </code></pre> </div> <p>You should be getting back token you generated in Step 1.</p> <p>Now, when you run:</p> <div class="highlighter-rouge"><pre class="highlight"><code>bundle exec jekyll serve </code></pre> </div> <p>you shouldn’t be getting any errors.</p> Sun, 24 Sep 2017 00:00:00 +0000 http://petkovicm.github.io//GitHub-API-problem/ http://petkovicm.github.io//GitHub-API-problem/ Organize your learning by creating a side project <p>I believe that by now this general opinion became a standard for the industry, so there is no point in me trying to convince you that - <strong>technology is growing rapidly</strong>, and we need to keep up with it like housewives are doing with the Kardashians.</p> <p><img src="/images/your-side-projects.jpg" alt="sideproject" /></p> <p>Eventually, there will be a point in your career (hopefully sooner than later) where you will realize that if you really want to stand out, you are going to need to become better. In order to become better, you need to know more than people you are competing against on a job market, in your company, and eventually in your life in general. In my case, the trigger point was a mix of “<em>hey, I can be good at this</em>” and “<em>wow, these people around me with X years of experience are bored as hell, planning to do nothing about it</em>”. And usually, when you need to compete against experience, your odds are pretty thin if you are just starting out. But what you can have, while some of the experienced ones won’t is - <strong>Hunger</strong>.</p> <!--more--> <p>I believe that you need to start with something that will really just get you going at first, and then just keep adding up to it. For example, you can subscribe to <a href="https://www.pluralsight.com/" title="Pluralsight">Pluralsight</a>, or buy a course on <a href="https://www.udemy.com/" title="Udemy">Udemy</a> (they have $10 promotion every now and then). Hopefully, the course that you took will get you going and you will start being more and more interested in a subject, so you will decide to take on additional resources. You can check <a href="https://pragprog.com/" title="Pragmatic Bookshelf">Pragmatic Bookshelf</a> for really great books on various topics, or you could check <a href="https://www.codingblocks.net/slack/" title="CodingBlocks slack channel">CodingBlocks slack channel</a>, where one of our members kindly shares Packt’s <a href="https://www.packtpub.com/books/deal-of-the-day">free book of the day</a>. After reaching this stage, you will probably be all hooked, so you just need one final push to start doing something yourself.</p> <h2 id="organize-everything">Organize everything</h2> <p>I started with creating a blog in <a href="https://jekyllrb.com/">Jekyll</a>. It is a static site generator, that offers a lot of flexibility and gives you an opportunity to keep yourself busy with:</p> <ul> <li>HTML</li> <li>CSS</li> <li>Git</li> <li>Markdown</li> <li>JavaScript (not so much)</li> </ul> <p>So, as you can see, just by building a blog for yourself you have a lot of things to learn by doing. <code class="highlighter-rouge">Git</code> (or any other version control) was such a mystery to me, that I always wanted to get away from it. I didn’t understand it, it was confusing - even though I recognized the concept that in my previous company we used in a totally different way when implementing projects (I am talking about services and implementing vendor software). Eventually, I recognized that sooner or later I will have to learn it, so why not learn it and start using it regularly in my own project. As you know, <code class="highlighter-rouge">GitHub Pages</code> can do a hosting for your blog for free + offers a version control so that you can maintain it properly. So I started reading about git, and eventually, I started using it regularly.</p> <p>When I started adding more stuff to my blog, I became interested in how can I make it better. So I created a project in Trello.</p> <p><img src="/images/trello-project.jpg" alt="trello" /></p> <p>So, by making a Kanban board, I started going agile with my own project. I started being more disciplined. I became so disciplined that I created one board just for my personal activities. And it feels so satisfying even when I am adding more tasks to it. Especially then, because that way I am sure that I think about it and keep coming with new ideas that I want to realize.</p> <p>Eventually, I will come across a couple of obstacles, and then I will create a task for it, and do a research. For example, I have had a trouble creating a <code class="highlighter-rouge">"Post Preview"</code> section on index page with <code class="highlighter-rouge">"read more"</code> button. I came to realize that I need to include a little bit of a condition to my index page, in order for logic to work:</p> <script src="https://gist.github.com/petkovicm/62d886a3f296cc6d1e15a12e26f3b961.js"></script> <p>And after adding that to my index page, I just add <code class="highlighter-rouge">&lt;!--more--&gt;</code> wherever I want in my post, and Index page will hide the rest of the text, so that I can have a post preview and eventually interest you guys to click on <code class="highlighter-rouge">READ MORE</code> button.</p> <p>This is one circumstance that can take you even further, to open a project in <code class="highlighter-rouge">Jira</code> and start writing little user stories, create bugs, plan for future milestones, etc. Even though it sounds like an overkill with the project of this size - it is so good for practice, that by just doing it your everyday work will be similar to brushing your teeth at some point.</p> <p>So, to add to the list above:</p> <ul> <li>Trello</li> <li>Jira</li> </ul> <p>And now, if you just pause for a second and look at the whole list - you have your own blog that you are maintaining as a personal project and motivation for your development, you have your resume page written, you are using everything listed above on a regular basis, you are learning a new programming language in the mean-time (and list can go on). I can’t see a better start point for your resume and job market presence.</p> Thu, 24 Aug 2017 00:00:00 +0000 http://petkovicm.github.io//learn-by-doing/ http://petkovicm.github.io//learn-by-doing/ Consultant's tips&tricks - Introduce a client to your superiors <p>Sometimes, a client can be demanding as hell. And their requirements can go so beyond the scope, that it isn’t funny anymore. However, sometimes they have really tough negotiators on their side, and you need to seek help.</p> <!--more--> <p><img src="/images/dealing-with-difficult-clients.jpg" alt="lol" /></p> <p>Sure enough, if you are careful about the documentation, you will easily be in the position where you can say to the customer:</p> <blockquote> <p>Hey, here is the SOW, we agreed not to do XY for this implementation phase (or at all). If you want that, we will write CR (Change Request) and estimate it properly.</p> </blockquote> <p>The attitude here is also important. You NEVER want to sound like a jerk even if you are a million times right. Try to sound friendly, like you are sincerely trying to help out (which you are) looking for every possible solution, meaning that you can expand on a statement like:</p> <blockquote> <p>Your requirement XY is really going to affect:</p> <ul> <li>Maintenance - because we need to implement additional scripts/custom actions</li> <li>Performance - because that will affect the speed of the system by triggering additional logic</li> <li>Storage - because we need to e.g. double the fields, add new UI layer to it, etc.</li> </ul> <p>I think adding this kind of logic will affect performance in a significant way. Plus, if you take a look at the SOW, we did not scope it. (<em>And then you go back to CR story</em>)</p> </blockquote> <p>Of course, this will be more than sufficient in ~65 - 70 % of cases. And it can be settled on a regular weekly call with the client or via email.</p> <p>However, sometimes in corporations big enough, key stakeholders don’t have time for weekly meetings and prefer email (looooong email chains). They also see that as a more convenient opportunity to be pushy. At some point - and usually, that is a point where you reached the top of your “Mr. Nice Guy” zone and the top of your accountability - you need to reroute the client to your seniors/product or project managers.</p> <p>If you were sitting with the client in the same building (yeah, like that is often a case) - it would be easy. If your seniors are present on regular calls - it would be easy. Instead, you need to accomplish that with the email. In my experience, the best way to put it is something like this:</p> <blockquote> <p>“Hi [Client],</p> <p>I’m copying [Manager 1] and [Manager 2] into this discussion. They are from the product management group.</p> <p>[Manager 1], [Manager 2] - Meet [Client] - he/she is the IT lead for [XYZ] project. They have a requirement of automated archiving/purging data after a certain period of time. Can you let us know if we have this in our release queue or if/when is this feature being planned for?</p> <p>Thanks”</p> </blockquote> <p>I now see that you can use this as a template. Feel free to do it. Sometimes, you need to let your superiors handle the situation, especially if you have your task list growing already and need to focus on the actual work.</p> Sun, 20 Aug 2017 00:00:00 +0000 http://petkovicm.github.io//introduce-a-client/ http://petkovicm.github.io//introduce-a-client/ Consultant's tips&tricks - Yes and No strategy <p>In this post, I will share with you something I learned as a consultant working with Configure Price Quote vendor software. It is basically pre-built app, that the customer or modeler can adapt to their business model and requirements</p> <!--more--> <p>This kind of approach is mostly used when the answer to the client’s question/request is NO, but there is also something good in it (upside or a good alternative). If they asked a question incorrectly (something that can be done both ways), then elaborate that the actual requirement is a NO, but what they really need is a YES.</p> <blockquote> <p><em>Example</em> : <strong>Can you edit configuration data of a product from within a Quote page?</strong></p> </blockquote> <p><strong>Answer</strong>: Yes and No. We do not support that trough UI customization and easy setup configuring, but Yes, we do have some scripting capabilities that could help in some instances. But, although scripts can change the configuration, there is no UI to allow people to play around and define what would be changed.</p> <p>This is an example with little to no chance of Yes answer, but you can also ask:</p> <ul> <li> <p>No, but let’s see what are your exact use cases?</p> </li> <li> <p>That can be a problem, tell me more details around your exact requirement?</p> </li> </ul> <p>There is no point in giving “<strong>Firm No</strong>” answers, except if the question is crystal clear, and we can’t do much about it.</p> <blockquote> <p><em>Example 2</em>: <strong>Can your software provide scheduled actions that do certain job at certain times?</strong></p> </blockquote> <p>This is a clear No (This is the case with vendor software, so no heavy customizations without software upgrade).</p> <p><strong>But</strong>, if the question is: Can CPQ software provide automated approval reminder after X days? Then, you can say: Yes and No, and propose a good alternative with approval reminder action.</p> <p>Yes and No approach is mostly used when the question is asked the wrong way, due to lack of CPQ knowledge of Customer asking. So, in all essence - <em>the answer is No, but I do think that you are interested in ‘this and this’</em> - and there lays the Yes answer.</p> Thu, 17 Aug 2017 00:00:00 +0000 http://petkovicm.github.io//yes-and-no-strategy/ http://petkovicm.github.io//yes-and-no-strategy/ Hey!Let's give it a go! <p>Welcome! This is my first blog post, where I would like to go deeper inside the topic of why I even started this.</p> <!--more--> <p><img src="https://neatoshit.files.wordpress.com/2012/07/doghairdresser.jpg" alt="lol" /></p> <p>The most simple explanation would be - I want to become better at my job. Currently, I am working as a BA/PO in the tech industry, and I believe having a great understanding of business requirements is positioning me very high in my client’s eyes. Also, I am a communicative person, versatile, friendly and easy to engage with.</p> <p><strong>However</strong>, being surrounded by developers and tech experts all the time made me think that I need to learn more about technologies being used for implementing products/services. Most of the people say (and I believe they are right): You won’t need extreme development knowledge in order to be a good Business Analyst/Product Owner. And I agree with them - for the most part. On the other hand, in one of the previous companies that I worked for, I have seen a couple of my colleagues who started as developers, build up their technical knowledge, and then started building soft skills for consulting.</p> <p><strong>I can’t emphasize to you enough</strong> how good those people are. I mean, we attend workshops for a client in Asia, surrounded by both business and tech people there, and this colleague (now friend) of mine “destroys” the audience every time. They’ve had all kinds of questions and he had all the answers. For a regular guy doing BA work it would often be: <em>Hey, I think it is possible, but I would have to check that with the dev team</em>. In his case, he did not need to check that, he already knew it. And I believe that clients <em>truly respect that</em>. And from the point of view of the spectator, it is really something.</p> <p>Anyways, I don’t want to learn development purely for these purposes. I was always kind of hooked to computers, technology and all that. However, I was always a bit afraid of learning programming simply because I always thought that I am not ‘savvy’ enough. When I started being Consultant in IT, I realized that it is something I would like to do and capable of doing. So, in my next blog post, I will try to write a breakdown of sources that I refer to on a daily basis, while learning.</p> Thu, 17 Aug 2017 00:00:00 +0000 http://petkovicm.github.io//Hello-World/ http://petkovicm.github.io//Hello-World/