Web Development · Software development

What are some educational resources that will help me better communicate with software developers?

Peter Czepiga Graduating senior at NYU

May 3rd, 2016

As a "non-technical" founder, I am trying to learn as much as I can about web development and coding so that I know exactly what to look for in my own projects. Where can I learn more about the basics of software development? I just want to be able to hold an intelligent conversation when talking with developers, outsourcing and reviewing code, etc.

Sam McAfee Building Popup Incubators for Corporate Innovation Programs

May 3rd, 2016

Not to be discouraging, but it's a steep climb. Software gets compared to everything (construction, architecture, music, manufacturing, team sports, writing, law) and yet it really isn't like any of those things. The best thing to do would be for you to do a small project with a friend and actually build something. Get a buddy who can code, and make a website together. Get a feel for the realities of writing, debugging, and shipping some code. You can do something very small, and get a real visceral feeling for it. I would be happy to do this with you, if you want. I'd wanted to write a piece on this topic at some point, as well, so maybe now is the time?

Eric Lentz Business Improvement Through Software Application Development

May 3rd, 2016

Good luck! That is probably not too far off from saying that you'd just like to hold an intelligent conversation with a doctor. The field is huge and varied and there's so much to it. It can be tough to find, but look for software developers, or a company of such, where the person you deal with speaks your language. There tends to be a lot more of those these days than in the past.

Nevertheless, should you desire to go down the rabbit hole, then you'd do well to watch some videos on pluralsight.com. I have found the material to be excellent and easy to consume.

Malcolm Mead CEO of ColoCenters, Inc. - Data Center Provider, and The Mead Group, Inc. - Enterprise Solutions Architect

May 3rd, 2016

The "easy answer" is to educate THEM that it is their responsibility to communicate software design/architecture ideas to you.

In a nutshell, software development has three primary layers - back end, middle-tier, and front end. 
Back End
Unless you take major courses and bootcamps, you will not be able to "talk" back-end.  It is filled with issues like unit testing, data distribution, object modeling, and so forth.  This is where the "surgeons" live.  As a "Master Surgeon" myself, I can assure you that the BEST back-end developers have mastered the ability to talk to "civilians" without attempting to sneer (a sign of an immature developer), or act confused (a sign of an incompetent developer), or respond with silence (a sign of a useless developer).

The BEST back-end developers reflect your business requirements back to you, in terms you can understand, and then present their own questions using diagrams and analogies so that YOU can make educated decisions.

Middle Tier
Continuing with my (pretty loose) layer speech - the middle-tier developers are a little more "human" than the back-end developers.  They speak in terms that you can sometimes understand.  Connecting servers together, reaching remote offices, backing up data ... that's not something you have mastered, but you can wrap your head around the broad strokes.  

The thing about middle-tier developers is that they think they are in charge of everything.  Since they work on coupling the complexities of the back-end with the tools of the front-end -- they generally are more demanding and akin to project managers. If you can handle project managers, you can handle middle-tier designers/developers.

When you speak to them - talk to them in terms of business - not tech.  Cost, delivery time, future-proofing ... these are things that matter to you. Design model, framework, API, and test set ... these are things that don't matter to you - as long as the middle-tier people are CLEAR with you on what choices they are making and (with a little google-fu) you confirm that their choices aren't ancient, or rare (people using email to distribute databases = bad, e.g.). Once again - these people should be able to communicate to YOU what is going on, even more so than the back-end people.

Front End
Finally - there's the front-end people.  Sadly, this is where most of the noise you fear originates - because it's easiest to "fake" being good at front-end ... and even worse, it's easier to build a good front-end that does nothing and pass it off as a real application than it is to build a back-end that does nothing and pass it off as anything at all.

There are brilliant front-end designers and developers ... but for every one of those - there are 10 wannabes who started by drawing digital pictures and now believe they are programmers.  They are not. If you can't code on paper with a pen (in theory) then you are not a coder.  Using a "web building" tool is not coding.

I hate to say it, but more often than not, THESE are the incompetents who play emotional games to make you feel stupid, uninformed, or behind the times.  They are doing so because they are hiding their own inadequacies (sometimes even from themselves).

Do I hate front-end developers - absolutely NOT!  The good ones build the critical tools that empower users to interface well with the application.  Nothing kills an app faster than a lousy User Interface (front-end). But I do hate two things: people who pretend they know things they don't, and people who try to make others feel bad for not knowing what they do.  It's hard to fake it in the back-end and middle-tier ... but the front end can be faked ... so, you get my point.

But how you talk to the front-end people is simpler ... because it involves YOUR  normal USER-based sense of things. 

Go to the iPhone app store or Android marketplace and download a 1-star app (no, don't :) ) ... will I need to stand with you for you to understand why it got 1 star?  No.  That's instinctual - you KNOW what makes a good interface because you know how a good interface feels. So when you talk to the front-end people, you can talk about "I don't think that this font color pops out enough" or "I'm lost, where's the button to order the coffee?" (I'm looking at YOU Starbucks :D ).

If the answers are "oh, you're right -- I can see that the font is hard to read, let me check that out" -- you're all set.  If the answer is "no - that's what everyone is doing now, it works" - you don't need ME to tell you that's pointless.

If you want jargon, talk about UX (user experience).  The GOOD front-end designers will be able to tell you what visual standards they are using to make their choices (the cancel button is always next to the submit button because of standard "confirmation controller" design rules, e.g.).

So to conclude this long post:

My advice to you is stop trying to be knowledgable about architecture in order to find the right office space for your needs. Find the architects that translate building code into terms you can understand and appreciate.

When you approach developers, identify the roles and people with whom you are speaking.  Are they back, middle, or front-end people? Ask them - point blank.  If they don't answer, yuck.  If they're confused, fear.  If they sneer - meh.

The farther back they are - the more you can tell them, point-blank "I do not understand what you just told me" and have the right to demand that they explain it again.  The farther forward they are, the more you can talk to them in terms of what YOU understand ("the phone's pop-up keyboard is blocking this icon").

As you talk to developers, realize that it is THEIR responsibility to make things clear to you - if they don't, find another vendor - if you can't - then go back into "human space" and work with them to develop better tools of communication.

Fear of Looking Like a Fool
I am an expert.  Period. Lightning crackles from my fingertips and I save castles from dragons every day.

When I am in a room with a bunch of techs, and someone mentions a tech I don't know - I say "what is that, I don't think I know that term."

Here's a secret.  The man or woman who says "I don't know what that is" in the "tech battle" is the one who is not afraid.  She or he may not know every detail, but you can be sure that person is confident, transparent, and trustworthy.

If it references something obvious - I laugh - in large part because everyone in the room knows I'm the expert.  If it references something I don't know - and it's near something critical to the business (e.g. the difference between "our flarn is going to make the mouse work better" vs "this blarp is connecting to your bank account") -- I make a project point of having that explained to me (or more likely, just say "don't move until I research that" and then go read up on it).

But here's an even bigger secret: when the client says "I don't understand that" - the smartest techs start explaining, because the person who explains to the client gets "the king's ear." 

Conclusion
Be the king or queen. Offer your ear to the best explainer.  You are the power - you don't need to be empowered.

ANY time you find yourself in a room with someone who is playing "black magic" games, it's a measure of their failings, not yours.

You have a right to be an expert in your own field and not feel "stupid" because you don't understand what they are doing.  Tech is 100% artificial - it's "man made" ... that means that there is nothing in it that can't be explained to a human. 

If you (as a human) are confused -- someone with more knowledge than you is failing.  If you like that person, help them and tell them.  If you sense that they aren't trustworthy and/or are hiding their own incompetence -- deal with it like any other vendor/employee/specialist.

The best of the best should be able to translate for you (e.g. "do you want a large multi-core system or a cluster?" becomes "do you think this solution needs a single elephant, or a herd of horses? Let's discuss that with a whiteboard.") ... you are good at what you do, you are intelligent, and you know it better than this developer.  Their job in life is to build a software application that helps you in your field, if they can't explain that - then find someone else. 


David Rowell CEO & Founder at LifeLinker Inc

May 3rd, 2016

I went to follow this thread because I have the exact same aspirations and challenges.  Should I be reassured or dismayed to find that others have the same problem and that there is no easy answer?

Comparing this to wanting to discuss medical issues with a doctor is probably fair, but I think it is easier to understand medicine than programming!

In my case, I studied Info Tech (ie programming) in my undergraduate classes way long ago (anyone need an Algol, Fortran or Cobol programmer?), my MBA double majored in Info Systems (and Marketing), I held a senior marketing job with a computer company, I've done some simple database development, I've specified complex systems, for the last year I've been involved at all levels of getting a new software service up and running.  All of this - and I still don't understand the first thing about coding.  I know enough to know that I don't know enough, and that's about all.

While I rarely give up on challenges or refrain from learning new skills, I have to concede that to become knowledgeable enough to truly understand and participate meaningfully in software evaluation and 'the basics of software development' is impossible, impractical, and also unnecessary and inappropriate.

I have to rely on my technical people to be competent, and confine myself to higher level discussions with them and a focus on the end user experience, trusting in my people that what goes on 'behind the scenes' is indeed being done properly.

That is an uncomfortable situation to be in, but unavoidable.  Today's software is so extraordinarily complex and sophisticated, and there are so many products, services, tools, modules, etc, and different ways of reaching similar end points, that it is not practical for someone who isn't 100% tasked with development type issues to become familiar with such things to the point of being able to meaningfully add value.

Even within the tech/dev field, there are few people who truly are 'good all rounders', even though many claim to be.


Malcolm Mead CEO of ColoCenters, Inc. - Data Center Provider, and The Mead Group, Inc. - Enterprise Solutions Architect

May 3rd, 2016

Thank you, Mr. Lentz, for calling me a tool :)

lol

...but seriously -- I agree with you completely ... it's important that people work towards a better tomorrow; but my point is that there's a META-approach to this that applies.  If they AREN'T helping to translate and communicate and make things easier, then the probability is very high that they generally suck as techs.

There ARE rare exceptions to this (good techs who have social issues, e.g.) - but in those cases, if you try to train them to communicate, they are GRATEFUL and work with you.

There's no way a civilian can read a tech without relying on this communication skill layer.  Trying to become savvy to tech issues is just a process of insanity that will make you tired and frustrated.  

When I go to the hospital to support a family member, and a doctor walks in sneering and throwing jargon -- I explain that I'm expecting clarity.  If he or she continues to sneer - I either escalate to that person's leadership, or I take my family member somewhere else.

Call it "bedside manner" -- techs need to have a "deskside manner" that works well for their clients.  If they don't -- my experience has been that 1 out of 100 is a genius with social issues ... the other 99 are just incompetent jerks who will guide you into a hole.

Brendon Whateley Founder at Kugadi

May 9th, 2016

Peter, I'm a mentor for www.TheFirehoseProject.com and I've had several students go through the program with your exact intent in mind. Having a structured program like that would reduce the nebulous nature of trying to learn the web development skills you want with a more focused set of skills that will definitely help you interact with developers in a meaningful way. In particular, in addition to building several website projects, they also cover various algorithms, source control technology with git/github, cloud hosting and group collaboration. That gives you the basics on a range of modern development technologies.

I'd suggest you take a look at one of the several similar "part time coding bootcamp" programs that would allow you to pursue you business in parallel while picking up some useful skills.

Good luck,
Brendon. 

Eric Lentz Business Improvement Through Software Application Development

May 3rd, 2016

"I am an expert. Period. Lightning crackles from my fingertips and I save castles from dragons every day." You too! :) LOL

You're right though Mr. Mead. It IS the technical person's responsibility. It is also the responsibility of all members of society to keep the laws of the land, be nice to other people, look out for the needs of others and be positive contributors. Let's (readily) agree that some fall short of that. That is, no doubt, where the original post's motivation comes from.

Not all doom and gloom though. Your answer is awesome and correct. Fortunately, more people are doing what they should these days. Maybe it is because there are more people like Mr. Czepiga who don't want to be fooled?

David Ward Founder & CEO, Telegraph Hill Software

May 3rd, 2016

Start here:

http://www.bloomberg.com/company/announcements/bloomberg-businessweek-releases-code-issue-special-multi-platform-package-demystifying-code/

And beware scrum masters with ninjas on their socks...:-)

David

David Ward Founder & CEO, Telegraph Hill Software

May 3rd, 2016

Any business manager will benefit from learning about software, because software and its methods permeate the world as never before.  

But obviously you don't have to become an in-depth expert to manage a technology beyond your training and skills. Think of all the other highly technical and specialized disciplines we have to manage as well as software.  

General management, project and contracting skills didn't become obsolete just because software began eating the world. 

Eric Lentz Business Improvement Through Software Application Development

May 3rd, 2016

Well said Mr. Rowell, inclusive of your last statement; where would one even decide to start? That is usually more driven by a specific project that uses a specific technology because there's too much out there to have knowledge or even a sense of everything. You can test your technical people, as I assume you have learned to, in order to determine if they can be trusted. That's probably a far better skill to have than to learn the trade yourself.