The Real Startup Profile
It’s almost common sense that if you want to be successful in the Software Engineering field you must be able to be constantly learning.
Important is to focus our learning experiences on a broader scope, trying to grasp new concepts or solidify existing ones.
Learning the new flavour of front-end development can be exciting, but maybe learning the core concepts of a programming language or revisiting software design patterns is more beneficial in terms of becoming a better software developer.
Not knowing this, especially when you’re starting out, can be a setback. You’ll spend too much time accommodating knowledge gaps in your technology stack instead of focusing on getting better at programming.
Stacking up framework / tech knowledge is easy when you have a solid base Job offers in the software field usually ask for experience with framework X or programming language Y, but if you have a strong base of programming concepts (such as programming paradigms and data structures) and you trust your ability to learn and accommodate feedback, then getting up to speed on that new framework/language won’t be a hassle.
A candidate that can quickly absorb new concepts and has a strong knowledge base will usually surpass the one which only has pre-existing knowledge (on the tech or programming language). Job offers will also enumerate qualities that a candidate should have. These qualities differ from company to company but they usually float around the typical “Be a team player”, “Should have a commitment to quality software”, “Be ready to integrate a team in a dynamic environment”. This is true not only for big companies but also startups, which brings me to my next topic.
The professional world as seen from college
When I got into professional software development, all I could think about was why didn’t I start sooner. Although I got a part-time gig in my last year of college, colleagues of mine who started one or two years sooner were light years ahead of me in terms of general software engineering knowledge and good practices.
This made me more eager to learn, although some things about the professional practice were not as I was expecting.
In college, you learn about the typical software development methodologies and design processes. Normally companies use a rigid development method (waterfall or something similar) or some kind of agile methodology, those normally being variants of Scrum and Kanban.
I used to think that, for it to be taught in college, all companies have standard development methods which are documented and put in practice at all times. This was even more engraved in my head as I started getting into project management.
Management is not always done properly - https://xkcd.com/874/
Project management, as taught by the PMP, heavily focuses on standard practices and methods which must be applied to properly manage projects.
Then I got out in the real world and found out how it really is.
The startup profile
There are many characteristics a software developer should have but when we’re talking about startups one may need to branch out of just software development.
If your startup is still working on an MVP, you, as a software developer, will probably get your feet wet in design. Probably also in marketing or sales or even social media management. It feels like people are all over the place, somehow like in college, but this time, they’re trying to make money.
The software developer profile on startup job offers is general enough for people to apply but the real profile is different, and it is not for everyone. You may need to perform functions outside your scope of work and adapt to incomplete processes and lack of structure.
For some people, this is not acceptable, as they prefer the stability of a big and stable company and only doing their thing from 9 to 5.
So here are the characteristics I think should be placed on a typical startup job offer:
Be hungry for learning
This is true for most software developing jobs, corporate wise or startup wise. However, in a startup, the learning scope is broader.
Your developer skills should always be your priority. Start by dominating the programming language your dwelling into and get up to speed on the company’s existing development practices. If you’re not familiar with them get some extra time in. Keep in mind that these skills will most likely carry over to future jobs, so the extra time will usually be worth it.
People expect you not to be familiar with the stack the company uses, they do, however, expect you to know core programming concepts and functionalities which adapt to the current programming language.
On another side, you should not be frustrated by having new experiences other than coding or developing software. Interacting with customers, giving feedback on design (or even experimenting with it), social media management, working on marketing, hell, even make coffee for everyone can be a learning experience.
You learn how to be a team player.
You learn how to be a better spokesman.
You learn how to better approach people and entice them about your product.
You learn where your soft skills are lacking.
You learn that social media management can be as stressing as finding that annoying bug which has been sitting there for weeks.
You learn that the smell of fresh coffee is addicting.
And this can be made alongside your goal of being a better programmer. Jumping into practices like code review can really kick start your developer performance with the added bonus of having a Swiss army knife startup skill set.
In a startup, you’re expected to be dynamic if you’re to indulge in a series of different activities.
It’s common sense that tasks should be made one at a time and that multitasking, especially when developing code, can be a performance killer. It’s really hard to refocus on something that you’ve doing all morning only to be interrupted by a colleague in dire need of some help.
Never interrupt a programmer — http://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer/ Sometimes this is unavoidable, so you need to find tricks or techniques for when you need to refocus or go back to a task that has been previously started.
Things that usually help me involve setting up a reminder, writing what I was doing on a post-it, keeping important browser tabs separated or having a to-do list with a task breakdown. It’s important you take note on what point of the task you left off so that you can ease back into it with no effort.
Another thing which helps me is grabbing some water or coffee before switching tasks. The act of getting up and sitting back down decouples me from the previous task and can facilitate the process of getting into another one if need be.
Take initiative and look for feedback
Honest talk. Most startups are normally lacking in one thing, organization.
This applies to technical stuff such as not having a clearly defined git flow, or having to manually deploy everything to staging/production, as well as to organizational behaviors such as how the customer feedback enters the development/product cycle.
If you’re a team player, you’ll look for things which should be changed or at least should receive some feedback. So if your Marketing team is actively asking for those SEO improvements take the initiative and ask how you can help, if possible. This may look obvious or cliché but it gently reminds people that you’re a team player and that you’re not just there to “do your job”.
Lastly, look for ways to improve or create feedback loops. I feel that honest feedback is the fuel of lasting learning experiences (in project management, the term is coined as lessons learned). Either it being on the closing of the development cycle or on a spontaneous occasion, if people are honest then the feedback will always be relevant.
In Summary, being an active member of a startup usually requires more than what’s written on your job description. Although it can sometimes present a challenge, one should embrace the fact that new learning experiences can present a palpable progress in the career of a software developer, even if they’re outside the scope of his main skills.