<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>2015-07 on Funky Si's Blog (Dev)</title><link>https://blog-dev.funkysi1701.com/2015/07/</link><description>Recent content in 2015-07 on Funky Si's Blog (Dev)</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>funkysi1701@gmail.com (Simon Foster)</managingEditor><webMaster>funkysi1701@gmail.com (Simon Foster)</webMaster><lastBuildDate>Thu, 30 Jul 2015 20:00:45 +0000</lastBuildDate><atom:link href="https://blog-dev.funkysi1701.com/2015/07/index.xml" rel="self" type="application/rss+xml"/><item><title>Upper Pylon 2 x09: The Passenger</title><link>https://blog-dev.funkysi1701.com/posts/2015/upper-pylon-2-1-x-09-the-passenger/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 30 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/upper-pylon-2-1-x-09-the-passenger/</guid><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><category term="Trekmate">Trekmate</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/Bashir-Choked.jpg"/><description>&lt;p&gt;I recorded another podcast the other week; it can be found at &lt;a href="https://www.trekmate.org.uk/upper-pylon-2-1-x-09-the-passenger/" target="_blank" rel="noopener noreferrer"&gt;https://www.trekmate.org.uk/upper-pylon-2-1-x-09-the-passenger/&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Doctor Bashir being choked in DS9 episode The Passenger" src="https://blog-dev.funkysi1701.com/images/2015/07/Bashir-Choked.jpg" loading="lazy"
width="638" height="480"
/&gt;
&lt;/p&gt;
&lt;p&gt;This week on Upper Pylon 2, we are joined by our first UK guest, Simon (aka &lt;a href="https://twitter.com/funkysi1701" target="_blank" rel="noopener noreferrer"&gt;funkysi1701&lt;/a&gt;
) as we take a look at the Bashir-centric “mystery” episode, “The Passenger.”&lt;/p&gt;
&lt;p&gt;When a former prisioner, Rao Vantika (a name you’ll hear COUNTLESS times throughout the episode) is killed, his pursuer believes that the late murderer is not really dead, and continues her investigation at DS9 while an important shipment is scheduled to arrive. Will Vantika reappear, and if so, who will he appear as? Well, if you’ve seen the opening of the episode, it really isn’t all that hard to deduce. But join the UP2 crew as we dissect this little caper.&lt;/p&gt;
&lt;p&gt;As always, be sure to leave us your feedback about the episode!&lt;/p&gt;</description></item><item><title>10 facts about Windows 10</title><link>https://blog-dev.funkysi1701.com/posts/2015/10-facts-about-windows-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 29 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/10-facts-about-windows-10/</guid><category term="Microsoft">Microsoft</category><category term="Windows10">Windows10</category><category term="OperatingSystem">OperatingSystem</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/Windows-10_Product-Family.jpg"/><description>&lt;p&gt;Today Microsoft release Windows 10 so what else can I talk about? I like many technology people are very excited today. This version of window is the first that Microsoft have release for free.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10 product family across devices" src="https://blog-dev.funkysi1701.com/images/2015/07/Windows-10_Product-Family.jpg" loading="lazy"
width="1920" height="1080"
/&gt;
&lt;/p&gt;
&lt;p&gt;10 You heard that correct Windows 10 is &lt;strong&gt;free&lt;/strong&gt;. If you upgrade your device to windows 10 before 29th July 2016 it is free and will continue working on that device forever.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Upgrade to Windows 10 within the first year and it is yours free, forever.
No subscriptions, no additional costs.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;9 As with any upgrade always backup your computer and any important files before you do anything. Microsoft and any IT expert will tell you this. For a great guide to upgrading see Scott Hansleman’s &lt;a href="https://www.hanselman.com/blog/getting-started-with-windows-10" target="_blank" rel="noopener noreferrer"&gt;blog&lt;/a&gt;
. I have upgraded my laptop without any problems but there will always be exceptions so take extra care.&lt;/p&gt;
&lt;p&gt;8 Windows 10 is the &lt;strong&gt;LAST&lt;/strong&gt; version of windows. I don’t know what this means but I can take a guess.&lt;/p&gt;
&lt;p&gt;Typically Microsoft has created a new version of windows every few years. With every new version there has come headaches and problems as people try to make software and hardware work with the next version. Microsoft is instead going to try and release updates and patches to the operating system to keep things up to date.&lt;/p&gt;
&lt;p&gt;However I can see that only working for so long. Eventually Microsoft will make something new but it is unlikely to be called Windows. Maybe it will be something hosted in the Cloud, as they have a really strong presence with Azure which is only going to grow as time goes on.&lt;/p&gt;
&lt;p&gt;7 Windows 10 is available in 7 different flavours.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 10 Home – equivalent to the Home editions we have had since XP. This version is designed for your typical consumer.&lt;/li&gt;
&lt;li&gt;Windows 10 Mobile – this version is designed to run on phones and tablets. Unlike previous Phone versions, everything you can find on the desktop OS should be available on the phone (but optimised for the smaller screens)&lt;/li&gt;
&lt;li&gt;Windows 10 Pro – this is the version I will be testing with my work PCs. It is designed for small businesses and allows domain joining.&lt;/li&gt;
&lt;li&gt;Windows 10 Enterprise – this version is only available via Volume Licensing so not easily available to the typical user but is aimed at larger businesses.&lt;/li&gt;
&lt;li&gt;Windows 10 Education – another version that is only available via Volume Licensing but targeted at schools and universities.&lt;/li&gt;
&lt;li&gt;Windows 10 Mobile Enterprise – this version is for mobile and tablets in the business world. Standard policies can be applied to all your employees mobile devices.&lt;/li&gt;
&lt;li&gt;Windows 10 IoT Core – this is an interesting version designed to run on hardware and Internet of Things (IoT) devices. I would quite like to play with this version on my Raspberry Pi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6 Windows 10 introduces a brand new web browser called Edge. For years web developers have hated Internet Explorer, for its lack of support for the latest web standards. Internet Explorer 6 caused many users to migrate away to browsers like firefox and later Chrome and despite Microsoft’s best effort with the later versions people have not moved back. Edge is an attempt at a fresh start.&lt;/p&gt;
&lt;p&gt;5 In 2011 Apple introduced the personal assistant Siri, well now Microsoft are bringing us &lt;strong&gt;Cortana&lt;/strong&gt; the windows equivalent. With Cortana you can ask your computer to do anything, set reminders, search the internet, answer questions, anything. With advanced voice recognition you can speak as well as type your questions. Cortana is now part of Windows 10.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10 desktop screenshot with Start menu" src="https://blog-dev.funkysi1701.com/images/2015/05/win10.jpg" loading="lazy"
width="888" height="537"
/&gt;
&lt;/p&gt;
&lt;p&gt;4 Windows 10 brings back the start menu. The start menu you have always used to access programs works the same but features of the windows 8 start screen have been incorporated into it.&lt;/p&gt;
&lt;p&gt;3 Windows 10 is more &lt;strong&gt;secure&lt;/strong&gt;. Security patches are frequently released for all operating systems, but windows 10 has been designed with security in mind. For businesses there are options to completely lock down your users environment only allowing ‘white listed’ programs to run.&lt;/p&gt;
&lt;p&gt;2 &lt;strong&gt;Continuum&lt;/strong&gt; is one of the most revolutionary things about Windows 10. Continuum is the notion that one computing experience is continued regardless of the device used or the location. Continuum will automatically adjust your screen to make the best use of its size. Tablets and phones have the tiled view and start screen, if you connect a keyboard and monitor it will behave like a full blown PC. This is mind bending, that a phone running windows 10 can do as much as your laptop.&lt;/p&gt;
&lt;p&gt;1 Today I am off to a Windows 10 launch event where I expect many of these features will be discussed and most likely many more.&lt;/p&gt;</description></item><item><title>Writing better Git commit messages</title><link>https://blog-dev.funkysi1701.com/posts/2015/writing-better-git-commit-messages/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 25 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/writing-better-git-commit-messages/</guid><category term="Git">Git</category><category term="SourceControl">SourceControl</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/git_commit.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="XKCD comic about Git commit messages" src="https://blog-dev.funkysi1701.com/images/2015/07/git_commit.png" loading="lazy"
width="439" height="250"
/&gt;
&lt;/p&gt;
&lt;p&gt;I always use source control for my coding changes, however some of my commit messages leave something to be desired.&lt;/p&gt;
&lt;p&gt;I always try to write a commit message but I often think that the change themselves should be enough to indicate what I did. I also don’t need to include who made the change or the time and date and that gets included automatically.&lt;/p&gt;
&lt;p&gt;Here are some tips I have found that may help me in the future.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ask yourself why you are making this change. The Who, When and What are already being covered so it is only the why that needs including in the commit message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If your commit breaks something or causes side affects or a new dependency this should be included in the commit message. If your commit breaks functionality, consider if you really need to commit it yet, maybe only commit once fixed?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If your commit includes a long list of changes consider if the commit needs splitting into several commits. It is easy to only commit one or two files write a specific commit message and then commit the rest of the changes separately.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consider including a subject for larger commits. The following comes from the git manual.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Though not required, it’s a good idea to begin the commit message with a single short
(less than 50 character) line summarizing the change, followed by a blank line and then
a more thorough description. The text up to the first blank line in a commit message
is treated as the commit title, and that title is used throughout Git.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;If you use a subject follow the following conventions:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Limit of 50 characters&lt;/li&gt;
&lt;li&gt;Start with a capital letter&lt;/li&gt;
&lt;li&gt;Do not end with a full stop&lt;/li&gt;
&lt;li&gt;Use the imperative mood i.e. write as if issuing a command&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>My love/hate with Microsoft Access</title><link>https://blog-dev.funkysi1701.com/posts/2015/microsoft-access/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 24 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/microsoft-access/</guid><category term="Database">Database</category><category term="Access">Access</category><category term="SQL">SQL</category><category term="VBA">VBA</category><category term="MicrosoftOffice">MicrosoftOffice</category><description>&lt;p&gt;For historical reasons I use Microsoft Access as the front-end for all my line of business databases.&lt;/p&gt;
&lt;p&gt;Access allows you to create an ADP file that can connect to your SQL Server database. However Office has dropped support for this, so the last version of office that I can use is Office 2010.&lt;/p&gt;
&lt;p&gt;Before I start hating on Access there are some good things about the platform. Users with very little knowledge can create a database fairly quickly. Development time is also fairly low as it doesn’t take long to create a new form, and add a few buttons which open different reports.&lt;/p&gt;
&lt;p&gt;For the last 5 years or so I have built a range of different forms in Access, (and even if I do say so myself), I have got quite good at creating forms that users can be more productive with. Access has the concept of a subform which is a form embedded in a form, each form can be connected to a different query and can be connected to each other so it is relatively easy to create something quite powerful.&lt;/p&gt;
&lt;p&gt;Access report are an easy way to create professional looking reports that can be sent out to clients, or used by management and they also have the concept of subreports, (same as subforms but embedded in a report), this means you don’t have to write one query to pull back every piece of data that shows up in a report.&lt;/p&gt;
&lt;p&gt;VBA or Visual Basic for Access allows you easily do things programmatically, like run something if something is selected or a button is clicked. This is not the easiest programming language to work with, however once you have used it for a while you get used to its quirks. My favourite function is IIF, the syntax is fairly simple IIF(expr, truepart, falsepart), if expr evaluates to true the truepart is executed (executed can be as simple as displaying certain text in certain conditions), if it is false the falsepart is executed, and you can also chain them together which I have done to produce something very complex looking.&lt;/p&gt;
&lt;p&gt;Now for the negative side of things. Access creates a binary ADP file, binary files can not be version controlled in git or subversion. This is a big problem as I want to keep track of every change I make. It also means that branching or working with others on big projects is also difficult.&lt;/p&gt;
&lt;p&gt;One work around I have found to this problem is &lt;a href="https://accesssvn.codeplex.com/" target="_blank" rel="noopener noreferrer"&gt;AccessSVN&lt;/a&gt;
. This program takes an ADP and creates text files of every form and report. It also can create an ADP from these files as well, however I have had varying success with this feature so I prefer to just create the text files if possible. What I do after I have made a change to the ADP is to run AccessSVN, create text files and commit these to source control. You can then see what controls have been changed or added. It also helps with bugs as I have found that sometimes while testing access will apply a filter to a form, which will break things if deployed, which is very annoying.&lt;/p&gt;
&lt;p&gt;Access can only do what access was designed to do. There are some advanced features that we would like to add to our databases. Things like sending emails or uploading reports to a website. This is not Access fault as it was never designed to be able to do such things but I am often asked about what is possible.&lt;/p&gt;
&lt;p&gt;End of support for Office 2010 is approaching and I have plans to stop using Access but until then I need to keep supporting our existing front ends.&lt;/p&gt;</description></item><item><title>Seven signs you are a bad programmer</title><link>https://blog-dev.funkysi1701.com/posts/2015/7-warning-signs-that-you-are-a-bad-programmer/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 23 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/7-warning-signs-that-you-are-a-bad-programmer/</guid><category term="BadProgrammer">BadProgrammer</category><category term="Plan">Plan</category><category term="SourceControl">SourceControl</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/you_are_coding_it_wrong.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="You are coding it wrong" src="https://blog-dev.funkysi1701.com/images/2015/07/you_are_coding_it_wrong.png" loading="lazy"
width="359" height="232"
/&gt;
&lt;/p&gt;
&lt;p&gt;Am I a good programmer or a bad programmer?&lt;/p&gt;
&lt;p&gt;Here are 7 signs that might mean you are more towards the bad end of the scale.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1: You fail to plan before you start coding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am very guilty of this, I love to jump into the code before thinking. But I am slowly starting to see the advantages of sketching a few things out before I write any code.&lt;/p&gt;
&lt;p&gt;Most of my coding recently has been SQL based and I am starting to like sketching out table designs. I have also started to sketch out the UI before I start coding. I am not saying that you need to plan every single line of code, but a little bit of planning can go a long way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2: You fail to use version control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have blogged about using version control in the past but it really is a very useful technology. It not only keeps track of every file in your solution and stores its entire history, but you can separate different versions into branches and see who changed what and when (and if the commit message is detailed enough why).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3: You use bad variable names&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whats wrong with variable1 and variable2 as variable names? Variables should be named after what they do or what they contain, but it is very easy to start copy and pasting them and before you know it you have a variable1 and variable2 situation. Remember that Visual Studio has some powerful refactoring tools so relatively easy to get them back in order.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4: You repeat your code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve been reading Pragmatic Programmer and one of their first tips was DRY – Don’t Repeat Yourself. They go to extremes with nothing being repeated anywhere in your code, but I don’t think you need to go too far, you can be reasonable. If you have the same code repeated four times, then creating a function for this code will dramatically improve your code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5: You struggle to understand your own code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why did I do it this way? I feel like I am always trying to remember the reasons I chose to code the way I did previously. Part of the reason for this is that I am constantly learning at the moment, but there is more that I can do to help myself understand in the future.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6: You are selfish and don’t share&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am not selfish, if I learn something really cool I have to tell someone. I like writing stuff on here to share with the world. I am thinking of news ways to train my staff.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7: You work on multiple projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes Guilty as charged with this one. I have multiple projects that I am working on at work, I also have a fair few personal projects that I would like to work on. Not sure I completely agree that multiple projects equals bad programmer.&lt;/p&gt;</description></item><item><title>Things to know before database work</title><link>https://blog-dev.funkysi1701.com/posts/2015/things-to-know-before-working-on-your-databasethings-to-know-before-working-on-your-database/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 20 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/things-to-know-before-working-on-your-databasethings-to-know-before-working-on-your-database/</guid><category term="Backups">Backups</category><category term="SQL">SQL</category><category term="DisasterRecovery">DisasterRecovery</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/uf010206.jpg"/><description>&lt;p&gt;I recently saw this blog &lt;a href="https://www.brentozar.com/archive/2015/07/questions-to-ask-before-you-touch-a-database-server/" target="_blank" rel="noopener noreferrer"&gt;post&lt;/a&gt;
by &lt;a href="https://www.brentozar.com/team/brent-ozar/" target="_blank" rel="noopener noreferrer"&gt;Brent Ozar&lt;/a&gt;
that I thought I might discuss.&lt;/p&gt;
&lt;p&gt;Brent listed 13 questions to ask about a database before you start working with it. I am going to go through these 13 questions and expand on them based on my experiences.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Is this database in production now?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think it should go without saying that the first thing you should find out is if your database is in production. If its not in production you can do what you like and no one will notice.
I know what databases are in production and which aren’t where I work so I can answer this one.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;If this goes down, what apps go down with it?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What apps are running on what databases is a good second question. I have at least one database which has multiple front end apps. At first glance you would think that that these two apps are not connected but they are, I need to be careful with both of these apps to make sure they don’t break each other.
I know what apps run off what databases.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;When those apps go down, is there potential for loss of life or money?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is a difficult question so I will split it into two. Loss of life, my databases don’t control life support machines or nuclear weapons so my first instinct would be to say no. However it is not that straightforward, what if your app allowed contractors to know the location of dangers inside a property they were working in. Once your app goes down, they could have an accident due to lack of information.
Loss of money, this one is more straightforward. Time is money in the business world so any time that your app is down and your employees are not able to work is a loss of money. If your database is linked to an eCommerce site, the loss of money could be extremely high.
I know what affect downtime will have on my users and business.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;How sensitive are these apps to temporary slowdowns?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Similar to the previous question, a slowdown can be as serious as downtime for some applications.
Luckily most of my apps are internal only so are not seriously affected by slowness.&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful backup?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I manage the backup schedule for all my databases so I know exactly when each one was last backed up. When ever I do anything to a production database I will run a backup so I can roll back in case of problems. As part of developing changes I run my changes on a backup of the data. I can script all my changes and repeatedly run them against a backup until I am sure no problems will occur.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Illustration of SQL Server database backup and restore" src="https://blog-dev.funkysi1701.com/images/2015/07/uf010206.jpg" loading="lazy"
width="233" height="238"
/&gt;
&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful restore test?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;More important than a backup is testing restoring your databases. If you can’t restore data then your backup is useless. I try to test restoring my backups at least weekly so I know that I can rely on my backups.&lt;/p&gt;
&lt;ol start="7"&gt;
&lt;li&gt;&lt;strong&gt;Is everyone okay losing data back to the last successful backup?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If disaster strikes you could loose all data between now and the time of your last backup. But all is not lost transactional backups can be scheduled throughout the day, in my case the most data we could loose is 15 minutes. This could be configured to be more or less frequent depending on your data. But remember the previous question and make sure you test a restore of your transactional backups, if you can’t restore from them you will be forced to restore from the last successful backup.&lt;/p&gt;
&lt;ol start="8"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful clean corruption test?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corruption can be a killer if it is not found quickly. If you need to restore to the last backup before corruption occurred this could result in a significant amount of data loss. To check for corruption you need to run DBCC regularly.&lt;/p&gt;
&lt;ol start="9"&gt;
&lt;li&gt;&lt;strong&gt;Do we have a development or staging environment where I can test my changes first?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the answer to this is no, then your next job is to setup a development or staging area. Having a development environment makes development a lot easier and I don’t think I could manage to do all the changes I have done recently without one.&lt;/p&gt;
&lt;ol start="10"&gt;
&lt;li&gt;&lt;strong&gt;Is there any documentation for why the server was configured this way?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I really wish we had more documentation about configurations as it would make finding out why thing were setup the way they are. So unfortunately the answer to this question is No.&lt;/p&gt;
&lt;ol start="11"&gt;
&lt;li&gt;&lt;strong&gt;What changes am I not allowed to make?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Depending on what your app does, where it is hosted, how quick the changes are needed and many other factors will all restrict what changes you can make. Historical decisions on the database can also affect what changes can be made, if the database has been structured in a certain way, it may be very difficult to restructure it in a more efficient way.&lt;/p&gt;
&lt;ol start="12"&gt;
&lt;li&gt;&lt;strong&gt;Who can test that my changes fixed the problem?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is an interesting question, from experience the best people to speak to about problems with the database are the users. If they can show you how to reproduce a problem, you should be able to fix this problem, after that you can probably get them to verify that it has been fixed.&lt;/p&gt;
&lt;ol start="13"&gt;
&lt;li&gt;&lt;strong&gt;Who can test that the apps still work as designed, and that my changes didn’t have unintended side effects?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is an extension of the previous question. The main users of your app should be your first port of call to find out if the app works as expected. However exploring side affects and undesired features is something that I would test as part of the development process. It has taken a while but I have constructed a detailed check list that can be used for testing so I know that most bugs can be found before release.&lt;/p&gt;</description></item><item><title>New Horizons Pluto Spacecraft</title><link>https://blog-dev.funkysi1701.com/posts/2015/new-horizons-pluto-spacecraft/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 14 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/new-horizons-pluto-spacecraft/</guid><category term="Pluto">Pluto</category><category term="Hardware">Hardware</category><category term="Spacecraft">Spacecraft</category><category term="Software">Software</category><category term="Technology">Technology</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/84270464_p_lorri_fullframe_color.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Colour photograph of Pluto taken by New Horizons" src="https://blog-dev.funkysi1701.com/images/2015/07/84270464_p_lorri_fullframe_color.png" loading="lazy"
width="976" height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;To explore Strange New Worlds, well today the NASA spacecraft New Horizons has been doing just that. This is the most detailed photograph yet of the furthest planet we have ever explored, Pluto.&lt;/p&gt;
&lt;p&gt;New Horizons was launched on 19th January 2006. It has been travelling for 3463 days (9.5 years).&lt;/p&gt;
&lt;p&gt;In 2006 we were still using Windows XP and Office 2003. In 2006 I wasn’t even working in IT. As a software developer it is hard to imagine writing software that won’t be used for another 9.5 years.&lt;/p&gt;
&lt;p&gt;The spacecraft carries two computer systems: the Command and Data Handling system and the Guidance and Control processor. Each of the two systems is duplicated for redundancy, for a total of four computers. The processor used for its flight computers is the Mongoose-V, a 12 MHz radiation-hardened version of the MIPS R3000 CPU. Multiple clocks and timing routines are implemented in hardware and software to help prevent faults and downtime. To conserve heat and mass, spacecraft and instrument electronics are housed together in IEMs (integrated electronics modules). There are two redundant IEMs. Including other functions such as instrument and radio electronics, each IEM contains 9 boards. The processor distributes operating commands to each subsystem, collects and processes instrument data, and sequences information sent back to Earth. It also runs the advanced “autonomy” algorithms that allow the spacecraft to check the status of each system and, if necessary, correct any problems, switch to backup systems or contact operators on Earth for help.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Diagram of the New Horizons spacecraft structure" src="https://blog-dev.funkysi1701.com/images/2015/07/Mission-Spacecraft-structure.jpg" loading="lazy"
width="720" height="523"
/&gt;
&lt;/p&gt;
&lt;p&gt;For data storage, New Horizons carries two low-power solid-state recorders (one backup) that can hold up to 8 gigabytes each. The main processor collects, compresses, reformats, sorts and stores science and housekeeping (telemetry) data on the recorder – similar to a flash memory card for a digital camera – for transmission to Earth through the telecommunications subsystem.&lt;/p&gt;
&lt;p&gt;Communication with the spacecraft is via X band. The craft had a communication rate of 38 kbit/s at Jupiter; at Pluto’s distance, a rate of approximately 1000 bit/s. To put this speed into context, the size of the image at the top of this page is 649kb and would take over 86 minutes to travel from Pluto to Earth, (I am sure the actual image was much larger and took even longer to reach us.) Besides the low bandwidth, Pluto’s distance also causes a latency of about 4.5 hours (one-way). The 70 m (230 ft) NASA Deep Space Network (DSN) dishes are used to relay commands once it is beyond Jupiter. It will take 16 months to send the full set of Pluto encounter science data back to Earth.&lt;/p&gt;
&lt;p&gt;Most software encounters a problem from time to time, but the software on board this spacecraft has to keep running for almost a decade. Due to the distances involved its not possible to upload any code tweaks. Any commands that are sent to the spacecraft will take 4.5 hours to even get there so there needs to be a huge amount of autonomy and redundancy to cope with such a massive journey.&lt;/p&gt;
&lt;p&gt;I can’t even imagine how you would begin to write the software to run such a craft. I don’t think I have written any code that is as old as is running on the New Horizons craft, and if I had I would guess the quality would be quite poor certainly not good enough to work non stop for a decade.&lt;/p&gt;
&lt;p&gt;There are some incredibly clever people out there who have been involved in this project. Congratulations team you have every right on being proud as the data starts to trickle back to earth.&lt;/p&gt;</description></item><item><title>How to upgrade to Windows 10</title><link>https://blog-dev.funkysi1701.com/posts/2015/how-to-upgrade-to-windows-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 11 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/how-to-upgrade-to-windows-10/</guid><category term="ScottHansleman">ScottHansleman</category><category term="Free">Free</category><category term="SystemAdministration">SystemAdministration</category><category term="Windows10">Windows10</category><category term="Upgrade">Upgrade</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/10/windows_10_fullwidth.jpg"/><description>&lt;p&gt;Microsoft are releasing a new operating system on July 29th called Windows 10.&lt;/p&gt;
&lt;p&gt;If you have questions about Windows 10 watch this video by &lt;a href="https://www.hanselman.com/blog/windows-10-is-comingheres-what-to-tell-nontechnical-parent" target="_blank" rel="noopener noreferrer"&gt;Scott Hansleman&lt;/a&gt;
. He explains how to upgrade from Windows 7 and 8 to Windows 10 and what to expect after you upgrade.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/nuCpdlMFvUY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;My advice to everyone is that you backup your devices before you upgrade, this is good practice before you install any software or updates.&lt;/p&gt;
&lt;p&gt;Microsoft are offering Windows 10 for free for a whole year, so don’t panic. Take your time, backup all your important files and when you are ready install Windows 10. Nothing is going to stop working after July 29th if you don’t have the latest operating system on your machine.&lt;/p&gt;
&lt;p&gt;I hope this helps answer some of your questions about what to do at the end of the month. If not feel free to write a comment or contact me with your questions.&lt;/p&gt;</description></item><item><title>Why do we call them bugs?</title><link>https://blog-dev.funkysi1701.com/posts/2015/why-do-we-call-them-bugs/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 07 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/why-do-we-call-them-bugs/</guid><category term="Debugging">Debugging</category><category term="Bugs">Bugs</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/11666093_10153470803062792_4914668365512645054_n.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Insect resting outdoors" src="https://blog-dev.funkysi1701.com/images/2015/07/11666093_10153470803062792_4914668365512645054_n.jpg" loading="lazy"
width="960" height="540"
/&gt;
&lt;/p&gt;
&lt;p&gt;On my way home from the office I spotted this little chap. In my expert opinion it is a &amp;ldquo;bug&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;This particular &amp;ldquo;bug&amp;rdquo; is harmlessly sitting outside, but have you ever wondered why computer problems are often named after this little chap (and his friends)?&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Moth taped in Grace Hopper&amp;rsquo;s 1947 computer logbook" src="https://blog-dev.funkysi1701.com/images/2015/07/H96566k.jpg" loading="lazy"
width="740" height="583"
/&gt;
&lt;/p&gt;
&lt;p&gt;The first recorded bug report was in 1947 when Grace Hopper found a moth between the relays of a Harvard Mark II, this moth was then tapped in the log book as evidence.&lt;/p&gt;
&lt;p&gt;Since then the process of removing bugs has been called &amp;ldquo;debugging&amp;rdquo;. However bugs had existed in electrical devices before this.&lt;/p&gt;
&lt;p&gt;In the early days of telegraphy, there were two types of keyers. The older “manual” keyers which required the operator to code the dots and dashes. And the newer, semi-automatic keyers that would send a string of dots automatically. These semi-automatic keyers were called &amp;ldquo;bugs&amp;rdquo;. One of the most common brands of these keyers, the Vibroplex, used a graphic of a beetle.&lt;/p&gt;
&lt;p&gt;Luckily the bugs I deal with don’t have legs or wings and are just errors in computer code. When I debug code I need to look at the inner workings of the code, looking for problems, most often it is a typo or piece of logic that doesn’t match up. But the relationship between computer bugs and living bugs does continue, the bug tracking software bugzilla uses a cartoon bug as its logo.&lt;/p&gt;</description></item><item><title>Agile Software Development</title><link>https://blog-dev.funkysi1701.com/posts/2015/agile-software-development/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 04 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/agile-software-development/</guid><category term="Agile">Agile</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/Agile-Marketing-Series-What-is-Agile-Marketing.png"/><description>&lt;p&gt;I have heard the term &lt;strong&gt;Agile Software Development&lt;/strong&gt; quite a bit, but lets see if we can define it and see if I do any of the processes involved with it.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Agile Software Development" src="https://blog-dev.funkysi1701.com/images/2015/07/Agile-Marketing-Series-What-is-Agile-Marketing.png" loading="lazy"
width="579" height="290"
/&gt;
&lt;/p&gt;
&lt;p&gt;The dictionary defines ‘Agile’ as mentally quick, or nimble, or quick in movement.&lt;/p&gt;
&lt;p&gt;In 2001 The Manifesto for Agile Software Development first introduced the term agile. The manifesto is based on 12 principles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Customer satisfaction by early and continuous delivery of useful software&lt;/li&gt;
&lt;li&gt;Welcome changing requirements, even late in development&lt;/li&gt;
&lt;li&gt;Working software is delivered frequently (weeks rather than months)&lt;/li&gt;
&lt;li&gt;Close, daily cooperation between business people and developers&lt;/li&gt;
&lt;li&gt;Projects are built around motivated individuals, who should be trusted&lt;/li&gt;
&lt;li&gt;Face-to-face conversation is the best form of communication (co-location)&lt;/li&gt;
&lt;li&gt;Working software is the principal measure of progress&lt;/li&gt;
&lt;li&gt;Sustainable development, able to maintain a constant pace&lt;/li&gt;
&lt;li&gt;Continuous attention to technical excellence and good design&lt;/li&gt;
&lt;li&gt;Simplicity—the art of maximizing the amount of work not done—is essential&lt;/li&gt;
&lt;li&gt;Self-organizing teams&lt;/li&gt;
&lt;li&gt;Regular adaptation to changing circumstance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lets go through this list one by one and examine what I understand of it and how I might have used it in the past.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customer satisfaction by early and continuous delivery of useful software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My boss bombards me with hundreds of changes that she wants straight away, I keep her reasonably happy by giving her regular small improvements. Yesterday I released some changes, and two weeks before that I released another chunk, on Monday I will find out that I haven’t included feature Y, so in another couple of weeks feature Y will be delivered. This is my understanding of delivering continuous improvements to my software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Welcome changing requirements, even late in development&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets ignore the word welcome, as changing requirements are really annoying. I designed a system to track how far through a 5 step process you were, after I deployed that change it was discovered that the process was actually 18 steps. Annoying as this was, my design allowed the easy addition of these extra stages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working software is delivered frequently&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, I do this, see my comments above. If you make a single change and then deploy it, bug fixes are easy as most of it is still in your head. If you spend 6 months making 1000 changes, it will take you extra time to remind yourself what you did and why.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Close, daily cooperation between business people and developers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t do this daily but I regularly demo my changes to other departments and directors so I can gather feedback and further revise my changes. Before I start work I always try to understand what is needed and how they want it to work and try and figure out what they need not what they want (different things)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projects are built around motivated individuals, who should be trusted&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not sure I understand this one. There are people that use my projects that I always go to, to find out how it is being used. There are also people that are not interested in change, it is always far more difficult to convince them of the value of what I am working on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Face-to-face conversation is the best form of communication&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I was an IT support guy, I used to like going up to someone’s desk and seeing them experience the problem, it could usually be fixed in a couple of clicks. However when you had a call from a remote office and had to talk through trying different things it could take hours to fix. The same can be said of deploying a new feature, if you talk to your users and explain what has been added they are far more likely to use it, than if you send them an email listing what you have done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working software is the principal measure of progress&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If a Manager can click two buttons to find out how busy their department is, when before they only had out of date spreadsheets, this is a clear measure of progress. Any time spent on code that never gets deployed doesn’t improve anything, its only when that code starts being used has progress been made.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sustainable development, able to maintain a constant pace&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am pretty sure I don’t do this. I work harder at some times than others. Sometimes there are other projects or other demands on my time and so development on a particular project will decrease and there are times when I eat, sleep, dream about a project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Continuous attention to technical excellence and good design&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I do strive towards good design and with each deployment aim to improve the quality of code in production. However my limited knowledge means that I don’t always produce the best code but it is improving. If I look at some work I have done in the past, I would definitely do some of that differently if working on it now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplicity—the art of maximizing the amount of work not done—is essential&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I first read this one, it made no sense to me. However I believe it can be restated as minimising the amount of work done. Recently I was writing SQL code and I had about 4 or 5 different queries to produce the report that was needed. Every time the requirements changed it was a long slog through each of these queries to update them. In the end I had to rewrite this whole process using one query, it took some time but was simpler and is now easier and quicker to maintain. The simpler the code is the easier and quicker it is to maintain, and you have less work to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-organizing teams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not sure this applies to me as I work in a team of one. I do try and keep myself organised but not sure if that qualifies as self-organizing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regular adaptation to changing circumstance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Very similar to the second point about changing requirements but I think also includes changes required due to problems you encounter along the way. A simple example of this is when you encounter a problem, there are lots of different ways to solve it. If you can’t solve something in the database layer, then it might be solved with a script or in the user interface.&lt;/p&gt;
&lt;p&gt;So in summary I am not only a developer but very close to being an Agile developer as well, assuming these 12 points are what is needed to be ‘Agile’&lt;/p&gt;</description></item><item><title>Developer Personality Test</title><link>https://blog-dev.funkysi1701.com/posts/2015/developer-personality-test/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 02 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/developer-personality-test/</guid><category term="Developer">Developer</category><category term="Personaility">Personaility</category><category term="Myers-Briggs">Myers-Briggs</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/19etmksoopu2ojpg.jpg"/><description>&lt;p&gt;I was sent a &lt;a href="https://www.surveygizmo.com/s3/1883619/Developer-Personality-Test" target="_blank" rel="noopener noreferrer"&gt;link&lt;/a&gt;
to a developer personality test earlier. The test aims to give you a look at your developer personality similar to the famous Myers-Briggs personality test. A shorter version of this test can be found &lt;a href="https://www.surveygizmo.com/s3/1900187/Short-Developer-Personality-Test" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Myers-Briggs tells you if you are &lt;strong&gt;Introvert (I)&lt;/strong&gt; or &lt;strong&gt;Extrovert (E)&lt;/strong&gt;, &lt;strong&gt;Feeling (F)&lt;/strong&gt; or &lt;strong&gt;Thinking (T)&lt;/strong&gt;, &lt;strong&gt;Perception (P)&lt;/strong&gt; or &lt;strong&gt;Judging (J)&lt;/strong&gt; and &lt;strong&gt;Sensing (S)&lt;/strong&gt; or &lt;strong&gt;Intuition (N)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This test however tells you if you are:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independent vs Collaborative&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract vs Low-Level&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frontier vs Conservative&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generalist vs Specialist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Idealist vs Pragmatist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Developer personality test trait spectrum diagram" src="https://blog-dev.funkysi1701.com/images/2015/07/19etmksoopu2ojpg.jpg" loading="lazy"
width="1196" height="1280"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independent:&lt;/strong&gt;
You prefer to spend most of your time working in an isolated environment. You rarely want to collaborate because you have a better chance of solving problems on your own. If you do have to collaborate on the direction of a project, you dislike it when you have to defend your position or when others try to muddy your plans for the project. It’s better to have one strong vision for a project from the lead programmer on that project. Having a large team or allowing others to have significant control over the project risks communication errors, a muddied code base, and inefficiencies. If one developer has a firm grasp on the entire codebase, they’ll be much better at fixing and improving it quickly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collaborative:&lt;/strong&gt;
Good code doesn’t happen in a vacuum. You need a team to keep you energized and on your toes so that you’re constantly improving the project code using the entire team’s varied experience and strengths. You like to talk frequently with colleagues and discuss ideas so that you can learn from others and spark ideas. It doesn’t matter what their experience level is, you can always learn something by including everyone. A solo coder can’t possibly code a large software project with the speed and quality that a team can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract:&lt;/strong&gt;
You prefer to write in languages and frameworks that simplify development as much as possible and use as few characters and lines of code as possible. The trajectory of software development has always been toward making life easier and error-free. Programming has always been about adding more abstraction layers to simplify tasks, so why not trust the technology on your layer and don’t worry about handling the lower layers?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Low-Level:&lt;/strong&gt;
The more abstraction tools and high-level languages we build, the further we get from understanding and controlling the deeper components in our programs. This means lower performance and endless bug searches. Developers today need to have a stronger understanding of compilers, memory management, pointer arithmetic, and other low-level topics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frontiers:&lt;/strong&gt;
You like to work at the cutting edge. Using too many old languages and technologies bores you, and it severely hinders your software’s potential to keep outdated technologies in it for too long. Developers need keep their ears to the ground for new technologies and new versions of tools that they already use. Even if the community and maturity of the project isn’t at a level that most enterprises would consider “safe,” you’re willing to be an early adopter if you believe the community and the technology has momentum. Development technology is changing faster every day, and we need to constantly be adopting new tools and methods to keep up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conservative:&lt;/strong&gt;
It seems like every 10 years we forget all the problems we solved in the previous decade and start to build ‘new’ tools that solve the same problems, even though there is a perfectly good solution that has existed for years. Enterprises have it right when they make conservative decisions about their technology stack. Why would you hang your business on a technology with only a few years of maturity in just a handful of production use cases? Technologies like PHP, Java, and SQL have been mainstays of the development industry for years, and it takes a lot of time for new technologies to make it into that maturity tier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generalist:&lt;/strong&gt;
You like to be known as a “Jack of all Trades” and a reference for others on your team. You jump at every chance to enhance your skills in a wide variety technology topics, not just the ones that apply to your day to day work. You don’t always know when it might be useful to have these extra skills, but when the time comes, you are ready. If more developers took the time to learn other skills outside of the ones relevant to their project, they’d work more seamlessly with the rest of their organization because they’d have more empathy and understanding of the challenges that their colleagues face.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Specialist:&lt;/strong&gt;
If you’re a Jack of all Trades, you’re a master of none. Mastery in one or two areas is what makes you valuable. What’s the point of learning skills for other jobs you don’t have and can’t control? When you plan for a project or do technical research, it’s always focused on something you’re working on. You don’t get side-tracked. If you learn a new skill, it’s because the project requires that you do it. Most or all of your hobby projects are also building your mastery of the skills you use at your job.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Idealist:&lt;/strong&gt;
You believe in the power of well-defined processes. It’s crucial to an organization’s success that they create and follow appropriate and effective processes for building software. Trying to improvise or play it by ear invites the possibility of workflow errors that can decrease the quality of the software or even cause major product failures. Planning is also extremely important to you. You like to research all of the things you will need to know before starting a project. It’s important to find out the best architecture for your software beforehand, and then strictly implement that architecture with objective best practices. The more planning and scaffolding you do in the beginning, the less overall work you will have to do to complete the software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pragmatist:&lt;/strong&gt;
Speed is your best weapon in a competitive industry, and to quickly prototype and build new products, you need to have a flexible, pragmatic process. You don’t have a few months to plan your projects, you need to just start coding and a good path for the project will reveal itself. Great products are made through frequent feedback and releases, so why shouldn’t your plan be just as adaptable? Your plan should be adapted to changes in the software, and your expertise should be adapted to the project. You shouldn’t spend your precious time studying a problem that you’re not certain to run into while coding your projects. Trying to build test coverage for every possible scenario and having long meetings throughout the process are a waste of time and distract you from doing more productive work.&lt;/p&gt;
&lt;p&gt;I am not going to admit where I came in this test as being a newbie developer my answers are very subjective and I don’t believe I have enough experience to really say where I lie on many of these issues.&lt;/p&gt;
&lt;p&gt;I only have experience of working on my own and in very small teams, while I think working in a bigger team would have benefits I have no experience of this.&lt;/p&gt;</description></item></channel></rss>