Dot Net Core 1.0 RTM Plus Angular 2 RC3

We are not going to explain what Dot Net core is, or what Angular is. To be honest you are probably here because you know about both and are looking for guidance.

For the past few days our team has been trying to work out if Dot Net Core is worth using yet, and if Angular2 can offer a nicer user experience on a dynamic website.

The short answer is potentially.

I’ll split my article into two sections and keep it brief.

Visual Studio 2015

Visual Studio 2015 using TypeScript (fairly essential for Angular2 development) and Angular2 is essentially rubbish and broken. Firstly you have to find and follow a load of tutorials on how to set the thing up to work with TypeScript, options to tick, CMD line operations, third party installs, and all sorts.

The whole experience of setting up VS2015 and dot net core 1.0 RTM for use with Angular2 RC is aweful. This is not helped by a load of articles on the net that look great, but in practice point to older versions of Angular, TypeScript, or .Net Core itself.

So after a while you might have everything setup and get your first Angular 2.0 RC3 project working with a hello world type program. The problem comes when you try and do anything further, like hitting a web service for data and binding it. Again, the final result isn’t too dificult, but it’s made harder by Microsoft changing the case of the properties returned in JSON, and again most of the tutorials reference Angular2 pre release candiates and not post. So while the end code is similar, and while you can attempt to follow the examples, most of the code needs tweaks and changes. We found ourselves following the release notes for Angular to get the changes made in RC working.

VS2015 crashes like a dog constantly. Editing TypeScript Files, renaming them or moving them can often cause it to crash at an alarming rate. Bad Microsoft…..

Angular 2 RC3

I love the concept of angular and the databinding like capabilities. I love the fact that if the object changes the UI reflects instantly.

Coding in Angular will take time to learn, and it will take lots of time to master. The biggest problem right now are the old articles on the net relating to old versions of Angular 2 beta. These really need removing or updating. It makes the whole process a nightmare. Angulars own site isn’t bad for learning, but it only really covers the basics.

Net Core

I do see why Microsoft are going down the route of platform independance but I do feel that the pain from it for us early adoptors will be in vein. I can see Microsoft changing a whole lot and maybe with VS2016/17 we’ll see a better environment that feels like it fits net core. At the moment it feels unfinished state.

Most, like me will probably learn some of net core, and maybe try angular and probably go, what the hell was I thinking. The old .net framework was awesome, it worked, visual studio didn’t crash and you could write reliable code quickly and easily. But in the end Microsoft will probably slowly convince developers net core is the way forward.

As developers we need to keep our skills upto date, and I go with that 120%. However I think some companies asking for Angular on their job descriptions are obviously driven by developers want to learn and not the need to deliver a working solution to a problem. I can’t help but worry for all the teams out there working with Angular (probably version 1), that will not be able to progress easily to version 2 without a massive re write. Those using version 2 now will see similar pain as more release candidates come out. Personally, it’s too soon, buggy, un reliable, un sortable, mess.

The benefits of Cloud Hosting

On any given day in IT, the word “Cloud” probably gets uttered, but so many IT Managers jump into it without having a full understanding of how it can benefit your business and what the downsides maybe vs a traditional approach. At Dev Team Solutions Limited we are experts in all methods of hosting and can help you as a business decide the right way for the best value and return on investment.

What is Cloud Hosting

Think of Cloud Hosting as a massively configurable server.  Let’s say you host a website.  A website gets hosted on a server.  A server is just really an ultra-powerful computer which is generally ultra-reliable and built for a purpose.  You have been running your website for a few months and suddenly you get a form of recognition maybe in a newspaper or article.  This unexpectedly brings you 10 times the amount of web traffic.  You only paid for what you needed at the time, so your website crashes because it can’t cope with the load.  Not good, lost custom and lost reputation.  With a fixed server sat in a data centre, you are limited by the hardware it runs on.  With cloud hosting your server is a virtual piece of hardware which shares resources across many physical servers, often if different geographical locations.  So in the cloud environment you can just say, ok, today I have more traffic, lets increase the server memory and processor power (generally requires a reboot).  Ok sowe have to pay more now for our server as it’s more powerful, but we’ve not had to purchase any additional hardware or so anything other than change the servers details in our cloud hosting control panel.  If next week the servers not busy, you can re configure it again to be less powerful and save the business some money.  Sound good so far?

Cloud hosting providers

There are 3 main providers, although many more exist.  Amazon was one of the first, Microsoft with its Azure platform, and Rackspace.

There are many differences between each cloud provider, we have used them all and can assist you with your businesses setup.  Each provider has a different control panel, with a different way of setting up security and the servers themselves.  Microsoft has been the cheaper of the three, but there are price battles between them all so this fluctuates.

They all offer additional options for the servers such as hosting SQL Server which is supplied at an additional cost.

Advantages

  • Fire up a new server when ever you want
  • Choice of operating system
  • Re configurable, sometimes on the fly to increase or decrease memory, disk space and performance
  • Performance – Our dedicated servers often perform 10x better than a similar specified cloud server when it comes to disk transfer rates with products such as SQL Server.
  • Pretty nifty load balancing and firewall like security features
  • Almost unlimited disk space and memory as long as you can afford it.
  • Backup Services are generally very good
  • No hardware to purchase and worry about replacing
  • Geolocated data – You can choose to host the data across multiple countries to spread the risk of data loss

Disadvantages

  • Cost – Traditional Hosting and even your own rack in a data centre can be cheaper per month, although you need to factor in replacing hardware etc if you are planning on owning your own servers
  • Unexpected reboots and maintenance windows – We find this so annoying that both Amazon and Microsoft have maintenance jobs which require reboots of your servers and sometimes some downtime which often isn’t timed well for UK traffic. Hardware faults can still occur.  One example of which was a failure on Amazon where we got notified that the server was sitting on corrupt hardware and it was being shut down permanently by Amazon.  We had a mild panic and had to work out a way of moving all the data to a new instance before the deadline which was only a short time away.
  • Experience – Even if you had someone experienced in servers, you will require someone that knows the control panels for each of the platforms – We can assist with this
  • Most sites don’t require the level of flexibility even enterprise level sites
  • Unexpected bills – sometimes much higher than you had thought. One example, one of our clients was being billed by Amazon for over £900 a month for one basic server with SQL Server and minimal traffic.
  • Performance – Our dedicated servers often perform 10x better than a similar specified cloud server when it comes to disk transfer rates with products such as SQL Server.

Hybrid

We can assist you with your own servers, dedicated, or cloud based and can recommend the best for your business for your budget.  We also offer our own hosting which takes in the advantages of cloud hosting, but with less of the disadvantages.  Our servers are dedicated work horses, ultra modern and powerful.  We can configure a virtual server for you with all the benefits of cloud hosting, but we take care of the hardware and the setup.

Whatever your hosting requirements, talk to us today and use our experience to make the right decision whichever platform or host you choose.

Top 3 Reasons IT Projects Fail

The biggest problem today with IT projects is being able to bring them in on time and on budget.  This is something we do every day at Dev Team Solutions, and we want to share in our experience of over 15 years of success in the industry.

In our view, there are 3 main reasons why software projects fail to deliver to deadline or budget.

  1. Over Engineering
  2. Over Resourced
  3. Poor Resource Management

Lets tackle these three aspects and see if we can help you with your IT projects.

Over Engineering

No matter what IT project you would have worked on, it’s likely you’ll be thinking to yourself “why is this taking so long?”

The simple answer is that the project will be involving too many decision makers and we all know the saying “too many cooks”.  Believe it or not, 9 times out of 10, you will have managers and team members over thinking the solution.  Every meeting you have will involve a change to the requirements and the scope for the project will get bigger.  In fact this can occur on any project not just within the IT industry.  Scope Creep as the techy people call it is one of the key reasons why the project fails to deliver on time.  Too many requirements and un achievable deadlines to meet those deadlines is a killer for any project.  We’ve all been there, in a meeting that is supposed to be discussing requirement a, and all of a sudden all hell breaks loose and you end up spending a whole day discussing a,b,c, d and z.

As a manager and project lead of a number of years the easiest way to resolve this is to set clear and firm objectives to your meetings and to never deviate.  If valid points are raised, note them down for further discussion.  Within a project it’s important to break down smaller more achievable items of work.  It’s easy to get swamped when trying to tackle a 6 month project in one piece.  You don’t have to go the whole hog and go fully agile, but break the whole project down into each of its key deliverables.  Then break them down into the things you need to complete the task.  Allocate each task based on your teams competences.  One idea that always makes me laugh is when a company tries to give new “exciting” features to the employee which jumps the highest.  No No No.  you are trying to get a project finished, on time and to budget.  Tasks should not be allocated based on someone wanting to learn a new skill.  Allocate tasks to the most competent person at delivering that task.  If you have spare resource, by all means let someone shadow for experience.

During design phase, so many people will have ideas, and it’s important to listen, but don’t let that detract from the key goal of meeting that deadline.  As a team you will think about all the possible scenarios that could or might go wrong, or what the user may or may not do.  Try not to get bogged down with this.  You will never think of all the ways a customer will interact with your site or product.  Don’t over think, and don’t make it too complicated.  If you think it’s too complicated, so will the end customer and MD.

Over Resourced

We help so many companies especially in IT to understand that you don’t always deliver a project quicker by throwing more staff or money at the problem.  Quite often more people means bigger budgets, slower delivery and often cause IT projects to fail.  It’s not about quantity, it’s about the quality of your staffing and your resources that matters.  2 highly motivated individuals can often do the work of 10 underskilled poorly motivated individuals.  Quality of skills is important, however the more people you have on your team the more communication difficulties you will have.  Even with the best of intentions, having a large team can mean you as a manager have to make more people understand your end goal.  Even when they do understand the project and the deadline, getting the whole team to work together like clockwork can be a nightmare.  Too many people on your project and you’ll have more problems at the end of a project when trying to bring each of the elements together.

If one person on a task works at 100%, a second person will probably add only 30% at most to the task delivery due to the overhead in communication.   You are better allocating that second employee to a different project/task.  If you’ve done your project management correctly you’ll have a finite set of tasks that can run in parallel.  That could be the best deciding factor on the number of people you use on a project.

In software, more people also often means greater discipline in ensuring all the code is written well and is understandable by the rest of the team.  Most companies enforce this via coding standards.  This slows down development and often no matter how hard you try, these standards will be deviated from, usually for good reason.  This then means you need handovers of each of the modules in case of illness or someone shadowing the development.  In the real world coding standards are a big time overhead and if you have a good time often achieve nothing. Spend more time on the important parts of team management.  Ensure your team have everything they need to delivery their tasks without fail.  Make them aware that they will have to work late if the project is late.  Doing so in the beginning will allow them to plan the task so ensure it doesn’t overrun, or they will have to do extra late nights.  No one wants that, so all effort is delivered up front.

Poor Resource Management

It’s a simple idea, and as a manager how do you know if you are managing your team effectively?  The quick answer is you never do, but if you follow these guidelines you’ll probably be on the right track.

  • Talk to each member of the team daily, but briefly
  • Know your team members skills and weaknesses – don’t be afraid to ask them if they are comfortable with the task they have been given
  • Always have an up to date plan of the project
  • Breakdown your project plan into manageable 1-2 week deliverables
  • Ensure meetings are quick and to the point – don’t get bogged down with questions or off topic discussions