Awesome. You used interfaces so you can abstract out the dependencies and swap services. Your database queries are all built with an ORM that is database agnostic. You don’t rely on anything special with your servers/cloud. You did it! You now have a project that retains the business logic while allowing all the technical aspects to be loosely coupled! But should you have done it?!
Whether you’re on the side that just landed the big deal - or you’re the business eager to get your project launched - you need to know what a statement of work is. Let’s talk about contracts and statements of work for developers.
Gathering requirements for a new project can get unwieldy and unorganized pretty easily. It’s easy to get lost or go down a deep rabbit hole. You may be getting excited about the new project’s technical challenges or be blindly following the client’s explanation and description. How do you know you’ve covered everything, though? What if you’re missing vital points?
If Google gives free access to their web traffic tool called Google Analytics, why would you need anything else? Why would you care? Let’s briefly talk about why privacy matters and what you can do instead.
One of the most painful things for programmers - whether you’re in a startup or an established business - is leaving code alone that you know could be better. That should be better. There are reasons for this - but what about when it comes to deleting code?
If you’re going to try to launch a startup that has a website or app as its main product, and you don’t have a technical co-founder, you should read this blog entry. It’ll save you a lot of time, headaches, and a ton of money.
As you walk down the alleyway, you feel the hairs on your neck stand up. You’re a bit scared, but you can’t exactly put your finger on why. Was that some footsteps? Did you see a shadow shift? Why is it that you know you’re in danger?
There’s a common joke among programmers: I’m so lazy that I made this script to automate these tasks. Efficiency and process are prized, but also sometimes mocked and ridiculed. So, are programmers actually lazy - or is there something deeper here - have they been mislabeling something else?
The title CTO is short for Chief Technology Officer. But what actual roles and responsibilities do they have? Every business is different, so there’s no hard and fast set of rules. However, there are some core responsibilities and philosophies that I believe every person with that title should have.
Never one to be afraid of pointing out my flaws, I think it’s time to share what I learned from doing a few interactive code review interviews. It may still be a great idea, but it’s much more difficult than I thought.
If you find yourself about to say “we’re a family” to a new recruit joining your dev team, this entry is for you. Managers, you should stop considering or calling your team a family. Here’s three simple reasons why.
I’ve seen a lot of high-performers enter slow-moving companies, make great progress, but then get upset. They can’t seem to move the company along anymore. What’s going on? Is it ok to move on? I’ve got a theory about all of this.
When interviewing a junior programmer a couple weeks ago, I was asked a very insightful question: “Who can I tell ‘I don’t know’ to?” At first, I wasn’t sure what they were exactly aiming at with the question. But, as I formulated an answer, I realized this was a great question. Let me share a longer version of the answer with you.
When talking to junior developers, I hear the same question over and over: “how can I demonstrate what I know, or show experience, if I haven’t had any gigs yet?” Old-timers tell you to build a portfolio, but how do you do that? Where do you get ideas? How do you choose a project that’s not overwhelming? Let me explain my rationale as well as demonstrate how I might make my first portfolio project.
This is part of a series of articles from the retired The Dev Manager website.
What happened to “why?” What happened to make people so afraid of asking this question? Perhaps it’s when all of the 3-year-olds start asking “why” about everything. Why does mommy have to go to work? Why do we need money? Why is the sky blue?
A full calendar, hours on the phone, work into the night and a never-ending deluge of emails: the typical Dev Manager’s life. Time is precious and scarce. It’s also very fluid. You’re jumping from thing to thing; meetings get pushed and calls are rushed. It’s not ideal, but it seems to be the only way you can get to all of the things that need your attention.
This is part of a series of articles from the retired The Dev Manager website. It was called The Dev Manager Crash Course. Looking for entry two? Click here
A colleague once said to me that I’m very lucky I haven’t had to fire as many people as he had. I definitely agree with the fact that my management tenure has not involved many terminations, but I don’t consider myself lucky. I put in work, just like you’re doing, to understand how to manage different types of developers.
This is part of a series of articles from the retired The Dev Manager website. It was called The Dev Manager Crash Course. Looking for entry two? Click here
When you manage a team, the conversations you have change a lot. No longer are you justifying your own estimates or explaining your coding decisions. Now, you’re responsible for many different estimates, many different decisions, and many different personalities.
This is the beginning of a series of articles from the retired The Dev Manager website. It was called The Dev Manager Crash Course.
Welcome to the New Dev Manager Crash Course! Whether this is your first time managing a group of developers, or you’ve run the gamut a few times, I’m happy you’re here. My goal is to give you some useful tips and direction from my experience managing multiple development teams. I learned a lot of this the hard way, but hopefully you won’t have to!
When you’re working on a project with a tight timeline, it can seem really attractive to buy pre-made software to save time. But, there are a number of problems and pitfalls to be aware of before you do this.
A question I’m asked often is “how do I pay back my mentor?” (If you’ve read other entries, you know I’m a big fan of mentoring.) Well, mentors have various reasons for doing their work, so not one solution fits all. But, I can tell you one thing that they’ll appreciate no matter what.
When it comes to Open Source Software, you have a number of choices to make for licensing your software. When you provide a license for your software, you, as the copyright holder, are giving various types of permissions and warranties for the use of this software. You might even define the way it can be used and if modifications have to be submitted back to you. But, what do you “license” software that is closed, paid or private software that you don’t want anyone else to use?
Before I begin a security audit, I try to make sure that the client owns their website. Normally, this is pretty easy and obvious. However, sometimes it takes a little bit more work. That’s why I had thought of launching the tool called Possessor.
I deal with a lot of start-up founders. One thing that I’ve noticed from a lot of them is that they feel like no one understands the struggles they’re going through. A lot have talked about being lonely or trying to find people to count on. Because of this, I had an idea - I wanted to help them with an online tool. I came up with the idea for StartUp Tribe.
I was calibrating my speakers the other day, so I searched and found a Bass Test YouTube video. Later on, I was thinking about the presentation I saw where some guys made a DJ system with Tone.js and I wondered if it made sense to make a bass test website and/or app.
One of the most rewarding things I’ve done as a programmer was watch a real life in person focus group use my application. At first, I didn’t enjoy it. But like most lessons, looking back, it was extremely valuable.
First, to start out, I need to make one thing abundantly clear: This piece is just a bunch of assumptions, generalizations and feelings. I’ve gathered these together after all of my own experiences. That’s why I add the most important auxiliary verb may.
In an earlier entry I detailed how I track things I do each day using an Alfred workflow. Basically, I wanted to track what I did from the Alfred launcher screen, one thing at a time. The end result was a txt file dated today.
Feedback from your boss or superior is incredibly important. How do you know if you’re getting all of the feedback they have for you, thought? Sometimes people are distracted - sometimes they don’t know if they’re pummeling you with too much information.
I kind of hate that phrase, that buzzword-worthy label “corporate gig,” but I don’t know what else to call it. Office job? Large company employment? Anyway, I thought I’d take a bit to reflect on my last one and share a few things I learned.
Having many meetings, one after another, is not only tiring, it’s a recipe for memory disaster. You don’t have enough time between meetings to finish notes, gather your thoughts or even use the bathroom. Because of this, I’ve started doing something different:
Motivation is a very hard thing to master. When used properly, you can get great things and enormous productivity. When misunderstood, a whole host of things appear to go wrong. Getting into all of the motivations of an employee or developer would take a book, one that I’m not ready to write yet! But, I wanted to focus on just one, money. And, in that motivation, only three types of the many ways and mixes that people can be motivated by money.
I’m a huge fan of Alfred - but I had to upgrade to get the pro version to get workflows. Because I use Slack a lot, I’ve been trying to set up status automation and workflows. When using my phone, I have an automated system that sets my status. You can find that here. But, what about using Alfred for some automation?
Interactive coding challenges during an interview are common place these days. The idea is that you’ll get an idea of the type and quality of work a candidate will produce by watching them code during an interview.
As a manager, I spend a lot of time delegating. I delegate small tasks so that I can spend more time adding value to the process and project. The value I bring is my ability to see the larger picture, use my experience as a guide, things like that. If I’m doing too many little things, I can’t do what I’m good at.
I experiment a lot with thoughts and process. I used to be scared of implementing something new because I felt like I was now married to that. Or, if it becomes habit, maybe I won’t want to stop it, even if it’s annoying (how irrational does that sound? But if you’re honest with yourself, you’ll see that happen a lot. If you ever hear “that’s just how we do it” then you’re experiencing it.)
Sometimes an employee becomes an ex-employee because they did a poor job. Their quality or output was just not up to par. Otherwise, they backstab, do fiendish things, basically try to screw you. Either way, you can get pretty strong feelings about this ex-employee. Pretty bad feelings.
I’ve been to conferences where I’ve shelled out my hard-earned money to attend, been to free local meetups, and all kinds of presentations in between. One thing that I’ve heard more than once, though, is a variation of this:
You’ve heard the phrase “The customer is always right” before. I think you’ll find an equal amount of articles online saying that that sentiment is still and always true vs the fact that the customer doesn’t know what’s best for them and they’re not right. (You’ll even hear stories about how some “great” companies like Apple ignore the customer desire and that’s how they became successful.) But they’re not really digging further into the customer relationship.
You’ve heard the saying before: “Fake it till you make it.” I agree with this philosophy - especially when it comes to getting a great programming job. But, I think the way you ‘fake’ it is important. It’s important to fake it ethically. Let’s discuss.
The other day, an acquaintance of mine was complaining about never getting ahead in their career. I didn’t really feel like I knew enough about their area of expertise to give any advice - until I heard what they did when they got home. During our conversation, they described their favorite TV shows, how involved they were with the outcomes; basically once they got home, 4 to 5 hours were spent on the couch watching TV.
Answer this question real quick: What was the most impressive thing you did 2 years ago at work? Did you get the proper accolades for it? Or, possibly more important, did you get a performance-based wage increase or some other reward?
I’ve been in the position to hire a lot of programmers over the last few years. This is a great responsibility; one that doesn’t come without a bunch of unique situations, especially when it deals with colleagues and friends.
For our agile workflow, it’s important to provide a check-in each day. What did you do yesterday, what do you plan on doing today, do you have any blockers? My biggest challenge is actually remembering what I did “yesterday” - especially after the weekend.
I’m very lucky to receive multiple LinkedIn requests to connect each week. I rarely accept them, unless I happen to recognize or know the person. Also, if they have a compelling message and I think they might follow up, then fine, too. But that’s where it usually ends…
Today I was faced with an interesting quandary about whether I should write the code to exploit an application vulnerability in our software at work. This vulnerability is not necessarily a “security” one, but more-so a known-risk: it was theorized that someone with enough knowledge could bypass a mechanism in our software.
From a very young age, we’re told to brush our teeth regularly. We know we should, but it can be a struggle. The reasons to invest our important play-time aren’t always compelling. (If they were, why would some parents have to check to make sure the children had brushed their teeth before bed?)
Are all American CEO’s psychopaths? It is a very interesting question - one that I tackled in 2012 when I was finishing my capstone at Cardinal Stritch University.
Considering I write a lot about business in this blog - and a few years has passed now since I used this paper for credit - I thought I’d “open source” it for those who might have an extra few minutes in their day! Hah!
I find it very difficult to find out information about my local elected officials. Even the federal website for congress mentions that there is no central database of email addresses and contact information for their members - which is just crazy to me.
In the last decade or two, the US proliferation of low quality reality television shows has been unstoppable. “Big Brother” would be ashamed by some of his siblings. There are shows that follow famous people (although, I’m not entirely certain why some of them are famous), shows that involve the audience, shows that support nerds; basically anything you can imagine! I pretend I’m above this, I surely don’t fall into the category of people who sit at home and pine over “The Bachelor.” I normally flip the channel right past these shows.
I’ve given a number of talks in the last few years. Each time I go to a new place, I have to bring this giant bag of equipment and three or four versions of my presentation. All too often, conferences don’t detail enough of the specifics for their presenters. Let me tell you, presenting and traveling can be stressful. So, to help reduce stress and anxiety, there are a few things you can share with your presenters ahead of time.
I’ve had a lot of people come to me for various mentoring opportunities. They’ll ask for help, follow up once or twice, and then just disappear. I’m left wondering: Did I make a measurable impact on their lives?
I’ve read the articles and studies about workers creating their own work spaces and I think it’s a great idea. (In fact, the company should too - it increases efficiency by 32%!) But, I never really realized how important it was until recently.
Estimates can be one of the hardest things to create as a developer. The word estimate is a misnomer in our industry. It’s almost as if they should be called “agreements” or “promises” according to some bosses. Yet we all know that they are just that: an estimate of the amount of time, not a guarantee.
I did a bit of looking for websites that will service a Bible verse of the day via email, and I did not like what I found. First, I felt that a lot of them were very confusing to use. It wasn’t immediately clear what you were there to do. I didn’t know where to put my email address, etc. Finally, after reviewing a lot of the copy right information with bibles, I wonder if they weren’t breaking the copyrights for a lot of the bibles they offered.
I’ve been a manager before. I’ve lead teams before. However, it’s important to understand the difference between the title of ‘manager’ and someone who actually manages. This time around, I’ve been putting much more effort into managing, not just being the figure head. And, I’m learning things. I think these things not only apply to technology related teams, but teams in general.
A few days (ok, a bunch of days) ago, someone asked me on twitter what I look for when I do a code review. Pretty certain I was tweeting that I was either… a) doing a code review or b) annoyed at doing a code review. heh. I thought for a bit, and I think I’ve distilled the list of things I look for. Now, mind you, I don’t set out with my checkbox list or a manual, I just look at the code and “feel” it. Yes, that sounds crazy. I understand. But, subconsciously, I think I’m doing the following things when I do code reviews:
I remember a scene from A night at the roxbury where the less-than-slick brothers take some girls back to their room and have a problem closing the deal. One of them keeps saying pickup lines while he has the girl sitting on his bed. She basically says OK - we’re past this. He just can’t seem to close the deal - no matter how much she wants him to.
Idea: TrackThings.com. This website is made to track sales people and distribution of promotional materials. It was initially thought of as a way to track on-the-ground sales distribution. For example, if you had someone go to three businesses on one street, they could easily track where they went, and mark the interest for followup.
I’ve heard the argument so many times: “I’m just too busy to do my own website” This usually is followed by pleading statements leading to the fact that no one is paying them to do their own website - like their current workload is paying them.
There are two types of resumes out there: employed resumes vs unemployed resumes. Or that is to say bragging resumes vs qualifications resumes. There is a time and place for both… and mixing them up may not be in your best interest.
Goal: to create a bachelor cookbook and sell it to other bachelors online. The price of the cookbook was to be very cheap so that it wasn’t too much of a risk. The book itself was supposed to be picture rich and very verbose. It showed how to accomplish tasks that other books assumed a person knew.
I came up with a great topic to write this blog entry about: filters and validators. Then, I got to thinking - maybe I can get more feedback from other programmers I know. I decided to send a note out to a few of my buddies and see what they thought as well.
The goal was to use links that Amazon provided themselves to showcase categories and percentage discounts with my affiliate tag. The thought was a clean interface would easily encourage people to click a discount of say 90% but send affiliate contributions my way.
What is the measurement of a good career? Promotion? Raises? Running a project / leading a team? Usually all of this. However, the most traditional measurement of success in a career is moving upward. Time to run a department, time to lead a team, etc. However, I submit a very radical idea: Sometimes just be great, don’t lead.
Raise your hand if you’ve ever been told how to do your job… Yep. It’s happened more than once - and I’m sure you already had a flash of red and maybe some warmth come to your face even hearing that phrase. In my current position, I run into scenarios where people seem to think they have the best solution for the problem. And, you know, they may be right, but it’s not their job. This is generally a problem that either technically minded stake holders or completely ill-informed users have. Let’s dig deeper, however.
One thing I’ve learned about the entrepreneurial spirit is that it leads to failure. With figures as high as 90% of businesses fail, this is something you have to get used to. Even leaders like Robert Kiyosaki mention that knowledge is what makes money - and that knowledge is gained by failure. You’ve heard the sayings before, learn from your failures…
As you may remember, I wrote a piece about why I do not sign any NDAs here. I’ve had some time to reflect on that entry, and I want to move forward. I want to give any client I work with my new “promise” - the Non Disclosure Promise. Let me tell you a bit more why I choose not to sign NDAs, and what I can offer you instead.
From time to time, I get approached with a new project from an excited business person. They are just bursting to tell me all about it, to see if I can help them out (or even make it for them), and looking for some clarification on their next steps. This inevitably is hindered by my reluctance to answer their first email. You know that email. The one that includes the attached Non Disclosure Agreement.
I’ve been to far more meetings than any one on earth should ever have had to by the time they’re 25. With that experience, however, I can start to pick out key points of running a great meeting or demonstration. I know this is a different type of post for this blog, but I think its important. There may be times that you’re called on to conduct a meeting or demonstration, as a technical resource. Follow these tips and your meeting will go along smooth, efficiently and successfully.
Whether you’re looking at web hosting advertisements or speaking with an internet firm, you’re going to run into various acronyms. If you’re not familiar with the industry, this can get confusing. Let’s check out the main ones to see what they really mean to you.
In the same way that not everyone drives a Honda, we find that we have different web browsers. For the beginner to the Internet, this might come as a surprise. Normally, they are only used to the default browser on their computer. For example, Windows users are familiar with Internet Explorer. Mac users might be familiar with Safari.