Scrum for the Rest of Us

I had the pleasure to work with The Braintrust Group and review their book to provide feedback on it awhile back. It has now been published up on Amazon. I defiantly would recommend this book for anyone new or experienced with Scrum. It has a lot of interesting tips and real world problems/solutions as well as pitfalls to look out for. I have to promote since my names in the book :)

Scrum for the Rest of Us! by Brian M Rabon

jpeg

Product Details

  • Paperback: 92 pages
  • Publisher: Dog Ear Publishing (January 20, 2014)
  • Language: English
  • ISBN-10: 1457525801
  • ISBN-13: 978-1457525803

Are you... Trying to implement Scrum outside of software development? Looking for specific answers to your deepest Scrum questions? Wanting modern advice that will benefit your organization?
Scrum For The Rest Of US offers practical advice, questions and answers, and tips that will help you avoid costly mistakes with Scrum. Don't waste hours searching the web, reading references that are outdated, when you can have everything that you need in a single guide.
It's THE first book written specifically for anyone interested in Scrum outside of the software development industry. Regardless of what field you are in, this book specifically points out areas that may challenge you and your organization with adopting Scrum.
Perhaps you are new to Agile/Scrum, have heard a few buzzwords, but the core concepts are not familiar yet. Perhaps you are an Agile/Scrum veteran who wants to avoid roadblocks or improve implementation. Regardless of where you are on your path to mastery, this book is intended to help you maximize the benefits of Scrum.
What you'll find in this book:

  • When and why to use Scrum
  • In-depth coverage of the roles, meetings, and artifacts in Scrum
  • Clear answers to frequently asked questions
  • Common pitfalls and how to avoid them
  • Practical case studies and examples
  • Tips and tricks for maximizing success
  • Full glossary of terms and definitions
What you won't find in this book:
  • Technobabble and industry jargon
  • Software references
  • Boring charts and meaningless statistics

SQL 2012 – Remote Connection Changes

The release of SQL 2012 default to dynamic ports for remote access.

You need to open port 1434 for the SQL Browser if you want clients to access it remotely.

More info: http://jeffreypalermo.com/blog/how-to-configure-sql-server-2012-for-remote-network-connections/

excerpt:

This TechNet article explains that to connect, the client will send a UDP packet to port 1434 first to resolve the dynamic port.  Then it will connect as normal.

The appropriate Windows Firewall rule to establish is a program rule, not a port rule.

Understanding Visual Studio 2013 and Git Source Control

 

Previous TFS Mindset

If you are used to using TFS (Team Foundation Server), switching over to Git on Visual Studio 2013 is a different thought process.  We’re used to thinking with TFS, local files and then I “check-in” “check-out” back and forth on the server. The nice thing about this was that you knew your files were backed up on the server. The downside to this is that in a team environment you’re checking in code that might break the build and cause someone else to have problems when they get the latest for various reasons. You forgot to check in a class or your code wasn’t ready and there isn’t gated check in process. Either way this is the mental image when you think of VS2013 and TFS.

 

image

With Git, using your own Git Server or GitHub etc and trying to think of Git as you think of TFS starts to cause confusion around the new Team Source view for handling projects.

image I’ll attempt to simply the understanding and how it works.

 

End Result When using VS and Git. New Mindset.

Untimely this is the end result from “Adding” or “New” or “Cloning” a project. From Visual Studio you Check-In/Out from a local Git repository. This is great in that you can check in code without affecting others. You’ll need to backup your local files though. Then after you get to a point you deem worthy, you “Sync” the changes to the Git server.

 

image

 

Goal: Create a local Git Repo. There are three ways to start a new Git Repo.

Create a “New” Local GitRepo

image

You create a local project in Visual Studio 2013. You can then add it to a “New” git repo.

  1. image
  2. image
  3. You’ll now have a new .git folder in your Project Folder     SNAGHTML260c80e8
  4. Note: if this folder is in a Dropbox folder you’ll get an error “An error was raised by libgit2. Category = Os (Error). Failed to lockfile to ‘…‘:Access is denied”. SNAGHTMLb4407d4. Simple click on “Add” image  and put in the path to the new Git Repo location.
  5. You’ll now see your local repo in the Git Repo list.SNAGHTMLb4d2766

 

Or “Add” an Existing Local Git Repo

You already have a local Git Repo you want to use you then click on “Add” and find the existing local Git Repo. All previous Git Settings with this Repo are intact so when you Sync it will sync to wherever it synced before or prompted you to specify.

image

 

Or “Clone” an Online Git Repo to a new Local Git Repo

You want to pull down files from an existing online project you can then “Clone” the repo from the Git server to new local repository and then open the project in VS.

image

 

Now you can Sync to an online Git Server

Now double click one of the repos to open up that project.

Click on Unsynced Commits

image

Depending on if the project is New or has already been synced or is a new Cloned project you’ll see one of two screens.

This is the screen you’ll see if the project is newly created. Add in the URL to the online GitRepo you want to perform the initial push too and Publish.

image

This is the screen you’ll see if the project was an existing GitRepo Add or a Clone from an online Git Server. Clicking “Sync” will then sync your local files with the server files.

SNAGHTMLb5ec2f7

Structuring Your Application Project

Great article by John Papa on Angular App Structuring guidelines and it also applies to all applications using the LIFT Guidlines. 

Regarding all Application Projects, this is a good snippet of the article.

----

App Structure

I find it extremely helpful to have an idea of what is important to me and my team in structuring my app instead of focusing on the actual structure.

You have to find your own path that is comfortable for you and your team. Instead of just picking a structure, it’s helpful to think about the “why”, so I’ll walk you through the guidelines I follow and my thought process on why I choose how I do. This is a follow up to my post onAngular Structure.

How you organize your structure is up to you. There are many right ways of doing this, and consistency in your project is key.

These are my guidelines. I’m sharing them as one possible path you can take but the main point of this post is to share how I think about structuring my Angular apps. There is a reason for the madness and if you take anything from this post it’s to be sure to have a set of guidelines and conventions of your own.

Thanks to my friend Ward Bell for helping review these and in many cases, contributing to the content quality over the several projects with me.

The LIFT Guidelines

The structure should follow these 4 basic guidelines. When I find my structure is not feeling comfortable, I go back and revisit these LIFT guidelines

  1. Locating our code is easy
  2. Identify code at a glance
  3. Flat structure as long as we can
  4. Try to stay DRY (Don’t Repeat Yourself) or T-DRY

Another way to check your app structure is to ask yourself …

How quickly can you open and work in all of the related files for a feature?

I find placing related files for a feature in the same drawer really helps me be more efficient.

Locating

I find this to be super important for a project. If the team cannot find the files they need to work on quickly, that needs to change. I’ve been on projects where this has been an issue and it wastes time.

Locating code needs to be untuitive, simple and fast. You may not know the file name or where its related files are, so putting them in the most intuitive locations and near each other saves a ton of time.

Identify

When I look at a file I expect to know what it contains and represents. If this means you want longer file names, then so be it. For me its more about being descriptive with file names and keeping that contents of the file to exactly 1 thing. No files with multiple controllers, multiple services, or a mixture.

There are deviations of the 1 per file rule when I have a set of very small directives or filters that are all related to each other, they are still easily idnetifiable. If not, 1 per file.

Flat

Nobody wants to search 7 levels of folders to find a file. Think about menus on web sites … anything deeper than 2 should take serious consideration. In a folder structure there is no hard and fast number rule, but when a folder has 10 files, that may be time to create subfolders (or drawers as I like to call them).

The general guidelines here is base on your comfort level. I prefer a flatter structure until I see a specific value (to help the rest of LIFT) in creating a new folder.

T-DRY

Being DRY is important, but not crucial if it sacrifices the others in LIFT, which is why I call it T-DRY. I don’t want to type session-view.html for a view because, well, it’s obviously a view. If it is not obvious or by convention, then I name it.

I don’t name my controllers with “controller” in their file name nor their registered name with Angular. I differ from others on this point, but it feels so un-DRY for me. I may have 30 controllers and continually typing “controller” everywhere (in file names and in code) and its obvious that it is a controller felt completely un-DRY.

-----

There is a lot more there going on and in regards with AngularJS the source article is a great read.

Restrict IIS to listen only on X IP Address. Allowing you to co-run with TomCat/Apache on port 80 with IIS on port 80

 

Long title I know. So your running IIS on your server and serving up websites on port 80.  You also have some third party program that’s running on Tomcat. Maybe like Atlassian products like Jira or Confluence. However they have to run on ports like 8088 or 8443 for SSL because TomCat can bind the port numbers but cannot use port 80 because IIS hogs that up on all your IP addresses.

Assuming your server has more then one IP you can limit IIS to only bind on a single IP and then in TomCat’s config you can limit it’s binding IP to the other. (Technically you’re not limiting IIS you’re limiting the http web protocol that IIS uses).

 

Open a command prompt as an administrator

Show which IP Address IIS is listening/binding too with this command.

netsh http show iplisten

Then limit IIS to listen/bind certain IP address with this command

netsh http add iplisten xxx.xxx.x.x

Reboot the server (You could try restarting http service but that doesn’t always show up in services and it’s a pain. Easier to reboot).

Run the listen command again and you should that the restricted IP is no longer in the list. You’re now free to use that IP for TomCat or some other service and bind to port 80 and 443.

Quick Update and Hello

Wow almost a year since my last post I need to get back on the ball.  I’ve been quite busy since then.  I’ve moved on from leading that development team at Wolters Kluwer and now new projects and clients with my business partner Sean Lucey at LM Global Partners.

It’s been great as I focus on managing several new projects for our clients as well as still evangelizing the Scrum Framework for ALM.  It seems that many teams I speak with say they are “agile” but yet they don’t really follow a framework other then maybe a daily standup meeting.  I hope to get out more and speak on Scrum and using it in software development. I did complete my Scum Professional exam (CSP) awhile back and working towards another.

A lot of focus of my time has been more on the IBM WebSphere side then the Microsoft .NET development as before. Mobile is still there at the top of the list along with other projects such as iBeacon and custom development work.

Well there’s a short hello and update for now.  At Orlando’s Code Camp today. Great place to learn new things.

Getting Passive FTP to work with Windows Advanced Firewall and Gene6FTP G6FTP Server

Many administrators have trouble with getting passive working. There is a good article over on TechNet (http://technet.microsoft.com/en-us/library/dd421710(v=ws.10).aspx) that works well if you’re using the local FTP services built into IIS.

There are slight modifications if you are using Gene6FTP Server.

 

The only thing you really have to do is add G6FTPServer.exe to the allowed programs inbound rules. Assuming your outbound is always “allow”.

New Inbound Rule, Program, point to C:\Program Files (x86)\Gene6 FTP Server\G6FTPServer.exe

That should fix your Passive (PASV) mode.

If you want to limit what ports to use, you can right click on the domain and properties.  Under “IP binding” you can limit what ports to use.

 

Without this, you will get errors such as in Visual Studio when trying to use FTP, that a connection failed due to 425 error.  Or Can’t open a data connection (425).

What have I been up to?

Not that anyone cares much but just trying to keep this blog from going stale after I’ve stopped programming. I need to shift focus to managing development teams using the Scrum process.

I am a Sr Manager of IT Applications for Wolters Kluwer. Specifically the Mediregs position of their Law & Business Division. I spend all my time managing 17 other members of an advanced development team. Managing the release and developing of two projects with high visibility. The newer one is going global and multi-lingual. We have our sister division in Belgium jumping onto the project as well.  We go live in three weeks after two years in the making.

One of my challenges over the last year is managing an efficient development team after receiving my scrum training as a Certified Scrum Master and Certified Scrum Product Owner. The good side is that everyone is on board for change and willing to do whatever it takes. It’s a great process. The down side is that upper eyes still want dates and budgets amount. I know we can forecast by estimating the backlog but it’s a long process to get through that backlog.

Also, gathering metrics on the team and each developer is another area I’m looking into more. Any information I find in these areas I’ll be posting them up here soon.

So you want to be a .net developer? Web, Backend, Middle Tier? You’re asking yourself where do I start?

So occasionally I get asked from friends and friends of friends and friends of friends of friends, I want to be a <insert, programmer, web developer, build websites, etc>.  How do I get started?

This is a loaded question. There so many directions to go and languages to choose from and then there is the college route, certification route or both. Then you have the Unix side of the house, the Microsoft side, now the all popular apple and android sides. Web platform, OS platform or mobile platform. Then you have to figure out where you like to work the most; on the front-end UI, back-end logic or maybe the database layer.

So for this article I’m going to with a bunch of assumptions.

  • You want to build web applications (You can apply this to OS applications, website and mobile later)
  • I’m assuming college doesn’t matter and is not needed (though a Computer Science degree would be awesome)
  • You aren’t doing it for the money (more on this later)
  • You’re following the Microsoft track using .NET (though the same techniques can be applied to other languages and application types, got to start somewhere)

 

You are not in it for the money:

This is my biggest pet peeve. If you are trying to be a programmer because you think they get paid a lot. Stop right now and go find something else to do.  Do what you like not because it pays a lot. Those type of programmers are the worst I ever meet. You go to work and do your job and try to get all your learning from on the job training. You go home and don’t give a crap about your job or try and don’t try to learn and enhance your skill sets at home.  You drain the life out of all the other programmers at work. I’ve seen this time and time again.

If you want to be a good programmer, or awesome, programming needs to be your hobby. You need to go home after work and continue learning.  You have to have a desire to be on the computer; programming your own projects for fun to learn new techniques after work. At home at night on the weekends. In life you should do what makes you happy and what you enjoy. Not because you think you can make a lot of money. If you don’t enjoy programming, don’t do it. I can go on about this so I’ll stop here.

 

What to Learn:

  • The Presentation Layer (or what we can the “Front-End” work): This is the visual aspects of your application and interactions. What it looks like how it functions.
    • HTML – Must Learn
    • CSS – You can get away with it if you don’t like front-end work but you should learn the basics
    • Javascript – You can get away with it if you don’t like front-end but you should learn the basics
    • jQuery – This heavenly needed for good interactions on your web application but you could get away with this if you don’t like the front-end. However, you should have a basic understanding.

Training Suggestions: On the web. Start with W3Schools. Great site, simple and straight forward. Soak in all the information you need. Always a good resource.

  1. W3Schools – For each section complete the “Basic” section. HTML, HTML5, CSS, CSS3, HTML DOM, JavasScript, jQuery,
  • The Business or Middle Tier Layer (or what we call the “Back-End”): This is the logic and heart of your application. Taking the information provided in the Presentation Layer and doing something with it. Calculations, data manipulation, saving it to the database etc..
    • .NET C# (or VB.NET but C# is more popular now a days and usually pays more (being that you are doing this even as a hobby, then yes pay is important and a side-benefit.))
    • ASP.NET MVC3 (this is newer then ASP.NET WebForms which is just as popular, but MVC is the future)

Training Suggestions: On the web and study books for certifications. Some people knock certifications, usually the ones that don’t have one. Certifications won’t make you great, only experience will do that. However, Certifications will teach you everything you should know and aspects that others don’t know because they don’t study for the certs. Small things here and there that add up. As well as showing to an employer that you might not have experience but you definitely can program and know the basics if you have your certs. More about certs in an updated post. Old post here.

  1. ASP.NET is a great place to get started. Specifically ASP.NET / MV3 site. Go through Chapters 1 through 12.
  2. C# Station – I’d stay maybe go to chapter 8 or 10.
  • The Database Tier (Also, part of the “Back-End”): This is storing data. Manipulating data. How to retrieve the data and run reports or searches.
    • First learn some SQL basics from W3Schools. Go through all the SQL Basic chapters.
    • Optional: Then you can learn say T-SQL which is Microsoft language of SQL built off of basic SQL. However, you don’t need this yet and learn as you go after W3Schools.

This is enough to get you started. Learn all the basics then figure out where you like to play the most.

  • Advanced Items: Other things you should know.

Scrum Certifications and More

So I’ve completed a couple of courses for Scrum training from the Scrum Alliance organization. Had a great training session from the BrainTrust Consulting Group by Brian Rabon himself, President. The class was amazing. A lot of hands-on exercises and methods used to sink in the process and techniques of Scrum itself. I’d have to say this is one of the best classes I’ve taken from an in-person training course.

Two new certifications I’ve acquired are the Certified Scrum Master (CSM) and Certified Scrum Product Owner (CSPO) thanks to Brian’s great work.