Monday, September 28, 2015

Getting a Grip on Your Development Skill Path

As developers, particularly if you are a specialist, we realize the need to have an open mind to change in development technologies.  We are always getting older and more experienced in application development, design and processes, but we wonder "Am I on the right path?".  We also know that nothing stays the same, with change being the only thing that is constant.

As developers we can be resistant to change, mostly because of the extra effort it will take us to learn something new.  Also, as we do get older and hopefully wiser, we know that change needs to occur, but needs a helping hand to guide it through the rough spots.

What is Your Current Skill Set
Review your resume because it is the foundation you will be building on. If your resume doesn't portray your current skill set then I would update it now. 
Development Process Knowledge
From this review define your current strengths and weaknesses in terms of development process: 
  1. Planning
  2. Designing
  3. Building
  4. Testing
  5. Support
  6. Resource Management 
  7. Communication
  8. Mentoring/Training
  9. Research
As an example, our primary focus may have been on design, testing and support.  Maybe our issue is that don't plan very well and usually don't hit our deadlines.
Technologies, Processes and Tools  
Also look at your specific strengths and weakness in terms of technologies, development process and tools.
  1. Languages and Integrated Development Environments
  2. Project and Task Management
  3. Build Tools
  4. Unit testing to functional testing
  5. Issue Management
  6. Development Process
  7. Architecture and Design Patterns
Management vs Technical vs Architect
Getting a Grip will also mean that you decide the Path for honing your skills.  Is it for being or becoming a Development Manager,  Senior Developer, Systems Architect.

Management of Developers
  1. People - You should have good people skills to help your developers achieve their goals and to be able to work with developers in need of discipline or a lot of help in achieving what you need them too.  You will also need to ability to work with your own manager to help your people.  By setting proper expectations and getting the tools and environments they need.
  2. Resources - Know your resources, people and tool abilities, so that you can best assign resources to projects.  Having a broad understanding of all skill sets of resources at your disposal would be a good start. Also knowing which resources are better at new technologies and which resources are better in a support role. This knowledge of your resources should be communicated up as well.  You may need to fill in some gaps.
  3. Research - be able to help your people with there Skill Path by doing research and understanding the current development industry trends.  This will help in deciding on technology direction and resource training for the future.
  4. Planning - Be good at managing tasks and keeping your team on tasks.  

Senior Developer and Technical Expert
  1. Specialization - based on your strengths and research of trends you can choose an area of specialization.  In this day in age we need to specialize in our technical fields in order to become an expert.  There is just so much to know about a particular technology and takes a lot of training to become the expert in that technology.
  2. Certifications - If you are choosing a new technology or trend as your path because it is exiting to you and it looks like an appropriate choice, then you should look into certifications.  This will help you to know what your technology can do.  Research what certifications are available for your particular path.
  3. Current Position - Also, when making a decision on your path, look at how your current position is in the path you have chosen.  If it is way off you have two choices.  One, you can speak to your manager about the possibility of focusing on that technology or trend in the future.  Or two, you can do the training in hopes of it becoming a need down the road.  Try to choose a path that will enhance your current position as much as possible.  The grass is not always greener on the other side.
  4. Look for a Mentor - Try to find someone who is an expert already that would be willing to be a mentor to you.  You can look where you work, in your community (find a users group), or an online community.  Mentors are important, because they will have some of the real world experience and will be able to help in you in "Getting a Grip Your Development Skill Path". 
    Application Architect
    1. Technical Expertise - If you are an architect or plan to become one you will probably be coming from a Senior Developer Position.  If not, you should have the abilities of one, see above.  
    2. Generalist - Besides those, you should also be generalist in most of the n-tier technologies, so for the Front-: windows and web development, to web services (SOAP) and database back ends like SQL Server or MySQL.
    3. Architecture Training and Certifications 
    4. Researcher

        As we pull together our strengths and weaknesses it will help us to know our research direction.  You may want to do research on basic development trends or you may want to research more on the categories above so that it can be more specific to your needs.


        Some Research Done on Technologies & Trends 2011:
        Links from research:
        7 Exiting Web Development Trends for 2011 - By Siddharth - 01/07/2011
        Microsoft Embracing Open Source Drupal 7 CM System - By Kurt Mackie -01/24/2011

        SQL Script to Disable or Delete all SQL Agent Jobs that are active

        In order to execute the extended stored procedure (XP) to see all SQL Agent and their status, you must have permissions to Execute Agent XPs

        use master
        sp_configure 'show advanced options', 1;
        sp_configure 'Agent XPs', 1;

        Here is the script to create each line for execution:

        declare @sql nvarchar(max) 
        DECLARE @isDelete AS BIT
        DECLARE @job_owner AS sysname
        DECLARE @xp_results TABLE (job_id                UNIQUEIDENTIFIER NOT NULL,
                                    last_run_date         INT              NOT NULL,
                                    last_run_time         INT              NOT NULL,
                                    next_run_date         INT              NOT NULL,
                                    next_run_time         INT              NOT NULL,
                                    next_run_schedule_id  INT              NOT NULL,
                                    requested_to_run      INT              NOT NULL, -- BOOL
                                    request_source        INT              NOT NULL,
                                    request_source_id     sysname          COLLATE database_default NULL,
                                    running               INT              NOT NULL, -- BOOL
                                    current_step          INT              NOT NULL,
                                    current_retry_attempt INT              NOT NULL,
                                    job_state             INT              NOT NULL)

        SET @job_owner = SUSER_SNAME()
        set @sql = ''
        /* If @isDelete is set to 1, it will create a script to delete all jobs that are disabled. */
        SET @isDelete = 0

        /* 1. Get list of Jobs and state*/
        INSERT INTO @xp_results
        EXECUTE master.dbo.xp_sqlagent_enum_jobs @can_see_all_running_jobs=1,  @job_owner = @job_owner

        SELECT * FROM [@xp_results]

        /* 2. Disable all jobs, only need to disable those that are running */
        @sql = @sql + N'exec msdb.dbo.sp_update_job @job_name = ''' + name + N''', @enabled = 0;
        ' from msdb.dbo.sysjobs sj JOIN @xp_results r ON sj.job_id = r.job_id
        where enabled = 1
        order by name

        print @sql
        exec (@sql)

        /* 3. Stop all running jobs */
        /*Stop Job*/

        PRINT 'Stoping Jobs...'
        SET @sql = ''

        @sql = @sql + N'exec msdb.dbo.sp_stop_job @job_name = ''' + name + N''';
        ' from msdb.dbo.sysjobs sj JOIN @xp_results r ON sj.job_id = r.job_id
        where enabled = 0 AND r.job_state = 1
        order by name

        print @sql
        exec (@sql)

        /*Delete Job*/
        IF @isDelete = 1
        @sql = @sql + N'exec msdb.dbo.sp_delete_job @job_name = ''' + name + N''';
        ' from msdb.dbo.sysjobs
        where enabled = 0
        order by name

        print @sql
        exec (@sql)

        Once Complete Select and copy all rows.
        Paste into new script window and execute.   Be aware that executing the delete will delete all disabled jobs.

        Tuesday, September 15, 2015

        Notepad++ HL7 User Defined Language

        This is a syntax highlighting plugin for HL7 in Notepad++

        To enable

        • In Notepad++, pick the User Defined Dialog... item from the Language menu.
        • Click on the import button and simply select the XML file located in our ZIP file
        • That's it, all your files with the .hl7 extension should now be highlighted


        Thursday, September 10, 2015

        Rename Files in Windows Sub-Directories

        Windows command prompt: (If inside a batch file, change %x to %%x)
        for /r %x in (*.html) do ren "%x" *.htm
        This also works for renaming the middle of the files
        for /r %x in (website*.html) do ren "%x" site*.htm