Agile.

I have spent a lot of time trying to figure out what ‘Agile’ is. Back in the early/mid 2000s, after the tech bubble and before the great recession of 2008, there was a brief period of optimism and solidarity in software engineering. We learned a lot from the booming late 90s and from the bubble bursting in 2001. Aside from the economic turmoil there was also turmoil in the personal lives of engineers and developers.  120 hour work weeks, sleeping in the office, breakups, divorces. It was a lot like the gold rush out west in the 1800s, but instead of a material commodity it was information and access/sharing of that information that began really generating revenue and movement.  Along with individuals going gangbusters to get a piece of the information/technology pie, large companies became more excited or greedy about getting a piece of the pie or even a bigger piece of the pie. This lead to many companies rushing plans together that were not the most well thought out and squeezing every drop of production out of their employees.  California, being one of the first to go through a cycle like this, implemented their overtime law. This basically says that even if an employee is on salary, if they work over 40 hours they’re entitled to 1.5 X their pay per hour.  This was implemented because companies were hiring their employees and paying them a ‘good’ salary but then pushing them to work 3X as many hours and thus resulting in a pay cut in reality.

We Respond And Change

After living through and seeing all this happen through the 60s, 70s, 80s and then the 90s, a group of experience people got together and started….’Agile‘!  This is Agile…right here…on the next line…that’s it…read it and pay attention!

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

You may have read that and thought ‘where does that mention sprints?’, or ‘they didn’t mention the burn down chart!’…etc…etc.  That’s because those things have nothing to do with Agile at all.

I often hear people compare Agile with the Waterfall Model and that really doesn’t make a lot of sense. Agile is a philosophy and the Waterfall Model is a development cycle model. While in college, in my last year, I chatted with a professor about this difference and why I thought it was significant because there was a final version of the Waterfall Model that I thought would work pretty well.  In theory Royce’s Waterfall Model  could even be executed in an Agile environment. The Agile Manifesto is a set of values to be applied when working with humans and in realizing this I think those values are far more powerful than any development cycle or methodology that will ever exist.

We Practice

Try making the Agile Manifesto the first thing you read in the morning before you start working for 1 week.

Individuals and interactions over processes and tools

The next time you hear someone complaining about a process or tool ask them how they would fix it or update the tool.

Working software over comprehensive documentation

When people ask for documentation, make sure that there’s something out there to document.

Customer collaboration over contract negotiation

Work with your client/customer/boss/coworker to figure out what it really is we’re trying to accomplish instead of blindly doing something and then falling back on your contract/agreement when your product misses the mark.  Building better software/products means we have to own a project if we’re participating in it.

Responding to change over following a plan

If something isn’t working…stop…turn…go. None of us live long enough to waste time follow a plan we’ve proven doesn’t work.

Conclusion

Remembering that Agile is actually a set of values and not a methodology could really open up our eyes to improving our methodologies over time. We have been clinging to ‘Agile Methodologies’ too tightly and with that we have ignored one of the Agile principles, “Responding to change over following a plan”.  Let’s keep responding to change and valuing people and interactions over processes and tools to move forward in creating better software for people that can bring us to a better future as humans.

TL;DR;

Um, it’s not that long…just go back and read it 🙂

Agile.

What are Senior Developer/Engineer Skill sets?

Previously we discussed the skill sets the “Web Developer” title.  Logically the next step would be “Senior Web Developer”.

Disclaimer: What I’m about to go into may not reflect your skill sets or knowledge  even if you have a “Senior Web Developer” title and conversely, you may possess all of these skills and have a “Web Developer” title. The reason I’m writing about this is because I’m aware of inconsistencies in the industry and I think we should all work to get on the same page. I’m not advocating that people get promoted or demoted based on these definitions. There are other factors that go into getting promoted which aren’t based specifically on skill sets.

senior |ˈsēnyər|

adjective

1 of a more advanced age: he is 20 years senior to Leonard.

US of or for students in the final year of college or high school.

• relating to or denoting competitors of above a certain age or of the highest status in a particular sport.

Being “Senior” is not exempt from relativity but I do think there are a few fundamental elements that make adding “Senior” to someone’s title a good idea.

TEAM AWARENESS

There are probably many other terms for this, but here’s what I mean.  As a Senior Web Developer you should be aware that you work on a team. Sounds more simple than it really is. You should be aware that learning how to work with your team takes time and a lot of attention. Everyone is different, everyone comes from different backgrounds and responds differently to all forms of communication. I think anyone with ‘Senior’ or ‘Manager’ in their title needs to pay close attention to the people they work with and remember the most effective ways to communicate with each one.

Acknowledging that everyone is human and has strings of good days and strings of bad days, so you have to be patient. Each person has a context.

That said, you should also be able to distinguish between an employee having a bad few days and a bad employee. Leadership needs help identifying these people and accurately evaluating them and that is something a ‘Senior XYZ’ should be able to do.

THE RIGHT WAY?

Not only knowing the difference between doing something the right way and the less right way, but also when to do it the right way and when to do it the less right way.  There are trade offs in development all the time. As much as we would like to do everything the “right way” all the time, it isn’t always possible when working with a team to get something launched.

I AM WRONG

Experienced people should be humble. They know where they came from and what it took to get to where they are now. They will have been wrong more times than one can count. They should be the first to admit it once they notice they’re wrong and also accept responsibility. Being wrong happens all the time, it’s how people learn in cutting edge fields, we’re pioneers a lot of the time and you’re bound to make mistakes when few people have traveled down the same path.

TECHNOLOGY

So I think this is important but not as important as the things above.  As a ‘Senior Web Developer’ you should know what’s currently going on in web development. That sounds like a given, but I’ve interviewed a lot of people that have enough time in the industry to be ‘Senior Web Developers’ but couldn’t answer simple questions about what’s current in the field. You should also be able to take a good guess at what’s a passing fad and solid technology that’s here to stay. This is very important when you’re picking technologies for new or current projects.

I would also assume that you have some deeper knowledge in how web technology works and what the web is built on. Networking, DNS, Sessions, Deployment strategies, testing are just a few areas I would expect a ‘Senior Web Developer’ to be comfortable talking about.

 CONCLUSION

Looking at senior job listings, the big difference I see in them versus non-senior is the amount of desired experience at the bottom. Non-senior positions usually ask for 1-2 years of experience and senior positions ask for 5+ years of experience. I think this is simply because they don’t know what they should be looking for. Having Senior in our title implies more than just knowing some technology and having worked in the industry for more than 5 years. It’s about people and adding value to the company not just through your self but through your team as well.

What are Senior Developer/Engineer Skill sets?

What are Developer/Engineer skill sets?

This is the beginning of a multipart series of posts. While I know this won’t be perfect and people will probably have disagreements, I actually hope we can talk about it a little bit and maybe come to some standardization and unification.

Job definitions are hard, because in most cases working in the technology field, you will end up doing a lot of different things.

Today I want to investigate the title of “Web Developer“.

We have all probably heard of this title before and at first glance most will know what the person that holds that title does on a day to day basis. Or do we…

Let’s start out with what we probably agree on.

A “Web Developer” should be familiar with the core building blocks of websites and the best practices of implementing them.

  • HTML
  • CSS
  • Javascript

Keep in mind that there are many tools and ‘technologies’ built on these core languages and platforms. Things like jQuery, AngularJS, LESS, SASS, Bootstrap and so many more.

HTML

HTML’s responsibility is to define content and structure it in an organized way. You’ll here the term ‘semantic’ used with HTML/markup a lot.

‘semantic’ means “the study of meaning”.

Semantic HTML is subjective in some cases but there is a lot of content written in HTML everyday and there are many best practices for semantic markup.

Tim Berners Lee, and Paul Irish are big influences that come to mind.

CSS

CSS’s stands for “Cascading Style Sheets”. “Cascading” refers to the rules of how styling is applied to HTML and is really the power behind CSS. There are many thoughts behind CSS and how it should be applied and organized. So much so that there are transpilers that enforce or provide simpler access to more complex CSS features.

SASS is my personal preference right now. With CSS it’s important to know about the box model and default browser values for padding and margin to be able to create a consistent experience across multiple platforms. CSS is also where a lot of the “Responsive Design” decisions and management happen.

Eric Meyer is a huge influence on CSS and has contributed a lot of great best practices and design patterns.

Javascript

Javasript is the core of dynamic websites. Javascript is used for everything from countdown timers to handling complex data manipulation, games and analytics.  Javascript is downloaded by the browser just like images or any other content on your website. Then the browser runs that code inside its own environment.

Javascript is very powerful and also very complex. There are many libraries out there and many thoughts on best practices with javascript. It’s hard to find the right answer for the best way to do something, but a good way to tell is if the javascript is easy to read and understand what it’s doing then it’s probably a good sign.

Douglas Crockford and Addy Osmani have been really influential in the Javascript community.

 

Next Time…

I plan on this being at least a 1 of 4 part blog post. Next I’ll be covering the “Senior Web Developer” title, followed by “Software Engineer” and “Senior Software Engineer”.

Please feel free to discus and let me know what you think a “Web Developer” does! 🙂

What are Developer/Engineer skill sets?

Risk: Entrepreneur

If you listen to or read material about startups and entrepreneurialism, then you’ve probably heard over and over that you have to take risk! Be a risk taker! Risk! Live out of your car! Max out all of your credit cards! So let’s look at that a little bit shall we.

What is risk?

a situation involving exposure to danger.

What is “Risk Tolerance”

The degree of variability in investment returns that an individual is willing to withstand. Risk tolerance is an important component in investing. An individual should have a realistic understanding of his or her ability and willingness to stomach large swings in the value of his or her investments. Investors who take on too much risk may panic and sell at the wrong time.

That definition of “Risk Tolerance” comes from Investopedia. I think that’s somewhat relevant in the case of entrepreneurialism because most of what we try to figure out deals with money at some point or another.

So Investopedia also has this article about determining your risk tolerance. One of the most important takeaways I think here that a lot of people miss from most of the startup material that’s put out there, is that not everyone has the same risk tolerance.

Right now, I have low risk tolerance. It’s important to me to have security. I want to know that I can make my house payment, fix my car when it breaks, pay my phone bill and don’t forget internet!  There are all kinds of risks that people may not be willing to take for various reasons. There may be consequences to taking on less risk, probably something to do with the rate of growth that you can obtain for your ideas.  I think a lot of the time a person will be ok making that trade off.  It doesn’t mean that you can’t increase your risk tolerance later on too.

When you’re reading those articles or listening to speakers or podcasts that keep saying that you need to take more risk, they might have a different objective or end goal than you do. We can’t all make $1billion dollar businesses! If you do want too that’s great and don’t stop until you make it! If you want to create a $100,000 business the same is true! Don’t stop until you make it! But you have the power to decide how much risk you’re willing to take on.

Another thing that I have started to notice is that these people that yell from the mountain tops to take huge risks, also seem to have a different definition of risk.

Richard Branson points this out nicely in a blog post entitled “The Art of Calculated Risk

Always protect the downside. I think it should be a guideline for every entrepreneur — or anyone involved in business ventures. – Richard Branson

In the end the kind of risk and the amount of it that you take on is up to you. Your risk tolerance can change over time. If you have an idea that you’re passionate about don’t think that in order to see it through you would have lose your house or ruin your credit score to test it out. Go out there and do stuff!

Risk: Entrepreneur

Momentum Injections

Carrying momentum is difficult. I say this as I have not been successful in even beginning to create momentum in writing blog posts!  I’ve written for a blog religiously in the past and looking back, it took quite a lot of energy to pull that off.  At the time I was writing the most, I was excited, it was new to me and I was learning something every day. As time went on it became a chore to try and think of content to get out that day. I would be so happy when some random news broke that I could write about so I didn’t have to think up something of my own.

While I did learn a lot during that time, I don’t think I produced the best content I was capable of at the time.  I lost my momentum after I learned all I needed to about the tools I was using and it wasn’t shiny anymore.  I held off starting to write again unless I felt like I could do it better this time!  Even though I haven’t been writing, I’ve been doing a lot of the same things since I blogged last. In hindsight, I should have been able to write about what I’ve learned all the time over the last three years.

Lately I have been trying to increase my momentum in everything I set out to accomplish. Maybe a lot of you have asked yourselves, “Why can’t I finish anything I start?” or told yourselves, “I just don’t know how to get excited about this anymore”.  I did that…I did that a lot. I was extremely frustrated. I had a 100 ideas and not enough momentum to see them through. I decided to start doing something about it. Hopefully some of what I’ve learned might help you to create the next Facebook or Google! Here we go!

#1 Surround yourself with like minded people

“I’ve heard this before dude…” you might be saying. Sometimes this is hardest thing to do but I think it’s one of the most valuable momentum generators.  When I’m around people that are excited about their ideas, I get excited about my ideas and theirs! They get excited about your ideas to!  You can find meetups near by that could connect you with great people that have similar interests and could even mutually help work on projects.

Take the long shots! Try and reach out to those people that you might not think would respond. Heck, tweet at @RichardBranson or @ElonMusk for practice.

#2 Inject yourself daily with momentum

Find some material/content to read or listen to every day.

#3 Stay rooted

Don’t forget where you came from. I don’t mean Owosso(never heard of it?)!  Keep participating and practicing your passions. If it’s writing “silly node modules” (Thanks @StephenPlusPlus), writing music, writing fiction or making inventions in the garage, just make sure that you stay grounded and keep your passions alive.  Like anything, if you don’t use it, you lose it.  Besides, isn’t it one of those passions that made you begin to want to expand that interest and turn it into something bigger in the first place?

#4 Just Do It

Ultimately you need to just step out and start trying things, learning from them, failing, trying again, failing and then trying some more.  Be a sponge and don’t be afraid to approach those that have gone before us. Surround yourself with people and content that lead you in the direction that you want to go.

Feel free to email me (thomas.schultz@pointlessrants.com) about what you’re working on! I’d love to hear about it!

Momentum Injections

Mental Priming and Failure

Writing again!

It’s been so incredibly long since I’ve written a blog post. Probably about  2 and a half years in fact.  I’ve been listening to a lot of podcasts lately about startups and entrepreneurialism and so many of the successful people that get interviewed say that they blog quite often.  Thinking back to when I wrote fairly consistently, those times were when I felt the most engaged with whatever it was that I was doing. Even outside of the blog and other projects I was working on, I felt engaged.

I think there might be some kind of discipline that’s developed in writing blog posts.  Sometimes, a blog post helps you asses a situation or an event that happened. Similarly, perhaps, to writing a personal journal. So it’s good to fire up the blog again!

So that said, the title of this post….what am I talking about?

The Setup

I’ve been reading this book “Thinking Fast and Slow” by Daniel Kahneman, it’s pretty heavy on the psychology speak, he spends a lot of time talking about studies that have been done and papers that have been published. But even with all the psychobable goes on in the book, he’s able to make it really easy to understand and super easy to read in my opinion.

There’s a concept called “Mental Priming” in chapter 4 that basically says that if you’re thinking about something forced to think something then that can have other mental and even physical affects as an outcome of being exposed to those thoughts. This might seem like a “duh” moment to some people reading this but here’s where it got interesting for me.

Kahneman talks about an experiment where college students were given 5 words and then told to make a 4 word sentence out of the given words. In one case they used words that we associate with the elderly, like “Florida”, “Grey”, “Wrinkles” etc..

The next part of the experiment was to have the students walk down the hallway to another room where they were told would be another task. The sneaky part was that they were timing how long it took the students to walk from one room to the other after mentally working on a problem involving words associated with the elderly. They found that the students walked slower down the hall after working with the words associated with the elderly than with words associated with speed or something else that may have a normal physical pace.

Conclusion and TL;DR;

For me this was an eye opener, I don’t think we realize how sensitive our minds are to our environment. We can also train our minds and it might physically affect our environment and our day to day interactions.  I made a new years resolution to stop saying “I feel old” and “I’m tired” all the time in order to train myself to stay positive. Mentally priming yourself with a negative outlook could have much more far reaching effects on your life and relationships than you realize consciously and unconsciously.

I hope this helped broaden your frame of mind on how our thoughts change our actions. I highly recommend this book! Each chapter has made me excited and helped me understand how our minds work. I would almost say that you can figure out a lot of lifehacks in paying attention to what Kahneman has to say.

Mental Priming and Failure